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.

Period
May 6 – June 4, 2026
Run
June 5, 2026
Window
30 days
Audit #
RDG-014
Reproducibility Verified · Pre-Computed Totals · Deterministic Substrate
00Verdict

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

Revenue Margin Spend
$1,000 $750 $500 $250 $0 May 6 May 12 May 18 May 24 May 30 Jun 4
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

Shopping | All Products +$800 Search | Brand | TM +$500 Search | NonBrand | Generic +$500 Search | Brand | Evergreen +$120 Display −$40 Performance Max −$500 0

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-increase target: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-add target: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:pause target: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-pause target:keyword gate: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%
$28k $21k $14k $7k $0 $27,520 Revenue −$10,320 COGS $17,200 Gross Profit −$9,249 Ad Spend $7,951 Net Contribution

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

High confidence
Category: negative_keywords Phase 1 Priority 1 Estimated contribution recovered: +$135/mo

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
  • Account-level phrase negatives: -"discount code", -"promo code", -"coupon" INFERRED — scope from search terms report

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.

02Pause broad-match +backpacking +pack +under +3 +lbs; reallocate to phrase + exact

High confidence
Category: keyword_optimization Phase 1 Priority 1 Estimated contribution recovered: +$258/mo

$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

High confidence
Category: keyword_strategy Phase 1 Priority 2 Estimated contribution recovered: +$180/mo

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.

Evidence
  • PMax Insights: "ridgeline outlets dyneema tent" = $287 rev / $34 spend / 8.4× ROAS / 14d FACT
  • 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

High confidence
Category: budget Phase 1 Priority 1 Estimated contribution swing: +$914/mo

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.

Evidence
  • Display: $598.72 spend / $635 rev / 1.06× ROAS / −$202 contribution FACT
  • NonBrand | Generic marginal contribution per $: $1.19 (audit window) FACT
  • Projected swing: $202 stopped Display loss + $598.72 × $1.19 NonBrand uplift = +$914/mo PROJECTED — 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.

05Defend Brand TM against Backcountry incursion — raise tCPA ceiling +15%, add competitor phrase defensives

Medium confidence
Category: bid_strategy Phase 2 Priority 2 Estimated contribution preserved: +$420/mo

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.

Evidence
  • Brand TM CPC trend: $0.84 → $1.62 over 60d (+93%) FACT
  • Auction Insights: Backcountry.com on 22% of Ridgeline-brand auctions, 11% overlap rate FACT
  • Recommended adds: "backcountry alternative", "backcountry vs ridgeline" (phrase) INFERRED — defensive pattern
  • 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

High confidence
Category: budget Phase 3 Priority 3 Estimated contribution gained: +$280/mo

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
  • Brand TM ROAS at margin: 8.9× (well above 1.6× break-even) FACT
  • Two-step sequence: $26 → $31 (+19.2%), observe 7d, then $31 → $36 (+16.1%) INFERRED — ±20% rule
  • 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 | TM Outperform

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 | Evergreen Profitable

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 Products Watch

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 | Generic Outperform

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 Max Marginal

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

Display Loss

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.
10Device performance

Mobile, desktop, tablet — segmented profitability.

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,7121423.41%$26.143.84×
Mobile$4,8891472.42%$33.262.91×
Tablet$647.72232.18%$28.163.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-level negatives. 12 phrase negatives applied (-free, -rental, -rent, -used, -cheap, -craigslist, -amazon, -jobs, -careers, -hiring, -coupon code, -diy). Missing: "discount code", "promo code" — §06 #1. 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.