For buy one, get one free across a collection, where the cheaper of two items is free, use OneCode: Stackable Discounts. You add a 100% Product Discount on the collection with a Quantity Limit of 1 and Cheapest items first, plus the condition Group Quantity at least 2. A customer who buys two pairs of socks at $12 and $15 gets the $12 pair free and pays $15 for the other. A customer who buys one pair pays full price. The customer adds both items to the cart, and OneCode makes one of them free.

Shopify’s own Buy X Get Y discount only discounts the item the customer gets, so free shipping or money off the rest of the cart has to be a separate discount. OneCode puts the BOGO, free shipping, and any other discount on the same code.

SOCKSBOGO at checkout: Everyday socks free instead of $12, Wool socks $15, shipping $6, total $21

Which tool for which BOGO

The BOGO you meanWhat to use
The cheaper item free when they buy 2 from a collectionOneCode, set up as above. BOGO with one code
Buy 2, get 1 freeOneCode, with Group Quantity at least 3. With three items in the cart, the cheapest is free
Buy one, get one 50% offOneCode, with 50% instead of 100%
The more expensive item freeOneCode, with Apply discount to set to Most expensive items first
A gift the customer adds, plus free shipping, over $100OneCode. The gift’s price counts toward the cart subtotal, so set the gift’s threshold to $100 plus the gift’s price. Free gift with purchase
BOGO plus 10% off everything else, on one codeOneCode, with a second Product Discount of 10% on All Products

When the BOGO and the 10% are on the same code, each item gets whichever product discount saves the most. The free item stays free and the other items get 10% off. If the customer adds a second unit of the free item on the same line, that unit pays full price rather than 10% off.

The quantity limit is per order, and it doesn’t repeat for every pair. With a limit of 1, a customer who buys four items still gets one free, not two.

You can run any of these as a code or as an automatic discount.

The OneCode editor with the code SOCKSBOGO: a 100% Product Discount on the Socks collection, Quantity Limit 1, Cheapest items first, and a Group Quantity condition of at least 2

OneCode costs $9.90 USD every 30 days after a 7-day free trial, billed by Shopify. You can install it from the Shopify App Store.