How to check if Google Ads is profitable, step by step
Find your margin per order in Shopify, give Merchant Center your product costs and add Gross profit to your Google Ads columns. Subtract ad cost per campaign, leave out unfinished days and refunds, then test the biggest campaign in a few regions.
By Joris van Huët, Founder & CEOUpdated 8 min read
Run the numbers for your store: the free break-even ROAS calculator.
Start with your margin per order in Shopify. Then make Google Ads show profit: send cart data, give Merchant Center your product costs and add the Gross profit column. Subtract ad cost per campaign and leave out days still filling in. If a campaign passes, test it in a few regions before you trust it.
You need Google Ads, Merchant Center, your Shopify admin and a spreadsheet. The setup takes an afternoon; the regional test at the end takes a few weeks. Each step hands a number to the next, so keep the sheet open.
Step by step
- Find your margin per order. Shopify's Profit margin by order report sets product and shipping charges against product and shipping costs. That margin is closer to what an order leaves you than a product's list margin. Menu path: Shopify admin > Analytics > Reports > Category filter > Profit Margin > Profit margin by order.
- Give Merchant Center your product costs. Google uses the
cost_of_goods_soldattribute to estimate gross profit. A rough estimate, or an average per product, is enough, Google says. Every product needs one, or its sales drop out of gross profit. Menu path: Merchant Center > Data sources > Product sources tab > your source > Attribute rules tab > Add attribute rule. Attribute rules need the Advanced data source management add-on. - Send cart data with each purchase. Cart data adds the items, prices and quantities of each order to your purchase conversion. Google's reference shows the Shopify app's purchase event already carries them. Only items from a Merchant Center account linked to Google Ads count, and item IDs must match your feed. Menu path: Google Ads > Goals icon > Diagnostics, then the conversions with cart data card.
- Check what one conversion is worth. Google's reference for the Shopify app says its purchase value takes off discounts. It also leaves out shipping and tax. Keep one primary purchase action, so each order counts once. Menu path: Google Ads > Goals icon > Conversions > Summary > your purchase action.
- Add the profit columns. Google keeps the cart data metrics in the Conversions group of columns. Add Conv. value, Conv. value / cost, Revenue, COGS and Gross profit, then save the set. Menu path: Google Ads > Campaigns > Columns icon > Modify columns > Conversions > Apply.
- Subtract the ad cost. Download the table for a closed month, then add one column: Gross profit minus Cost. Take card fees and packing off too, at your own rates. Menu path: Google Ads > Campaigns > download icon > Download > Google Sheets.
- Leave out the days still filling in. Google files conversions under the click date, so recent days keep growing for a while. The Days to conversion segment shows how long your buyers take; end your date range at least that far back. Menu path: Google Ads > Campaigns > segment icon > Days to conversion.
- Take refunds out. The Shopify app sends Google no refund event. A refunded order keeps its value until you retract or restate it with its order ID. Upload the adjustments, or take your refund rate off the value in your sheet. Menu path: Google Ads > Goals icon > Conversions > Uploads > plus button > View templates > Conversions adjustments.
- Split new and returning buyers. Returning buyers are usually the likeliest to come back without an ad. If the campaign has lifecycle goals switched on, the New vs. returning customers segment splits its value between them. Menu path: Google Ads > Campaigns > segment icon > New vs. returning customers.
- Test the biggest campaign by region. A go-dark shuts off spend in test regions so you can see what the campaign adds. Target the control regions only, set Location options to Presence and cut the daily budget to the control regions' share. Menu path: Google Ads > Campaigns > Settings icon next to the campaign > Locations > Enter another location, then Location options > Presence. With Conversion Lift access, use Goals > Lift measurement > plus button > Conversion Lift under Based on Geo.
A worked example
For illustration, take one Search campaign over a closed month, with a cost on every product in Merchant Center.
| For illustration | One closed month |
|---|---|
| Cost | €8,000 |
| Conv. value | €28,000 |
| Conv. value / cost | 3.5 |
| Gross profit, from cart data | €11,200 |
| Gross profit minus cost | €3,200 |
Now the pass mark, from one store's anonymised GA4 export, 1 January 2024 to 21 August 2026. Its Break-even sheet runs the sum from step 1: at a 40% margin, break-even ROAS is 2.5x, because 1 divided by 0.40 is 2.5. That is arithmetic, not that store's result.
For illustration, the campaign's gross profit is 40% of its €28,000, and its 3.5 clears the 2.5 line. For illustration, refunds of 10% take €2,800 off the value and €1,120 off the gross profit, leaving €2,080 after the ads.
Then the go-dark from the last step. For illustration, the dark regions held a quarter of the spend, €2,000, and Google Ads had credited them with €7,000 of sales. For illustration, against the control regions, their sales fell by €3,500, half of what Google Ads had credited. For illustration, at a 40% margin those €3,500 were worth €1,400 of gross profit, against €2,000 of saved spend.
For illustration, scaled up, the campaign caused about €14,000 of sales and €5,600 of gross profit before refunds, on €8,000 of spend. For illustration, that is a loss of about €2,400 a month where the columns showed a profit.
The calendar matters too. On that one store's Journeys sheet, journeys of 2 to 3 touches took 12.5 days to buy. If your buyers are that slow, wait that long after a month ends before you read it, and run the go-dark longer still.
What to check when the report looks wrong
- Gross profit is blank. Cart data is not arriving, or the Merchant Center account is not linked. The cart data card under Goals > Diagnostics names the problem.
- Gross profit sits far below Conv. value times your margin. Products without a cost drop out of gross profit entirely, as in Google's hat-and-shirt example. Fill the gaps before you judge.
- Revenue and Conv. value disagree. Revenue adds up the item prices in your cart data, minus discounts. Conv. value is what your tag sent, after any conversion value rules, which can raise values on purpose.
- Last month looks worse than the month before. It is probably not finished. The (by conv. time) columns count conversions on the day they happened, which helps when you set Google next to Shopify.
- Spend leaks into the dark regions. Location options must say Presence, and the campaign needs its own budget rather than a shared one. Google's guide also warns that a capped budget drifts to the remaining regions and inflates them, so cut it to their share.
- Shopify shows far more sales than Google Ads. Google Ads only counts buyers who used its ads inside the conversion window. That window runs 30 days after a click unless you change it. The rest came through other channels, or no ad at all.
What to do this week
- Close the cost gap. Open the cart data card under Goals > Diagnostics. Pass: the status reads Excellent or Good, with no alert about missing costs. Fail: it reads Needs attention or Urgent, so fix the costs or item IDs and check again after the sync.
- Build last month's profit sheet. Download the campaign table with Gross profit and Cost, subtract, then take refunds off. Pass: every campaign has a profit figure after ads. Fail: some are negative, so they lose money even on Google's own count; cut or test those first.
- Write the go-dark plan for your biggest campaign. Name the control and dark regions, the dates and the budget cut. Pass: the plan is dated before any setting changes. Fail: you change targeting first and plan afterwards.
Check the homework. Your GA4 Attribution paths export already holds the evidence. Causality Engine reads that one file and shows what each channel caused next to what last-click gave it, in 1 to 2 minutes, for €99 once (excluding VAT), refundable within 30 days. Check the homework
Sources, 1 October 2026: Profit reports (Shopify Help Center); Cost of goods sold (cost_of_goods_sold) (Google Merchant Center Help); Set up your attribute rules (Google Merchant Center Help); About conversions with cart data (Google Ads Help); About conversions with cart data diagnostics (Google Ads Help); Shopify event parameters (Google for Developers); Understand your conversion tracking data (Google Ads Help); Metrics available with conversions with cart data (Google Ads Help); Add or remove columns in your statistics table (Google Ads Help); Create, save, and schedule reports from your statistics tables (Google Ads Help); Use segments in your tables (Google Ads Help); How to adjust your conversions (Google Ads Help); Measure your lifecycle goals campaigns (Google Ads Help); Implement campaigns for geo experiments (Google Ads Help); Set up Conversion Lift based on geography (Google Ads Help); About conversion value rules (Google Ads Help); About conversion windows (Google Ads Help).
Related answers
Frequently asked questions
Do I need exact product costs for Google Ads gross profit?
No. Google says the cost of goods you send is for reporting and does not need to be exact. A rough estimate, or an average for products whose cost varies, is enough. Leaving a product out does more harm, because its sales drop out of gross profit.Where can I see which products Google Ads sold at a profit?
In the cart data reports. Click Campaigns, then Insights and reports, select Reports editor and open the Performance summary section of the Template gallery. The Cart items sold report shows what buyers actually bought after a click, even when the ad showed something else.Can a campaign be profitable if it mostly sells to returning customers?
On paper, yes. But returning customers are usually the buyers likeliest to come back without an ad. Split the campaign's value with the New vs. returning customers segment, available when lifecycle goals are on. Then test before you count the returning part as profit.
Go deeper: Incrementality testing, explained.
Sixty-second versions of these ideas: Causality Engine on YouTube Shorts.
Keep reading
Terms in this article
- AnalyticsAnalytics is the systematic computational analysis of data. It reveals customer behavior and measures campaign performance.
- AttributionAttribution identifies user actions that contribute to a desired outcome and assigns value to each. It reveals which marketing touchpoints drive conversions.
- CausalityCausality is the relationship where one event directly causes another, essential for identifying specific actions that drive desired outcomes in marketing.
- ConversionConversion is a specific, desired action a user takes in response to a marketing message, such as a purchase or a sign-up.
- ExperimentsExperiments are scientific procedures that test hypotheses or demonstrate facts. In marketing, experiments like A/B tests determine the causal effect of campaign changes, enabling data-driven decisions.
- Google AdsGoogle Ads is an online advertising platform where advertisers bid to display ads, service offerings, and product listings.
- Lift MeasurementLift Measurement: A method to determine the incremental impact of a marketing campaign by comparing exposed and control groups.
- Profit MarginProfit margin measures profitability, calculated as net income divided by revenue and expressed as a percentage.