This is a sample audit. Ridgeline Outlets is fictional; the data, recommendations, and changelog entries are synthetic. The shape of the report — evidence tags, falsifiable recommendations, gates, confidence tiers, attribution validation — is the same one real customers receive.
Catalyst audit · Google Ads
Ridgeline Outlets
Where the spend was profitable, where it bled, what changed since the last audit, and what to do next — grounded in your actual gross margin and order data, not platform-reported revenue.
The portfolio cleared its target — and one campaign is bleeding at break-even.
A single-paragraph read on whether the spend worked. The blended number is honest about gross profit after ad spend, not reported revenue.
+$7,951
Net contribution after ad spend
Blended 2.98× ROAS on $9,248.72 spend against a 1.60× break-even, profitable on a 62.5% gross margin and +$483 ahead of the prior period in aggregate. Brand TM carried at 8.9× (9% of spend, 49% of contribution). The aggregate hides two campaign-level losses; §04 surfaces them. FACT
Display is in the red — 1.06× ROAS now produces a −$202 loss on $598.72 spent; the May 26 audience pause moved ROAS the wrong way (2.1× → 1.06×). Reallocating that spend to NonBrand | Generic at $1.19 of contribution per dollar moved projects a +$914/mo swing. PROJECTED — based on observed NB margin per $
One active gate fires in 2 days on the NonBrand keyword pause; preliminary +0.4× ROAS lift, but we wait for the gate before the next action.
01Period snapshot
The numbers, period-over-period.
Compared against the Account Sync 2026 baseline (60 prior days, same channel mix). All figures are platform-reported, validated against your Shopify order data in §03.
Spend
$9,248.72
+4.3% vs baseline
Revenue
$27,520
+5.3% vs baseline
Blended ROAS
2.98×
+0.03× vs baseline
Net contribution
+$7,951
+$483 vs baseline
Conversions
281
+14 vs baseline
CPA
$32.91
−$0.31 vs baseline
CVR
2.53%
−0.15pp vs baseline
Avg CPC
$0.84
−$0.05 vs baseline
Revenue grew faster than spend this period — small but real efficiency gain at the portfolio level (ROAS +0.03×, contribution +$483). The drag underneath is concentrated in Display (a true loss this period) and Performance Max (now below break-even); both are addressed in §06. The keyword expansion in NonBrand | Generic shipped 21 days ago held its ground at 3.5× ROAS and absorbed the bleed. FACT
Audit window
RevenueMarginSpend
02Changes since last audit
What you shipped, and what it did.
Pulled from the Changelog entries you recorded. Outcomes are observed against your audit window, not inferred. Gates that haven't cleared yet are surfaced as such.
Drivers · Revenue change by campaign
Net revenue delta +$1,380 vs the prior 30-day baseline. Shopping grew in absolute revenue but its tier dropped to Watch because the L3 free-Shopping split (§03) trims adjusted ROAS to 1.69×. The PMax decline is real and addressed in §06 #3. FACT
May 22, 2026 14 days ago
Budget increase, Brand TM
Daily budget raised from $22 to $26 (+18%, within the ±20% per-step cap) on Search | Brand | TM. Pre-change 4-week ROAS = 8.6×; impression share lost to budget = 14%.
action:budget-increasetarget:campaign
Outcome · Win
This audit confirms: ROAS held at 8.9× on the new budget — the spend at the margin is still well above break-even. IS-Budget-Lost dropped to 6%. Follow-up recommendation in §06 stages further scaling to $36/day across two sub-20% steps. FACT
May 15, 2026 21 days ago
Keyword expansion, NonBrand | Backpacking Tents ad group
Added 14 phrase-match keywords seeded from the NonBrand | Backpack ad group's converting search-term harvest. Initial bid set at 75% of ad-group average.
action:keyword-addtarget:ad-group
Outcome · Win
This audit confirms: The expansion landed at 3.8× ROAS — above the 3.5× campaign target and above the 1.60× break-even with room to spare. Follow-up recommendation in §06 replicates the pattern on the sleeping-bags ad group, where converting search-term density is similar. FACT
May 26, 2026 10 days ago
Pause, Display | “Casual Campers” audience
Hypothesis: pausing the Casual Campers audience would lift Display ROAS by concentrating impressions on Cart Abandoners + Past Purchaser Lookalike.
action:pausetarget:audience
Outcome · Loss / revert recommended
This audit confirms: Display ROAS dropped 2.1× → 1.06× post-pause — pushed into a Loss tier, not improved. The Casual Campers audience wasn't the bleed — the campaign-level structure is. Recommendation #4 in §06 reverts this and addresses Display at the campaign level instead. FACT
May 31, 2026 5 days ago
Pause, low-ROAS NonBrand keywords
Paused 8 broad-match keywords in NonBrand | Generic with cumulative spend ≥$30 and 0 conversions over the prior 30 days. Gate set: re-evaluate June 7.
action:keyword-pausetarget:keywordgate:active
Gate active · clears in 2 days
Preliminary signal (gate hasn't cleared): NonBrand | Generic ROAS lifted 3.1× → 3.5× over the 5-day post-pause window — encouraging, but 5 days isn't enough to confirm. The audit holds this finding until the gate fires on June 7. Don't stack a second NonBrand change before then. INFERRED — short window
03Attribution validation
Whether your platform numbers match your store.
Every audit starts here. If tracking is broken, the rest of the report is built on sand and we say so explicitly. Three layers: tracking gate, source ground-truth, and intelligence findings the platform won't tell you.
Tracking accuracy: 86.9% — VALIDATED.TRACKING: VALIDATED Platform-reported conversions clear the 80% gate against Shopify ground truth. The 13.1% over-report is above floor but tighter than typical for a healthy DDA-attributed account; recommendations downstream still use platform-reported metrics, and the gap is decomposed in the L3 finding below.
Source
Orders
Revenue
Method
Google Ads (platform-reported)
281
$27,520
DDA, Include=Yes goals only
Shopify (ground truth)
244
$23,925
UTM-resolved paid Google
Delta
+37 (13.2%)
+$3,595 (13.1%)
Platform over-reports vs Shopify
L3 finding — Paid vs Free Shopping split. Google Ads reports 71 Shopping conversions. Shopify ground truth: 60 paid Shopping + 11 free Shopping (Surfaces-on-Google). Without this split, free Shopping orders inflate the Shopping campaign's ROAS by ~18%. Adjusted Shopping ROAS: 1.69× (still above the 1.60× break-even, but narrower than the headline 2.00× — and the reason §04 grades Shopping as Watch). FACT
The 13.1% over-report stays above the 80% gate, but it's tight enough to watch. Most of the gap traces to view-through-attributed orders and the paid-vs-free Shopping split called out above. The free-Shopping split is a Trellis-only finding — Google Ads UI doesn't expose paid-vs-organic Shopping at the campaign level, but every Shopping audit on the platform shows the same inflation pattern. FACT
04Profitability
Gross profit after ad spend, by campaign.
Contribution = Revenue × 0.625 − Spend, where 0.625 is your blended gross margin. Break-even ROAS = 1.60×. We've graded each campaign against its own group target where one is configured, blended target otherwise.
Campaign
Tier
Spend
Revenue
ROAS
Contribution
Search | Brand | TM
Outperform
$850.00
$7,565
8.90×
+$3,878
Search | Brand | Evergreen
Profitable
$1,400.00
$3,920
2.80×
+$1,050
Shopping | All Products
Watch
$2,800.00
$5,600
2.00×
+$700
Search | NonBrand | Generic
Outperform
$2,200.00
$7,700
3.50×
+$2,613
Performance Max
Marginal
$1,400.00
$2,100
1.50×
−$88
Display
Loss
$598.72
$635
1.06×
−$202
Blended
$9,248.72
$27,520
2.98×
+$7,951
Revenue to net contribution
Gross margin 62.5%
Search | Brand | TM at 8.9× ROAS on 9% of total spend carries 49% of total contribution — the 8.9× outlier is credible because the campaign is volume-limited by brand search demand, not by lack of budget. Scaling further is bounded by available impression share, not by hypothesis. FACT
Display is in the red — $635 in revenue against $598.72 in spend, a 1.06× ROAS that produces a −$202 contribution loss after gross margin. Performance Max at 1.50× ROAS is now below the 1.60× break-even and giving back −$88. Together, the two campaigns drained $290 of contribution this period. Recommendation #4 in §06 redirects the Display budget; PMax stays in observation pending the §06 #3 brand-harvest. FACT
05Critical insights
Four things to read before anything else.
The state of play, the strongest signal, the sharpest risk, and the move that matters most this period — each traceable to a figure elsewhere in this report.
Health
2.98× ROAS vs 3.0× target — profitable at +$7,951 net contribution, slightly below ROAS target but +$483 ahead of the prior period in aggregate. Tracking validated at 86.9% (§03).
Top performer
Search | Brand | TM leads at 8.90× ROAS ($7,565 revenue on $850 spend, 9% of total spend / 49% of total contribution). IS-Budget-Lost down to 6% post-May-22 raise.
Biggest risk
Display is now a true loss at 1.06× ROAS, −$202 contribution. The May 26 audience pause made it worse, not better — and PMax dropped to 1.50× ROAS below break-even, compounding the bleed. §06 #4 pauses Display and reallocates the budget.
Priority action
Phase 1 this week: add account-level discount code phrase negatives (§06 #1), pause the $412 broad-match waste in NonBrand | Backpack (§06 #2), pause Display and shift $599/mo to NonBrand (§06 #4). Projected swing: +$1,307/mo contribution.
06Recommendations
Six actions, sequenced by phase — plus three holds.
Phase 1: structural changes (negatives, pauses). Phase 2: bid strategy. Phase 3: budget scaling. Never stack change types in the same window — if three things change at once, you won't know which one worked. Each recommendation names a credible alternative and the falsifiable condition that would flip the call. Three more findings are surfaced below the action set as held — the audit considered them, but the evidence wasn't there yet, and a weak rec costs more than a missed one.
01Add “discount code” phrase negatives at account level
Discount-code queries on your brand have a blended 0.4× ROAS — they convert at near-zero contribution because the redemption depth crushes the margin. The leak is sustained ($232 over the audit window across two ad groups). Adding three account-level phrase negatives closes the leak without touching match-type strategy elsewhere.
Evidence
$94 spend on "ridgeline outlets discount code" in Brand TM, 9 clicks, 1 conversion at 0.6× ROAS FACT
$138 spend on "backpacking tent discount code" + 2 sibling queries in NonBrand | Tent Shopping, 0.3× blended ROAS FACT
Based on available data, a credible alternative is: Adding the negatives only at the Brand TM and NonBrand | Tent Shopping campaign level instead of account-wide. Lower blast radius, recoverable if a future Shopping promo wants to bid on discount-intent traffic.
We'd shift to that alternative if: A planned promotional campaign in the next 14 days wants discount-code traffic as part of its targeting; account-level negatives would block the promo's intended demand.
$412 of broad-match spend on this modifier produced zero conversions across 121 clicks — the match type pulls every weight-related search through it, not the buyer's intent. The phrase-match sibling in the same ad group converted at 1.8× ROAS on $186. Move the budget to phrase and add an exact-match SKAG seeded from the converting queries.
Evidence
$412 / 121 clicks / 0 conv on broad +backpacking +pack +under +3 +lbs over 30 days FACT
$186 / 47 clicks / 4 conv / 1.83× ROAS on phrase "ultralight backpack", same ad group FACT
Recommended exact SKAG: [ultralight backpack 50l], [ultralight backpack under 3 lbs] seeded from converting search-term harvest INFERRED — top converters by spend
Based on available data, a credible alternative is: Keeping the broad-match keyword but adding a -free, -rental, -DIY negative set scoped to the ad group only. Lower-disruption path if the weight modifier is judged a research signal worth keeping for Smart Bidding.
We'd shift to that alternative if: Cumulative spend on this broad-match in the next 14 days lands under $80 with the new negatives applied, AND the ad group's aggregate CVR holds within ±0.3 percentage points of current. Otherwise the pause is the right call.
03Harvest "ridgeline outlets dyneema tent" from PMax to Brand Search; exclude from PMax
PMax Insights shows a brand-intent query — "ridgeline outlets dyneema tent" — driving $287 revenue / $34 cost (8.4× ROAS) over 14 days. PMax is harvesting demand that would've converted through Brand Search at a lower CPC and with cleaner attribution. Add the term as an exact in Brand | Evergreen, then exclude from PMax once Brand has 7 days of impression data.
Brand TM avg CPC: $1.62; PMax avg CPC on same query: $2.41 (48% premium) FACT
Order operation: Brand exact first (7-day impression gate), then PMax brand exclusion INFERRED — standard harvest sequence
Based on available data, a credible alternative is: Leaving the query in PMax. Some accounts find that PMax's ML benefits from including high-intent branded queries as conversion signal even at a CPC premium.
We'd shift to that alternative if: After 14 days of harvest, the Brand | Evergreen ad group's ROAS on the harvested query falls below 6.0× — at that point the CPC premium PMax was paying becomes justifiable on attribution-mix grounds.
04Pause Display; reallocate $598/mo to NonBrand | Generic; revert May 26 audience pause
Display is now a true loss — $635 revenue against $598.72 spend, 1.06× ROAS, −$202 contribution after gross margin. The May 26 Casual Campers audience pause moved ROAS the wrong way (2.1× → 1.06×), confirming the structural problem isn't the audience. NonBrand | Generic currently returns $1.19 in contribution per dollar of spend; pausing Display and moving its budget there projects a +$914/mo swing.
Projected swing: $202 stopped Display loss + $598.72 × $1.19 NonBrand uplift = +$914/moPROJECTED — assumes NonBrand marginal economics hold to +6% spend
Based on available data, a credible alternative is: Hold Display at current spend, revert the Casual Campers pause, and tighten frequency cap to 3/day on the Cart Abandoners audience. Same hypothesis as the original change, applied at the structural level the audience pause avoided.
We'd shift to that alternative if: After revert + frequency-cap tightening, Display ROAS clears 2.5× within a 14-day observation window. Below that, the marginal $ is still better-spent in NonBrand.
Brand TM CPC moved $0.84 → $1.62 over 60 days; impression share lost to rank is 18% with Backcountry.com on 22% of Ridgeline-brand auctions and an 11% overlap rate. Average position deteriorated 1.1 → 1.4. A 15% tCPA ceiling lift + two competitor-defensive phrase keywords in the Brand | Competitor Defensive ad group restores rank without scaling unprofitable segments.
Phase 2 — must follow §06 #1 + #2 from Phase 1 before this lands INFERRED — change sequencing rule
Based on available data, a credible alternative is: Hold tCPA flat and lean on the new competitor-defensive ad group alone. Lower-cost path if the CPC inflation is judged a temporary Backcountry test rather than a sustained campaign.
We'd shift to that alternative if: Backcountry's Ridgeline-brand auction overlap drops below 12% within 30 days of the defensives going live — at that point the tCPA lift is excess armor.
06Scale Brand TM budget $26 → $36/day after the NonBrand gate clears
Brand TM still loses 6% of impression share to budget at 8.9× ROAS. A $10/day increase (+38%, above the standard ±20% per-step cap so we'll split into two sub-20% steps with a 7-day observation between) captures the IS-budget-lost band without changing bid strategy. Sequence after the June 7 NonBrand gate clears so a Brand and NonBrand change don't overlap.
Evidence
Brand TM IS-Budget-Lost: 6% post May 22 raise FACT
Gate: schedule after June 7 NonBrand gate clears INFERRED — change sequencing
Based on available data, a credible alternative is: Hold Brand TM budget flat and instead bid more aggressively on the existing budget through the Phase 2 tCPA lift in #5 alone. Same impression-share goal, achieved by raising bids rather than ceiling.
We'd shift to that alternative if: The Phase 2 tCPA lift in #5 lands Brand TM at <6% IS-Budget-Lost and ≥8.5× ROAS within 14 days — at that point the budget raise would be solving a problem that no longer exists.
Findings held — evidence is thin
Three moves the audit considered but won't recommend yet.
Each names what would have made it actionable, and the threshold the next audit needs the data to clear before the call lands. Holding is the right answer when the evidence isn't there — a weak recommendation costs more than a missed one.
Replicate the NonBrand | Backpacking Tents expansion on the Sleeping Bag ad group
Held · insufficient data
The NonBrand | Backpacking Tents 14-phrase-keyword expansion shipped May 15 landed at 3.8× ROAS — the natural next move is replicating the pattern on NonBrand | Sleeping Bag Shopping. But the Sleeping Bag ad group has only 11 conversions in the 30-day window, below the floor we'd want before gating a structural expansion as actionable. INSUFFICIENT DATA — 11 conv, sample at floor
Re-evaluate when: ad-group conversion volume clears 15 in a single audit window AND ROAS holds above 3.0× on existing keywords. Likely RDG-016 at current growth rate.
Narrow the Apparel & Layers ad group — phrase-convert the broad-match drag
Held · insufficient data
Brand | Evergreen → Apparel & Layers underperforms at 2.1× ROAS, dragged by a single broad-match query +rain +jacket +waterproof (§08). The narrowing recommendation would be straightforward — phrase-convert the broad-match and add ad-group negatives — but the ad group has only 7 conversions over 30 days. A pause/restructure call needs more substrate. INSUFFICIENT DATA — 7 conv, well below floor
Re-evaluate when: Apparel & Layers sustains >$300 spend at sub-2.5× ROAS for two consecutive audit windows. At that point the next rec is a phrase-conversion + broad-match removal, not a hold.
Tablet device bid modifier on NonBrand | Generic
Held · sample at floor
Tablet converts at 3.18× ROAS — close to Desktop's 3.84× and meaningfully above Mobile's 2.91× (§10). A +X% tablet bid modifier on NonBrand | Generic would be the obvious move, but Tablet only had 23 conversions across the full 30-day window. The sample sits right at the floor, and a bid modifier is the kind of change that needs more than a floor sample to back. INSUFFICIENT DATA — 23 conv, sample at floor
Re-evaluate when: Tablet sustains ≥15 conversions per audit period at the current ROAS gap (≥0.25× above Mobile). One more clean window is enough.
07Prior recommendations status
Where the last audit's recommendations ended up.
Each recommendation from RDG-013 (May 5, 2026) and whether it shipped, what happened, and whether the next action carries forward.
Recommendation
Shipped?
Outcome
Next
Raise Brand TM daily budget $22 → $26
Yes · May 22
ROAS held 8.9×; IS-Budget-Lost: 14% → 6%
Continue scaling — §06 #6
Expand NonBrand | Backpacking Tents with 14 phrase keywords
Yes · May 15
3.8× ROAS on new keywords, above 3.5× target
Replicate on Sleeping Bags — §06 follow-on (deferred to RDG-015)
Pause Display “Casual Campers” audience
Yes · May 26
Display ROAS 2.1× → 1.06×; pushed campaign into a Loss tier
Revert + pause Display entirely — §06 #4
Pause 8 low-ROAS NonBrand broad keywords
Yes · May 31
Preliminary +0.4× lift; gate clears June 7
Hold for gate; then evaluate next pause batch
Add Shopping product-feed title optimization
No · operator deferred
—
Carry forward to RDG-015
4 of 5 prior recommendations shipped. 3 of 4 shipped produced the predicted outcome; the Display audience pause was the loss, and §06 #4 acts on it. FACT
08Campaign breakdown
Per-campaign detail.
Spend, performance, structure and the single most material observation per campaign. Skim or deep-read.
Search | Brand | TMOutperform
4 ad groups (Core Exact, Misspellings, Competitor Defensive, Store Locator). Core Exact carries 71% of spend at 9.4× ROAS. Competitor Defensive at 4.1× ROAS on $112 — under-funded relative to the Backcountry incursion in §05 #5. FACT
Search | Brand | EvergreenProfitable
5 product-category ad groups. Tents and Hiking Boots are above 3.0× ROAS; Apparel & Layers below at 2.1×, dragged by a single broad-match query +rain +jacket +waterproof. Worth narrowing in the next pass — not material enough this audit. FACT
Shopping | All ProductsWatch
5 product groups (Tents & Shelters, Sleep Systems, Footwear, Packs & Carry, Cook & Hydration). Platform-reported ROAS 2.00× looks profitable, but the §03 L3 free-Shopping split lands the real ROAS at 1.69× — above break-even but slim. Footwear feed has 22 disapproved variants (missing GTIN); cleaning the feed surfaces ~$180/mo at current per-impression economics. FACT
Search | NonBrand | GenericOutperform
5 ad groups (Tent Shopping, Sleeping Bag Shopping, Hiking Boot Shopping, Backpack Shopping, Stoves & Water Filtration). Backpack Shopping carries the §06 #2 waste finding. Hiking Boot Shopping has the cleanest match-type mix (62% phrase, 31% exact, 7% broad) — pattern to replicate. FACT
Performance MaxMarginal
4 asset groups (Catch All, Seasonal Shoulder, 4-Season, Promo/Clearance). PMax dropped to 1.50× ROAS this period — below the 1.60× break-even, producing a −$88 contribution loss. PMax Insights shows it's harvesting brand-intent demand (§06 #3); removing that crutch may push it deeper into Marginal before it recovers, so we observe rather than scale or pause this audit. FACT
DisplayLoss
5 audiences (Site Visitors 30d, PDP Viewers 14d, Cart Abandoners 7d, Past Purchaser Lookalike, YouTube Trail-Content Viewers). Cart Abandoners is the only audience above 2.0× ROAS, and the May 26 Casual Campers pause concentrated impressions on weaker audiences. The campaign now produces a −$202 contribution loss; §06 #4 pauses Display entirely and redirects the budget. FACT
09Bid strategy evaluation
What you're bidding on, and whether the strategy fits the campaign.
Bid strategy changes are Phase 2 — never stacked with structural changes. The audit evaluates current strategy against the campaign's strategic role and recent volatility.
Campaign
Strategy
Target
Fit
Search | Brand | TM
Target ROAS
600%
Appropriate — see §06 #5 for tCPA ceiling lift
Search | Brand | Evergreen
Target ROAS
300%
Appropriate
Shopping | All Products
Maximize Conversion Value (tROAS bid limit)
250%
Re-examine — adjusted ROAS sits at 1.69× post free-Shopping split
Search | NonBrand | Generic
Target ROAS
350%
Appropriate
Performance Max
Maximize Conversion Value
— (no cap)
Constrain — set tROAS bid limit at 1.8× after §06 #3 harvest
Display
Target CPA
$48
N/A — recommended pause, §06 #4
Sequencing note. The audit never recommends a bid strategy change in the same phase as a structural change on the same campaign. Recommendation #5 (Brand TM tCPA ceiling) is Phase 2 and is gated on the Phase 1 actions in #1 + #2 landing first. If the operator wants to act faster, the right next step is the structural Phase 1 batch — the bid change can land 7 days later.
Surface material gaps only — not a wall of cells. Device adjustments are platform-specific; Microsoft Ads adjustments do not transfer to Google.
Device
Spend
Conv
CVR
CPA
ROAS
Desktop
$3,712
142
3.41%
$26.14
3.84×
Mobile
$4,889
147
2.42%
$33.26
2.91×
Tablet
$647.72
23
2.18%
$28.16
3.18×
Desktop converts 41% better than mobile at a 21% lower CPA — material gap, consistent with category. A +12% desktop bid modifier on NonBrand | Generic would capture the gap; deferred to RDG-015 to honor the Phase 2 sequencing (would stack with §06 #5). FACT
Tablet sample is at the edge of significance (23 conversions). Recommendation held until the next audit. INSUFFICIENT DATA — sample at floor
11Platform detail
Google Ads — account-level health.
This account is Google-only. When Microsoft Ads is connected the audit produces a parallel section here — platforms are analyzed independently, never blended.
Conversion tracking. Primary conversion action: Purchase (Data-Driven Attribution, 30-day click lookback, counting type All). Secondary actions AddToCart + NewSubscriber set Include=No — clean signal for Smart Bidding. FACT
Account budget pacing. $9,248 spent of a $10,500 monthly cap — 88% utilization. The Display pause + Brand TM scale in §06 land net-neutral on monthly spend. FACT
Merchant Center health. 1,247 active SKUs / 22 disapproved (Footwear feed, missing GTIN). Approval rate 98.2%. No top-level feed warnings. FACT
12Methodology & quality
How much to trust this report.
An honest self-assessment. Every figure carries an evidence tag, every recommendation a confidence tier, and the report grades its own analytical depth.
Statistical methodology
Every recommendation in §06 above carries a Bayesian credible interval and finding-band classification computed directly from this audit's data — not estimated by the model. The screen view exposes these via a clickable Evidence badge on each row; the PDF prints the same finding band, credible interval, and probability signals inline beneath each recommendation. A 5-tier estimation system gates findings by per-campaign conversion volume; below the floor for a given finding band, the audit holds the recommendation rather than emit it. Bayesian posteriors combine the audit window against the prior audit's baseline, re-computed every audit.
Attribution methodology
Tracking validation in §03 compares platform-reported conversions against Shopify ground-truth orders resolved by UTM. A <80% accuracy gate blocks any bid or budget recommendation that depends on platform-reported revenue. L3 findings — paid-vs-free Shopping split, platform self-reporting bias, cross-platform overlap — surface intelligence the platform UI doesn't expose. Order data is the canonical truth; platform data is the optimization signal.
Gross profit calculation
Contribution = Revenue × Gross Margin − Spend. Blended gross margin (62.5%) is resolved from your uploaded product catalog joined against the in-window orders. Break-even ROAS = 1 / Gross Margin = 1.60×. Tier classification: Star (≥ target), Profitable (break-even ≤ ROAS < target), Marginal (0.67× break-even ≤ ROAS < break-even), Cut (< 0.67× break-even).
Words
4,128
Version
v4.9.0
Confidence tier
HIGH
Conversions (window)
312
Recommendations · confident
5
Recommendations · directional
1
Recommendations · held
3 (data thin — see §06)
Reproducibility variance
±0.7%
13Data dictionary
What every term in this report means.
For the operator reading the report a year from now, or for anyone new on the team.
Blended ROAS. Revenue ÷ Spend, across all campaigns in the audit window. Used as a headline metric. Always cross-checked against contribution because high ROAS at low spend doesn't move the business.
Contribution / Gross Profit after Ad Spend. Revenue × Gross Margin − Spend. The honest dollar number — what you actually earned before fulfillment, platform fees, and overhead.
Break-even ROAS. 1 ÷ Gross Margin. At 62.5% margin, you need 1.60× ROAS to break even on ad spend before any other costs.
Evidence tag. Every numeric claim is tagged: [FACT] (measured), [PROJECTED] (forward-looking, with stated assumptions), [INFERRED] (best-read of the data, with basis), [INSUFFICIENT DATA] (sample below threshold, finding held).
Confidence tier. Recommendation-level grade derived from the evidence tags inside it. High = all FACT; Medium = mix of FACT + INFERRED; Low = primarily INFERRED.
Falsifiable recommendation. Every recommendation names a credible alternative and the specific, observable condition that would shift the call. If the next audit can verify the condition, the recommendation is honest.
Gate. A pre-declared observation window before the next action lands — designed to keep one change from masking another. A gate has a fire date and a clear pass/fail criterion.
Phase. Sequencing layer. Phase 1 = structural (negatives, pauses). Phase 2 = bid strategy. Phase 3 = budget scaling. Never stacked in the same window.
Reproducibility check. The substrate assembly is re-run before every audit to confirm inputs are deterministic and the recommendation set is stable across reruns. The prose rewrites each run; the dollar figures, recommendation set, and evidence tags do not.