Ecommerce PPC is pay-per-click advertising bought specifically to sell products online — a bid for placement on Google Shopping, Meta’s Facebook and Instagram feeds, or Amazon’s sponsored listings, priced per click rather than per impression or a flat placement fee. The mechanics are the same auction system that runs PPC for any advertiser; what makes the ecommerce version different is that every click has a traceable cost against a specific order, which means the campaign’s real unit of success isn’t click-through rate or even a platform-reported return on ad spend — it’s whether the resulting customer acquisition cost leaves any margin once the order actually ships.
What Does Ecommerce PPC Actually Change for a $3M–$30M Shopify Operator?
For a $3M–$30M Shopify operator, ecommerce PPC changes what the acquisition question actually is: not how much traffic a campaign drove, but whether the customer acquisition cost (CAC) it produced fits inside the contribution margin of the order that CAC bought. Contribution margin is an order’s price minus its variable costs — cost of goods sold, payment processing and the pick, pack and shipping cost tied to that specific order — before any fixed cost or profit comes out. A campaign’s platform-reported return on ad spend (ROAS) says nothing about this number, because ROAS compares spend to revenue rather than spend to margin, and a discounted or bundled order can carry a strong ROAS while producing almost no contribution margin at all.
The following is an illustrative worked example, not a published benchmark — recompute it against your own catalogue rather than borrowing these figures.
| Line item | Illustrative amount |
|---|---|
| Average order value | $65.00 |
| Less: cost of goods sold (35% of AOV) | −$22.75 |
| Less: payment processing (2.9% + $0.30) | −$2.19 |
| Less: pick, pack and shipping subsidy | −$6.00 |
| = Contribution margin per order | $34.06 |
At a contribution margin of $34.06 per order, the maximum sustainable CAC across every paid channel is whatever share of that figure the operator is willing to spend on acquisition before fixed costs and profit come out — reinvesting half of contribution margin sets a ceiling near $17.03 per order; holding back more for fixed costs and profit sets it lower. A platform’s own reported cost-per-acquisition should be checked against this ceiling directly, not against a target ROAS, because ROAS and the margin ceiling can point in opposite directions on the same order.
The actual contribution-margin figure for a specific SKU mix is — metric to confirm. No ad platform publishes it, and no ad platform could: Google, Meta and Amazon have no access to a store’s cost of goods, payment processing rate or fulfilment cost, so no platform-reported efficiency metric can ever substitute for building it from Shopify’s own order and cost data.
The contribution-margin ceiling is a blended number — one CAC figure measured against one margin figure — and blended CAC hides the fact that the next dollar of spend on any single channel rarely costs the same as the last one. Marginal CAC is the cost of the next conversion a channel would produce if spend increased, and it rises as a campaign saturates its highest-intent audience and starts bidding for a colder one; a channel with an excellent blended CAC today can still be a poor place to add the next $1,000 if its marginal CAC has already climbed past the ceiling while the blended figure has not caught up yet. A single acquisition-cost ceiling is therefore not, on its own, a budget-allocation method — it says what to stop at, not where to put the next dollar. Answering where to put the next dollar means comparing marginal CAC across Google Shopping, Meta and Amazon directly, using an incrementality test rather than each channel’s own reported efficiency number.
How Does iOS 14 and Consent Mode Break Ecommerce PPC Measurement Accuracy?
iOS 14 and Google’s Consent Mode both break ecommerce PPC measurement accuracy the same way: each removes some of the direct, device-level signal a platform used to observe a conversion, and the platform fills the resulting gap with a modelled estimate instead of reporting fewer conversions outright.
Apple’s App Tracking Transparency, introduced with iOS 14.5 in April 2021, requires an opt-in prompt before an app can access the device identifier used for cross-app ad tracking (Apple’s own developer documentation). Most users decline it, so Meta’s pixel and app-based tracking lose the device-level signal they used to attribute a purchase to a specific ad, campaign and click. Meta’s response was to shift toward aggregated and modelled attribution and to push advertisers onto server-side reporting through the Conversions API, which sends order data directly from Shopify instead of relying on a browser or device signal.
Google’s Consent Mode causes the same kind of measurement gap as Apple’s App Tracking Transparency, for a different reason: since March 2024, Google has required advertisers serving personalised ads to visitors in the UK and EEA to signal each visitor’s cookie-consent status through Consent Mode before Google’s own tags may set advertising or analytics cookies (Google Ads Help, About Consent Mode). Where a visitor declines, Google Ads and Google Analytics do not simply drop that visitor’s data — they model an estimated conversion for it, based on the pattern of visitors who did consent elsewhere on the same account.
Combining a directly observed conversion with a modelled one is the actual accuracy problem for ecommerce PPC measurement — not that conversions go unreported, but that the two get counted as one number with no visible line between them on the standard reporting view. Two platforms reporting attributed conversions for the same order routinely sum to more than one order, because each platform’s model can independently claim credit for a sale the other platform also observed or modelled.
How large the modelled share is for a specific account is — metric to confirm. Neither Meta’s Ads Manager nor Google Ads discloses, per account, what proportion of reported conversions came from a directly observed pixel or Conversions API event versus a statistical model. The way to see it directly is inside each platform’s own attribution settings, which expose modelled-versus-observed volume account by account, set against Shopify’s own order count for the same window — the gap between the sum of platform-reported conversions and the actual order count is the measure, and it moves with EU/UK traffic share, device mix and how complete the store’s own Conversions API and Enhanced Conversions setup already is.
Shopify’s native analytics has no field that shows the gap between platform-reported conversions and the store’s actual order count either — its own order and sales-channel reports show what actually happened in checkout, not what any ad platform attributed to itself, so reconciling the two is manual work rather than a report either system produces on its own. GA4 sits in between: it is closer to an independent read than either ad platform’s own dashboard, because it is not the party being asked to take credit for the conversion, but its own data-driven attribution model is still a model, not a direct observation, once a visitor has declined consent. Building Google’s server-side Enhanced Conversions and Meta’s Conversions API properly — passing hashed customer data and order value straight from Shopify’s checkout rather than relying on a client-side pixel — narrows the gap but does not close it, because a visitor who declines consent removes the legal basis for using their data in either path, not just the technical one.
How Should a $3M–$30M Shopify Brand Allocate Ecommerce PPC Budget Across Google Shopping, Meta and Amazon?
A $3M–$30M Shopify brand should allocate ecommerce PPC budget by testing incrementality per channel first — usually a geo holdout, turning a channel off in a subset of regions and comparing revenue against a matched control region — then weighting spend toward whichever channel’s marginal CAC sits furthest below the contribution-margin ceiling, reviewed on a fixed schedule rather than set once and left alone.
No published source states a standard split across Google Shopping, Meta and Amazon, because the right split depends on catalogue, AOV and how much of the catalogue already sells on Amazon. What follows is Pointerflow’s own starting framework — a channel weighting assigned by revenue tier, built from running Google Ads, Meta Ads Manager and Amazon Ads accounts for Shopify Plus operators in this revenue band — a starting point to test against, not a benchmark to copy.
| Revenue tier | Signal that favours it | Starting weighting | What moves the split |
|---|---|---|---|
| $3M–$8M | Thin conversion history; purchase intent already present in a search query | Primary: Google Shopping. Secondary: Meta prospecting. Amazon only if already listed there | Whichever channel’s CAC first breaks below the contribution-margin ceiling on real spend, not the starting guess |
| $8M–$18M | Enough order volume to feed Google’s and Meta’s optimisation algorithms fully; usually multi-channel already | Roughly even between Google Shopping and Meta; Amazon weighted to catalogue overlap with Amazon’s own buyer base | Incrementality test results, re-run quarterly as catalogue and creative change |
| $18M–$30M | Enough scale to run a geo holdout without noise swallowing the result | Amazon takes a larger share where a meaningful part of the catalogue already sells there, since Amazon’s own audience rarely visits the Shopify store first | The same contribution-margin ceiling test as the smaller tiers, run more often, because scale makes small CAC drift expensive faster |
A revenue tier’s starting weighting is a starting point, not a target: it gives a new account somewhere to begin before its own incrementality test has run, and the test result is what should actually move the budget from there.
Revenue tier sets the starting split; average order value adjusts it inside that tier, because AOV changes which channel’s traffic converts at a rate that makes the click worth paying for. A catalogue with a low AOV needs a high conversion rate or a high purchase frequency to clear its contribution-margin ceiling, which usually favours Google Shopping and Search, where the click already carries buying intent; a catalogue with a high AOV can absorb a lower conversion rate per click, which is what makes Meta’s broader, lower-intent reach and Amazon’s browsing traffic viable even though both convert at a lower rate than an active search query does. A brand inside the same revenue tier but at the opposite end of the AOV range should not be running the same starting split, even though revenue tier alone would assign them the same starting weighting.
Where Do Operators Get Ecommerce PPC Wrong?
A geo holdout run without a genuinely matched control region does not test incrementality — it only describes what happened in two different places. Picking a control region with a different customer mix, a different seasonal pattern or a different starting revenue trend measures the difference between two regions, not the effect of turning a channel off in one of them. Confirming the match means checking that the control region tracked the test region’s revenue for a period before the holdout began, not just that both regions look similar on paper; skipping that check produces a result that looks decisive and measures nothing.
Branded search spend blended together with non-branded spend overstates how efficient paid search looks. Branded PPC — bidding on a brand’s own name — usually reports an excellent ROAS, because most of that traffic was already coming to buy; a large share of it would have converted through organic search anyway, at no click cost at all. The fix is a search-term holdout specifically on branded terms: pause branded bidding for a defined period in a subset of the account and measure how much organic and direct traffic actually fills the gap, rather than trusting the branded campaign’s own reported number.
Treating Amazon PPC spend as separate from Amazon’s own on-platform economics leaves out fees that apply to every sale regardless of how it was won. Amazon charges a referral fee on every sale, and a fulfilment fee on top of that for any listing using Fulfilment by Amazon (Amazon Advertising and Seller Central’s own fee documentation) — both apply whether or not the sale came through Sponsored Products. A listing’s real acquisition cost on Amazon is ad spend plus those fees, not ad spend alone, and a split-channel budget comparison that only counts ad spend on the Amazon side understates what Amazon actually costs relative to Google Shopping or Meta.
Comparing channels’ reported CAC without matching their attribution windows treats two different measurement periods as though they were the same measurement. Google Ads and Meta each let an advertiser configure the lookback window for what counts as an attributed conversion, and the two platforms are not set to the same window by default — a channel using a longer window has more time to claim credit for the same set of orders, so a lower reported CAC can reflect a wider window rather than a genuinely cheaper channel. Setting Google Ads’ and Meta’s attribution windows to the same length before comparing CAC across the two removes this variable; leaving each platform on its own default does not.
What’s the Difference Between Running Ecommerce PPC In-House and Hiring a Shopify PPC Agency?
Running ecommerce PPC in-house and hiring a Shopify PPC agency mainly trade off two things: who has direct access to the margin data the campaign is actually being judged against, and how much cross-account pattern-matching experience is doing the bidding and budget decisions. An in-house team works with Shopify’s own cost-of-goods and margin data first-hand, which is what lets a contribution-margin ceiling actually get built and checked against live spend. A Shopify PPC agency usually receives a target CAC or blended ROAS instead of raw margin data, because most brands do not hand cost data to an outside vendor — which means the agency is optimising to a proxy for the real ceiling, not the ceiling itself, unless that data is deliberately shared with it.
What an agency brings that most in-house teams do not have on day one is exposure to how comparable ecommerce PPC problems played out across other Shopify accounts: a bid strategy, a Performance Max exclusion or a Meta campaign structure that already failed somewhere else. Neither model is the correct default for every $3M–$30M operator. The deciding factor is whether the margin data can actually reach whoever is making the bidding decisions, in-house or not — an agency handed real contribution-margin numbers can optimise to them exactly as well as an in-house team can.
Is Ecommerce PPC the Same as SEO or Organic Search?
Ecommerce PPC and search engine optimisation both put a product in front of a shopper who is already searching, but they are not the same lever, and treating them as interchangeable is the most common confusion in how ppc in ecommerce gets planned. PPC buys placement for as long as the campaign is funded and stops producing traffic the same day the budget does; SEO earns placement through Google’s or Amazon’s own ranking algorithm at no per-click cost, but it takes months to build and cannot be switched on for a launch that needs traffic this week.
The distinction that matters most for a $3M–$30M Shopify operator’s budget isn’t that one channel is faster than the other — it’s that only PPC carries a marginal cost per order, so only PPC can price itself out. SEO has no fee tied to the click; a $3M–$30M brand’s SEO spend is time and production cost against a fixed team or retainer, not a variable cost per visit. Once a paid channel’s next dollar stops clearing its margin ceiling, that dollar has nowhere good left to go inside PPC — but it can still fund organic production, since SEO carries no per-click cost to price itself out of. That is the practical reason the two are usually run together rather than treated as a choice: PPC is the lever with a cost attached to every visit and a ceiling it can hit; SEO is the lever without either, but with a production lead time of months rather than days.
Reconciling ecommerce PPC’s own numbers is not a keyword-research or ad-copy problem once an account is live — it is a paid-media problem, in the specific sense that the numbers deciding whether ecommerce PPC works sit outside any single ad platform. Contribution margin per order lives in Shopify and the payment processor; the true modelled-versus-observed conversion split lives inside each platform’s own attribution settings; the incrementality test that should decide the Google Shopping, Meta and Amazon split has to be run and read across all three accounts at once, not judged one dashboard at a time. That is the class of work we build as paid media — reconciling what each platform reports against what a store’s own order and margin data actually says, and adjusting the account structure and budget split from that, rather than from whichever platform’s dashboard looked best that week.
Sources
Apple’s own developer documentation establishes the App Tracking Transparency mechanism and its iOS 14.5 introduction date; Google Ads Help’s Consent Mode documentation establishes the March 2024 EEA/UK requirement and the modelled-conversion mechanism; Meta’s Business Help Center documents the Conversions API as the server-side replacement path. Amazon Advertising and Seller Central’s own fee documentation establishes the referral and fulfilment fee structure, and Google Ads Help’s Performance Max documentation establishes how that campaign type differs from standard Shopping. No independent or vendor-reported figure is quoted for contribution margin per order, the modelled-versus-observed conversion split, or a standard budget split across Google Shopping, Meta and Amazon — none is published, each varies too much by catalogue and account to state as one number, and each is marked as an item to build from a store’s own data rather than borrow. The contribution-margin method, the measurement-reconciliation approach and the budget-allocation framework are written from Pointerflow’s own paid-media builds across Google Ads, Meta Ads Manager and Amazon Ads accounts for Shopify Plus operators in the $3M–$30M range.