ROAS by campaign
“show every google ads campaign by week matched to our shopify orders by utm campaign, calculate roas as revenue divided by spend, and show status Agrees at 2 or more, No revenue at 0, Low ROAS below 2”
show every Google Ads campaign spend campaign by week matched to our Shopify orders by utm campaign, calculate roas as revenue divided by spend, and show status Agrees at 2 or more, No revenue at 0, Low ROAS below 2
What the agent built
4 steps, each one an ordinary Mammoth step you can open and change.
- FileGoogle Ads campaign spendCSV export · 21 rows
- FileShopify ordersCSV export · 23 rows
- StepSum spend by week and campaignStep 1
- StepSum orders by week and campaignStep 2
- JoinAdd Shopify revenue19 of 21 paired
- StepSet roas statusStep 4
- ResultCampaign ROAS by week21 rows · 9 flagged
- ScheduleRuns when you sayProposed
Checked on the sample files: every step ran, 21 rows came out, and the join paired 19 of 21 rows.
- Download Google Ads campaign spend sample (21 rows)Google Ads: Reports > Predefined reports (Dimensions) > Campaigns > Download
- Download Shopify orders sample (23 rows)Shopify: Orders > Export
What you get back
The result of that run, the rows to look at first.
| Week | Campaign | Spend | Revenue | ROAS | Status |
|---|---|---|---|---|---|
| 2026-10-05 | search_generic | 710 | 0 | 0 | No revenue |
| 2026-10-26 | shopping_core | 500 | 0 | 0 | No revenue |
| 2026-09-07 | search_generic | 680 | 1,240 | 1.82 | Low ROAS |
| 2026-09-14 | search_generic | 720 | 1,350 | 1.88 | Low ROAS |
| 2026-09-21 | retargeting_video | 260 | 320 | 1.23 | Low ROAS |
| 2026-09-21 | search_generic | 700 | 1,180 | 1.69 | Low ROAS |
| 2026-09-28 | search_generic | 690 | 1,260 | 1.83 | Low ROAS |
| 2026-10-12 | search_generic | 735 | 1,300 | 1.77 | Low ROAS |
| 2026-10-26 | search_generic | 680 | 1,280 | 1.88 | Low ROAS |
| 2026-09-07 | search_brand | 420 | 1,740 | 4.14 | Agrees |
| 2026-09-07 | shopping_core | 510 | 1,620 | 3.18 | Agrees |
| 2026-09-14 | search_brand | 390 | 1,750 | 4.49 | Agrees |
How do you calculate ROAS by campaign?
Export campaign spend from Google Ads and order data from Shopify. Match rows by week and utm campaign, then divide revenue by spend to get ROAS. The workflow also marks each campaign as Agrees at 2 or more, Low ROAS below 2, or No revenue at 0.
How it works
How to use the Campaign ROAS by week workflow
- 1Get early accessWe invite people in small batches, job by job. You'll land on this workflow, already built and checked on the sample files.
- 2Swap in your exportsUpload your own files as they come out of your tools. The agent checks the workflow on your rows.
- 3Change it in words, then turn it onSay what to change and see the new result before anything saves. Then choose when it runs.
Campaign ROAS by week: questions
Which export should you use?
What happens to rows that do not match?
How do you change the rules?
Get early access to this workflow
It will open already built and checked on the sample files. Swap in your own exports and see your result.
Workflows like this
Decide which pages to keep, update or prune, and find the search terms that spend without converting.
- Google Ads wasted spendFind search terms with spend and no conversions in the last 30 days, ranked by spend, from a Google Ads export.See the workflow Built by the agent
- Multi-touch attributionSplit closed HubSpot deal credit across touchpoints, by touch and by channel, from exported deal, contact, engagement, and channel mapping files.See the workflow Built by the agent
- Blended ROAS across Google and Meta AdsCombine Google Ads and Meta Ads exports with Shopify orders to see weekly blended ROAS, with duplicate rows flagged first.See the workflow Built by the agent
- HubSpot leads by source, monthlyTrack new leads per month by original source and count customers from a HubSpot contacts export.See the workflow Built by the agent
- LinkedIn Ads cost per leadShow LinkedIn Ads campaign cost per lead by week, sorted highest first, from your exported campaign file.See the workflow Built by the agent
- Content auditEvery page's clicks now and before, and a keep, update or prune callSee the workflow Template