You don’t have three products in each row…you have 12 products in a single wrapping row.
The issue is that because BS3 uses floats if the items aren’t all the same height you can get this stagger stepping since item 2 is taller than item 3 etc.
I’d suggest breaking the 1 row with 12 items into 4 rows of 3 each (oh, and you should be using a .container
wrapping div as well) or updating to something that makes the items the same height like BS4 which uses flexbox.
https://codepen.io/Paulie-D/pen/oyWzVa