A grinder buyer needs beans and filters. A bag buyer needs more coffee, not another grinder. Split equipment vs consumable first, then match brew method. Here is the table and the five test checkouts before you go live.
Run two campaigns. If they bought a machine or grinder, offer beans, filters, descaler or a mug — never a second grinder. If they bought beans or tea only, offer a sampler, a larger bag, or filters — never hardware. Match brew method (espresso vs filter vs pods vs tea). Subscribe-and-save is a future order; one-click is this shipment.
Coffee and tea shops mash two businesses into one Shopify store: tools and groceries.
A $189 grinder order and a $16 bag of beans are not “both coffee.” One person is setting up a counter. The other is restocking a cupboard that already has a grinder in it. If you use one post-purchase rule for both, you will offer a second grinder to the first person and an espresso machine to the second. Both feel insulting. Neither converts.
This article is for Shopify coffee, tea, and brew-gear brands. The pairing logic is a fork: equipment funnel vs consumable funnel. That is not the skincare “next step” logic and not the electronics “exact SKU case” logic. It is “what job were they doing when they paid?”
Tag every SKU type:equipment or type:consumable (and brew method). If the cart has equipment, hide all other equipment in the one-click slot. If the cart is only consumable, hide grinders and machines. Mixed carts (machine + beans already) skip hardware entirely and offer filters or descaler only.
A roaster sold a popular entry burr grinder. The upsell app was set to “highest margin accessory.” The highest margin accessory was… the same grinder in a different color.
People who had just bought a grinder were asked to buy a grinder. Take rate was a rounding error. One review said the brand was greedy. The beans they should have offered sat two clicks away on the collection page.
They split the rules. Grinder → 250 g house espresso or filter roast (based on a brew:espresso / brew:filter tag on the grinder), plus papers if the SKU was a pour-over kit. Bean bags → a 100 g sampler of a second origin, or 1 kg of the same SKU. Grinders disappeared from funnel B. Complaints about “they tried to sell me another machine” stopped because that offer stopped existing.
Inside each funnel, match how they brew. Capsules are not beans. Espresso-fine grind is a mess in a pour-over. Tea bags are not a gaiwan.
Most coffee drinkers buy coffee again and again. That does not mean they want two grinders. It means funnel B (replenish) is the long-term business. Funnel A exists to start that replenish loop with the right first bag.
| They paid for | Offer | Do not offer |
|---|---|---|
| Grinder or espresso machine | First beans matching brew method, descaler, mug | A second grinder or a second machine |
| Kettle + dripper kit | Filters in that size + filter-roast 250 g | Espresso-ground bags, pod sleeves |
| Pod machine | A sleeve of pods for that system | Whole-bean kilo, a burr grinder |
| 250 g beans, one origin | 100 g sampler of a second origin, or 1 kg of the same | Any grinder, any machine |
| Tea sachets, one style | A second tin in the same family, or an infuser if loose leaf | A random coffee bag “because caffeine” |
| Machine + beans already in cart | Filters, descaler, extra mug | More hardware |
| Already a coffee subscription | Thank-you: mug, extra filters, loyalty | Relying on Shopify’s one-click page |
One-click adds to this shipment. Subscribe-every-four-weeks is a future order — reorder offers. Mechanics: one-click after checkout.
Personalize with type + brew method, not with a related-products app that thinks a grinder “goes with” a grinder. Personalize the upsell. Confirmation blocks: thank you page upsells and customize the thank you page.
Funnel A has extras that never belong on a beans-only cart.
Descaler and cleaning tabs go after a machine, a kettle with a heating element, or an espresso boiler. They do not go after a 250 g bag. A restocking customer already descales on their own calendar — or they do not, and a random bottle still feels like hardware they did not ask for.
The first bag should match the machine’s job, not your bestseller roast. A light Nordic-style filter roast after a consumer super-automatic set to default espresso will taste thin and sour to that buyer. They will blame the machine or you. If the grinder is tagged brew:espresso, the first bag is an espresso roast (or a blend you already sell for that machine). Save the $22 named origin for funnel B, when they chose it on purpose.
Water filters follow the same split: pitcher or tank filter after a machine that names a tank. Not after tea sachets.
type:equipment / type:consumable. brew:espresso / filter / pod / tea.
Campaign A fires only if cart contains equipment. Campaign B fires only if cart is consumable-only. Never one campaign for the whole catalog.
The offer catalog for a grinder buyer is beans, papers, descaler, mug. Period.
The extra should cost less than the bag they bought, or be a larger size of that bag at a clear unit-price win.
Grinder only. Machine + beans. Beans only. Pod machine. Tea tin. If any show a second grinder, you do not launch.
Before you tune the pairing, know the platform limits. These come from Shopify’s own post-purchase docs, and most guides skip them.
The subscription rule is the one that bites coffee stores. If the paid order already contains a subscribe-and-save bag, the one-click page does not appear at all. Your “add a sampler” offer to subscribers has to live on the thank-you page or in the first shipment email, not here.
The flip side: a one-time bag buyer can see a one-click offer for more bags in this shipment, but you cannot turn that paid bag into a subscription from the post-purchase page. Treat one-click as “more coffee in this box” and the thank-you page as “coffee next month.” Frame the add-on as tasting, not spending: “Try the Ethiopia next to your Colombia” beats “add another bag.”
Full disclosure: this is our app. We built it so you are not stacking four tools for the same job. Oxify runs one-click post-purchase offers, thank-you-page blocks, a cart drawer, free gifts, BOGO and volume discounts in one place, on Checkout Extensibility.
36 reviews is a small sample — read them on the listing. App details checked on the Shopify App Store, 22 August 2026. Comparing options? See our ranking of post-purchase upsell apps.
No. A grinder buyer already owns (or just bought) hardware. They need beans, filters, or descaler — not a second grinder. A beans buyer is restocking a cupboard. They need another origin, a bigger bag, filters, or a subscribe date — not an espresso machine. Split the funnel on product type before you pick a SKU.
Offer the first consumables that make the machine useful this week: a bag of beans that matches the brew method, paper filters or a water filter, descaler, a mug, or a sampler. Do not offer another grinder, a second machine, or capsules if they bought a whole-bean setup.
Offer a second origin as a small bag, a larger size of the same SKU, filters that match their brew method if you know it, or subscribe-and-save for when this bag empties. Do not offer a grinder they may already own. A mug is fine as a cheap extra; a $300 kettle is not.
Most households have one burr grinder. A one-click add of a second unit looks like the store did not look at the cart. It also fails the price test — hardware often costs more than the order. Save grinders for people who bought beans and have no grinder tagged on the customer record, and even then the cart or a later email is safer than this slot.
Tag brew method on both machines and beans: espresso, filter, immersion, pods. After a pour-over kettle or V60, offer filter-roast whole bean or paper filters — not espresso-fine ground bags. After a pod machine, offer pods, not a 250 g whole-bean bag unless they also bought a grinder.
Adding more bags to this shipment is a one-click post-purchase job. Asking them to ship every 4 weeks is a future order. Put that on the thank you page, order status, or an email timed to depletion. Shopify skips the one-click page entirely when the order contains a subscription, so the subscription pitch has to live somewhere else.
Only if the cart is mixed or the customer is tagged as both. A single-origin coffee buyer did not ask for chamomile. A tea tin can follow a kettle if the kettle is brew-method agnostic and you have no coffee signal. When unsure, stay inside the paid category.
No. Post-purchase upsell apps from the Shopify App Store work on every plan, Basic included. Only custom-coded post-purchase extensions and in-checkout blocks are limited to Shopify Plus. You choose one post-purchase app under Settings → Checkout → Post-purchase page.
Shopify caps it at three accepted offers per checkout. In practice one well-matched offer does most of the work. Remember that Apple Pay, Google Pay, installment plans, gift cards, cash on delivery, and subscription orders skip the page entirely.
Tag equipment vs consumable. Build two campaigns. Run five test orders. If a grinder appears after a grinder, you are not done.