Shopify vs Amazon: The 40% Take-Rate Nobody Calculates (and the Halo You're Missing)

Nine times out of ten, when a founder tells me Amazon is their most profitable channel, they've never actually done the maths. They've felt it. The Amazon dashboard looks clean, the TACOS number is gorgeous, and the Shopify side looks like it's working twice as hard for half the reward.
So they shift attention to Amazon. They scale it. And six months later they're confused about why the whole machine is slowing down.
Here's the thing. The comparison they're running isn't wrong because Amazon is bad. It's wrong because they're comparing two numbers that were never measuring the same thing. Let me tear it down properly.
The headline comparison everyone starts with
On the surface, Shopify looks like the cheaper place to sell, and it's not close.
Shopify takes ~2.5% to process the payment, plus your monthly plan. That's basically it. Amazon takes a referral fee of around 15% before you've done anything else. On take rate alone, Shopify wins by a mile.
So far so simple. But that 2.5% number is doing a lot of quiet lying, because it only covers the transaction. It does not cover the bit that actually costs you money: getting someone to the website in the first place.
On Shopify, demand is your problem. You generate it, almost always through Meta. And Meta doesn't charge you on results, it charges you on impressions. So the real cost of a Shopify sale isn't 2.5%. It's 2.5% plus whatever you paid to manufacture the demand that led to it.
The all-in numbers, layer by layer
Let me stack it up the way I'd stack it for a client, because the headline take rate is only the first layer.
Shopify, all in. Say you're a homewares brand at a ~$70 AOV. Payment processing is ~2.5%. Then you've got your Meta spend to drive the traffic. If you're acquiring at a 2.0 blended ROAS on the demand-generation side, that's effectively 50% of revenue going to ads to make the sale happen. Add the 2.5%, add your own fulfilment and pick-pack, and the platform-plus-demand cost is comfortably north of 50% before product cost.
Amazon, all in. Now the 15% referral fee. Then FBA fulfilment, which on a smaller, heavier homewares unit can run another 15-20%. Then Amazon advertising, because organic placement alone won't carry a competitive category, and that's another chunk on top. Stack the referral fee, fulfilment and ad spend and you're very often past 40% of revenue going to Amazon in one form or another. On some categories it's closer to 45%.
So the honest version isn't "2.5% versus 15%". It's "low-50s percent versus low-40s percent", once you actually load demand generation onto the Shopify side and load fulfilment and ads onto the Amazon side.
That's a much closer race than the dashboards suggest. And it would still be a fair fight, except for one thing that quietly rigs the whole comparison.
The spillover trap (this is the part nobody calculates)
Here's where it gets interesting, and where most of those "Amazon is my best channel" founders have it backwards.
When you run a big Meta-funded launch, you are creating demand, not just capturing it. You put the product in front of someone on Instagram. They don't buy on the spot. They sit with it. And when they finally decide to buy, a good chunk of them don't go back to your ad. They open the Amazon app, because that's where their card details already live and Prime gets it to them tomorrow.
So the sale happens on Amazon. But the demand that caused it was paid for on Meta, driving to your website.
Now look at what that does to the two dashboards.
Your Amazon report shows a sale with almost no attributed ad cost against it. The TACOS looks heroic. Fulfilment was only ~15%. It looks wildly profitable. Meanwhile your Meta report shows spend that "didn't convert", because the conversion leaked over to Amazon where Meta can't see it. So your Shopify ROAS looks worse than it is, and your Amazon margin looks better than it is.
I watched this play out in the thinking of a founder I spoke to last year. Brand doing solid volume, running a heavy influencer-and-Meta push to launch a new line, all of it pointed at the website. Within a fortnight Amazon sales on that same line jumped. He looked at it and went, "Amazon's carrying this launch, look at the TACOS." It wasn't. Meta was carrying the launch. Amazon was just where the demand got satiated and the credit got booked.
This is the trap. The channel that captures the sale gets the credit. The channel that created the demand gets blamed for "inefficient" spend. And if you make budget decisions off those two dashboards in isolation, you'll defund the exact engine that's feeding your supposedly profitable channel.
Why the trap gets worse the bigger you get
It compounds, too. As your distribution broadens, your demand capture broadens with it.
When you were website-only, every sale your Meta ads created landed in one place, so the measurement was honest by accident. The moment you list the same products on Amazon, the demand splits. Add retail later and it splits again. Some of the views your ads generated end up converting somewhere your pixel will never follow.
So the bigger and more omni-channel you get, the more your website ROAS understates the truth, and the more tempting it becomes to pull back the spend that's actually holding the whole thing up. That's how you get a brand quietly starving the channel that drives everything, while congratulating itself on Amazon's margins.
The distribution broadened. The measurement didn't. That gap is where the bad decisions live.
How to actually attribute the halo
Right, so what do you do about it. You can't un-list from Amazon, and you wouldn't want to. The fix isn't structural, it's measurement.
Stop measuring Meta against Shopify alone. This is the core error. Your Meta spend is driving demand across every place a customer can buy, so it has to be measured against revenue across every place a customer can buy. The denominator on Shopify, the numerator on Amazon. If your ad dollars and your Amazon revenue live on two separate P&Ls that never talk to each other, you've built a measurement system that's guaranteed to mislead you.
Look at a blended number, not a platform number. The honest question isn't "what's my Shopify ROAS" or "what's my Amazon TACOS". It's total revenue across both, against total spend. When you start running a launch, watch your Amazon line move at the same time as your Meta spend and read them together. The lift you see on Amazon during a Meta push is the halo, and it belongs in the same equation.
Prove the halo with a holdout if you can. If you want to go a level deeper, you run a geographic holdout. Hold your Meta spend back in one region for a couple of weeks and watch what happens to Amazon sales in that region versus the rest. The drop is the part of your Amazon revenue that Meta was quietly creating. It's a few weeks of discipline to set up, but it turns the halo from a hunch into a number you can actually allocate budget against.
Decide budget on the blended read, not the dashboard that flatters you. Once you can see Meta's true contribution across both channels, the "Amazon is my best channel" illusion usually collapses, and the spend decisions get a lot less scary. You stop defunding your demand engine to protect a margin number that was borrowing that demand the whole time.
So which one actually wins
Here's my honest take, and it's not the tidy answer.
On pure all-in economics, a well-run Shopify-plus-Meta setup still tends to edge it for a brand that owns its demand, mostly because you keep the customer relationship, the email and SMS, and the second and third purchase. Amazon rents you the transaction and keeps the customer. That matters enormously over a year.
But that's not really the decision. The decision is to stop treating them as two scoreboards and start treating them as one system. Amazon isn't your most profitable channel and your website isn't your least. They're two ends of the same demand you're paying Meta to create. The brand that sees that clearly spends with confidence. The brand that doesn't slowly starves itself while staring at a TACOS number it never earned.
If you've never actually pulled your Meta spend, your Shopify revenue and your Amazon revenue into one view, that's the exercise I'd run before your next budget call. It's the single fastest way to stop arguing about which channel "deserves" the credit.
This is exactly the kind of blended read we build for the brands we work with, because almost nobody has it set up properly and it changes the spending conversation completely. But you don't need us to start. Open both dashboards, line them up against the same spend for your last launch, and just look at whether the Amazon line moved when the Meta line did.
When did your Amazon sales last jump, and what was your Meta spend doing in the two weeks before it?
.webp)





