← All writing

I Built a 3-Level Post-Purchase Funnel on Shopify. Here's What Happened to AOV.

  • aov
  • post-purchase
  • checkout extensibility

Everyone’s obsessed with getting more customers. At some point you have to ask what you’re doing with the customers you already have.

That question led to building a post-purchase extension for a Shopify store running post-purchase funnels across multiple brands. The results changed how I think about AOV.

Why post-purchase, not a regular upsell

A normal pre-checkout upsell is risky. You’re interrupting someone who hasn’t paid yet, and one wrong move loses the whole order.

Post-purchase is a different moment entirely. Payment is done, the order is confirmed, and the customer is in a genuinely good headspace: they just bought something they wanted. That’s the highest-trust, lowest-friction moment in the entire relationship, and most stores let it pass in silence.

How the funnel works

Shopify supports three post-purchase levels natively. Used with accept and decline branching, those three levels cover almost every buyer intent that matters.

ORDER CONFIRMED

  └─▶ L1 — Related product
        ├── Accept → L2 Higher offer
        │     ├── Accept → L3 Add-on
        │     └── Decline → L3 Lower price

        └── Decline → L2 Lower price
              ├── Accept → L3 Add-on
              └── Decline → L3 Product swap

A “no” is never treated as the end of the conversation. It’s a signal about price or fit, and the funnel responds to it. If someone declines the first offer, the next one isn’t a repeat, it’s the same product at a lower price or a swap to something more likely to land. A no at the original price usually means “not at this price,” not “I’m done spending.”

Three levels sounds like a small canvas. But when every accept and every decline branches into a distinct next offer, it covers a lot of ground. Shopify’s limit here isn’t really a constraint, it’s a forcing function that makes you think harder about each step instead of throwing more offers at the wall.

What it does to AOV, and everything downstream

When AOV goes up, your cost to acquire a customer doesn’t change, but that customer is now worth more. Ad spend that felt too expensive starts making sense, ROAS improves, and you can outbid competitors on the channels that matter and still be profitable.

The margins on post-purchase add-ons are usually strong, too, because you’re shipping in the same box with no extra fulfillment cost. That incremental revenue drops cleaner to the bottom line than almost anything else in the funnel.

AOV is the metric that quietly fixes a lot of other metrics. That’s the part most people miss when they’re chasing acquisition instead.

What actually worked

A few things held up consistently across implementations:

  • The Level 1 offer has to make sense with what was just bought. If it feels random, it breaks trust immediately and the customer ignores everything after it.
  • The lower-price variant on decline was one of the best converters. People who said no to the original price often said yes to the same product slightly cheaper. Simple, but it works.
  • Speed matters more here than almost anywhere else on the site. The customer just finished checkout and is expecting a confirmation page. Any lag feels wrong, and you lose the moment.
  • Keep the offer simple. One product, one decision. Not a wall of choices right after someone just made one.

If you run a Shopify store and you’re not using post-purchase offers, you’re giving up revenue on every order that goes out. The customer is already there, already happy. The only thing left to do is ask.