Attach Rate: Measure It, Then Raise It
Accessory attach rate for Shopify stores: compute it from your order export, pick the pairs to watch, and four ways to raise it without discounting.
Attach rate is the share of orders that include a main product and also include a specific add-on. It is the cleanest number for an accessory offer, because it asks one question: when someone buys the thing, how often do they also buy the thing that goes with it? This page defines it, shows how to compute it from a Shopify order export with a spreadsheet, says which pairs deserve your attention first, and gives four ways to raise it that do not start with a discount. It cites no outside attach-rate benchmark, because the rate depends on the pair, and a number from another store's pair tells you little about yours. Every figure in the worked examples is invented for arithmetic.
Attach rate, defined
Attach rate = orders that contain the anchor and the add-on ÷ orders that contain the anchor.
The anchor is the product the shopper came for, such as a coffee grinder, a phone case or a camera. The add-on is the item that goes with it: a brush, a screen protector, a strap. Two details keep the number honest.
- Count orders, not units. An order with three of the add-on still attaches once. If you want the units view, call it attach quantity and keep it separate.
- Pairs are directional. The attach rate of strap to camera is not the attach rate of camera to strap. The denominator is always the anchor.
Upsell Pricing: How Much Discount Is Enough derives the attach-rate lift a discounted add-on needs to break even. This page is about the method for measuring the rate in the first place, and the levers that are not discounts, so it does not repeat that formula.
Computing it from an order export
Shopify's Help Center explains how to export orders as a CSV file from the Orders page. Two things on that page matter for this calculation. It says orders with multiple line items display their additional line items on separate lines, so the file has roughly one row per line item, not per order. It also lists the columns you need: Name, the order number shown in your admin, Lineitem name, Lineitem quantity, Lineitem price and Lineitem SKU. And it says larger exports, and exports by date, are emailed to you, so choose the dates, then wait for the file.
Here is the method, step by step.
- Export orders for a 90-day window, or the nearest span that gives you a few hundred orders with the anchor. More orders means a steadier rate.
- Keep four columns: Name, Lineitem SKU, Lineitem quantity, Lineitem price. Delete the rest.
- Fill the order number down. Shopify leaves many fields blank on the extra line-item rows, so copy the Name into every row of the same order. (Check this against your own file before you trust it.)
- Remove lines that are not purchases of the add-on. A free gift line has a price of zero. If your add-on is ever given away, filter out rows with a Lineitem price of 0, or you will count gifts as attach.
- Count the denominator: the number of distinct order numbers that have a row with the anchor SKU.
- Count the numerator: the number of distinct order numbers that have a row with the anchor SKU and a row with the add-on SKU.
- Divide.
In a spreadsheet, a helper column marks each row "anchor" or "add-on" from its SKU, and a pivot of order number by that column shows which orders have both. Cancelled and fully refunded orders should leave the sample, and so should test orders. If a customer returns the add-on, decide whether you count it: the cleanest rule is to keep it, and track returns separately, since a high rate of returned add-ons is a different problem.
A small example with invented data: in 90 days, 400 orders contain the camera, and 36 of them also contain the strap. The attach rate is 36 ÷ 400 = 9 percent.
Which pairs to measure first
You cannot manage every pair, and you do not need to. Rank candidate pairs by how much one point of attach rate is worth. That is the number of anchor orders, divided by 100, times the margin on one add-on.
For the camera and strap: 400 anchor orders in 90 days, so one point is 4 orders. If the strap sells for 14 dollars with a 60 percent margin, one point is 4 × 8.40 = 33.60 dollars of margin over 90 days. Compare it with a pair where the anchor sells 1,200 times and the add-on makes 3 dollars of margin: one point is 12 × 3 = 36 dollars. The two pairs are worth about the same to move, even though one has three times the traffic.
Pairs worth measuring first share three traits:
- High anchor volume, because a denominator in the hundreds makes the rate stable.
- A low add-on price relative to the anchor. A shopper who has just decided to spend 200 dollars will often add a 15 dollar item. They will less often add a 150 dollar one.
- A real functional link. The add-on makes the anchor work better or last longer, as with the case for the phone.
Four ways to raise it without a discount
1. Placement. Where the add-on appears decides whether the shopper sees it while the choice is still open. Frequently Bought Together on Shopify covers product page and cart placement. A good first test is moving the add-on from a generic recommendation row to the spot next to the buy button.
2. Bundling. Sell the pair as one listing, with the add-on included at a bundle price. The attach rate of the pair becomes the share of anchor orders that choose the bundle. That changes your measurement, so decide up front whether bundle orders count in the numerator. They should, if the add-on is in the order.
3. A small discount on the add-on. This is a lever, but it is the last one to try, because it costs margin on every attached order, including the shoppers who would have attached without it. Upsell Pricing: How Much Discount Is Enough gives the break-even attach rate for any discount you choose.
4. A gift threshold that the add-on helps the shopper reach. If your free gift or free shipping threshold sits a little above the anchor's price, the add-on can be what takes the cart over it. Free Gift Threshold: Pick a Spend Level shows how to place the line from your order export. The add-on gets chosen because the shopper wants the gift, not because of a markdown.
Measuring a change
When you change something, you need to know whether the rate moved or the numbers just wobbled. Use matched weeks, as How to Measure Whether a Promotion Worked explains: same weekdays, same season, no other promotion in either window.
Then check the size of the move against the noise. A rough rule for a rate p over n orders is that its standard error is the square root of p × (1 − p) ÷ n. For a 9 percent rate over 200 anchor orders, that is the square root of 0.09 × 0.91 ÷ 200, about 2 points. Twice that, about 4 points, is the band inside which a change could be chance. A rise from 9 to 12 percent on 200 orders is 6 more attached orders in 200, and it is not enough to call. On 800 orders, the same 3-point move is more convincing, because the band shrinks to about 2 points.
So run the test long enough to collect a few hundred anchor orders on each side, and record the denominator next to every rate. If traffic is too thin to get there, treat the result as a direction, not a finding. AOV vs Profit per Order: What to Track is the next check: an attach rate that rises while profit per order falls means the lever cost more than it earned. And Average Order Value: Formula and 12 Levers places attach rate among the other ways to lift the basket.
Building frequently bought together
Start from the Frequently bought together template in Freebies Engine by Log Studio Lab, described in the catalog as "Suggest matching products on the product page." Pick the pair from your ranked list, run it for a set number of weeks, and compare the attach rate with the matched weeks before it. Plan requirements are on the pricing page.
Keep a one-line log for each pair: the anchor, the add-on, the denominator, the numerator, the dates and the lever. After three tests you will know which levers work for your catalog, and that is worth more than any benchmark.
Sources
- Shopify Help Center: Exporting orders (accessed October 10, 2026)