Executive Summary
⚠ One data gap remains: Shopify Revenue Validation is omitted this week
Shopify: API credentials for thespadr.com are still not configured in this environment (client ID/secret blank in .env). The Shopify Revenue Validation section from the previous report format is omitted rather than filled with stale or estimated numbers — restore this once credentials are available.
📊 The headline: two multi-week open items both closed this
week. SR_US_BR_SpaDr_Products is back ENABLED and spending
again after the Sep 2 landing-page cliff, and DGEN_US_NB_TSD_HairSerum_Discovery — flagged as
Critical Waste for three consecutive reports — was finally paused. Core paid had its strongest week in the
window: orders 55 → 67
(+21.8%), revenue
$3,716 → $4,982
(+34.0%), ROAS
4.39x → 4.94x
on +19.0% spend
($847 → $1,008).
SR_US_BR_SpaDr_Products is reactivated and climbing back, though not yet at its pre-cliff
pace. Campaign status is ENABLED, serving, confirmed live today — a change from
last week's report, which found it still paused 9 days after the disapproval. Spend
$20 → $22, orders
3 → 4, at 12.41x. Impression Share
recovered 78.3% → 89.4%. The replacement
RSAs created two weeks ago (pointing at the working URL https://thespadr.com/products/hair-serum) are now live and ENABLED. One
loose end: the campaign's primary_status is still LIMITED (HAS_ADS_DISAPPROVED) — the
old disapproved ads from the Sep 2 incident are sitting paused in its ad groups rather than removed, which keeps
tripping the flag even though the campaign is healthy again. Weekly spend ($22) is still
roughly a quarter of its pre-cliff run rate ($10–13/day ≈ $70–90/week) — consistent with a
campaign still ramping back up after being dark for two weeks, not fully recovered yet.
Demand Gen posted its worst week yet, and that appears to be exactly what finally triggered the pause.
This week: 0 orders on $1,027 spend — the largest single-week spend
in the window, and zero revenue. Confirmed live today: campaign.status = PAUSED; CDP spend
drops to $0 on Sep 12–13, consistent with a pause landing around Sep 11–12. Lifetime since launch:
$8,353 for 7 orders (0.077x). This is the
pause/cap decision this report has recommended for three consecutive weeks — recommendation: keep it
paused, and if it gets rebuilt, treat it as a new test (different targeting/creative, capped budget) rather than
a straight re-enable.
Two segments dipped below their ROAS target this week, on small sample sizes each. Shopping
Brand fell below its 6.00x target for the first time recently (6.99x →
4.41x on 13 orders) — more spend, one fewer order, reads as normal
variance around a strong baseline rather than a real deterioration. Bing Search Brand missed target for a
second consecutive week, and got worse, not better (5.14x →
3.46x on 5 orders) — still a small base, but two weeks in the same
direction is enough to escalate past "watch only."
✓ What Improved
SR_US_BR_SpaDr_Products reactivated: ENABLED, 4 orders this week (zero the two weeks it was dark), IS 78.3% → 89.4%. Still ramping back toward its pre-cliff run rate.- Demand Gen finally paused after 0 orders on $1,027 spend — the trigger this report has been waiting for since it was first flagged as Critical Waste.
- Search Brand: ROAS 6.39x → 7.82x on 38 orders ($376 spend) — its best week in the recent window, led by
SR_US_BR_SpaDr_CPC_Core at 7.15x. - Search NB (Reviews): ROAS 1.86x → 2.58x, 11 orders, CPA $33 well under the $90 target.
✗ What Needs Attention
- Bing Search Brand missed target for a second straight week and the trend is negative: 5.14x → 3.46x on 5 orders, driven almost entirely by
CPC_Core (1.37x on $75, 75% of segment spend). SR_US_BR_SpaDr_Products still carries a LIMITED (HAS_ADS_DISAPPROVED) flag — cosmetic cleanup: remove (not just leave paused) the old disapproved ads from the Sep 2 incident.- Shopping Brand dipped below its 6.00x target for the first time recently (4.41x) — small sample (13 orders), watch next week before acting.
The Story — What Worked, What Didn't, and Why
The tables above show what moved. This section is about causation: which of this week's changes actually came from an action we took, which improvements can't be credited to anything we did, and where a problem is still sitting untouched. Cross-checked against reports/changelog.md and this account's live Google Ads change_event history (132 changes, Sep 01–17).
SR_US_BR_SpaDr_Products: a dead URL, traced and fixed everywhere it lived
WORKEDWhat happened: on Sep 2 the campaign fell off a cliff. Root cause, confirmed by crawling the destination live: 2 RSAs were disapproved for DESTINATION_NOT_WORKING, pointing at https://try.thespadr.com/pages/hairserum/lp2-lead-offershort-lp — a real 404. The same broken URL turned out to live in 7 ads across 6 campaigns sharing the Ex_2200_HairSerum ad group, not just this one.
What fixed it: since a live ad's final URL can't be edited (IMMUTABLE_FIELD), 7 replacement RSAs were built pointing at the working https://thespadr.com/products/hair-serum (Sep 11), the 5 old disapproved ads that were still ENABLED got paused, and the campaign was switched back to ENABLED the same day — after reviewing 90 days of CDP per ad group and pausing only the two with zero ROAS (HBB, EyeCream). On Sep 15 the cleanup finished: 4 more dormant ad groups paused, the duplicate dead-URL ad removed instead of just paused, and 2 more final URLs consolidated off orphaned subdomains.
Why it worked: the fix targeted the actual constraint (a literal dead link, traced everywhere it appeared) instead of just re-enabling the campaign and hoping. Result by the close of this report's window: Impression Share 78.3%→89.4%, 4 orders vs. zero the two weeks it was dark — climbing, but still only about a quarter of its pre-cliff run rate. Call it recovering, not recovered.
Demand Gen: three weeks of flagging it finally bought a pause
WORKED (SLOW)What happened: DGEN_US_NB_TSD_HairSerum_Discovery had been called out as Critical Waste in 3+ consecutive weekly reports. A partial mitigation landed early — on Sep 3, we paused one underperforming ad group inside it (AG3_CustomIntent_ThickerHair) — but the campaign itself kept running and kept spending. A formal sustain-or-kill diagnosis was delivered Sep 9 (30-day CDP: ROAS 0.09x, CPA $1,111 vs. a $130 target — 8.5x over, IC→order at 8.8%, full budget spent for 27 straight days with no cap). It still wasn't paused that day.
What actually triggered it: two days later, the campaign posted its single worst week ever — $1,027 spend, the largest weekly spend since launch, for zero orders and zero revenue. That's what closed the loop — the campaign was paused Sep 11.
Why it took this long: the report treated three separate signals (3 weekly flags, a full sustain/kill writeup, and a decisively bad week) as the bar for pulling the plug on a channel, rather than reacting to any single bad day. That's the right instinct in general — but it has a cost, and this is what it was: $8,353 lifetime spend for 7 orders and $645 revenue (0.077x ROAS) by the time the pause landed. Worth remembering the next time a new channel is given "more time to prove itself."
Bing Search Brand: two weeks below target, and nobody has touched a single lever
NO ACTION YETWhat happened: ROAS fell 5.14x→3.46x for a second straight week, driven almost entirely by CPC_Core (75% of segment spend at just 1.37x). That's the extent of what's known.
What didn't happen: checking both the changelog and this account's own Google Ads change history for the full Sep 1–17 window turns up zero Microsoft/Bing Ads changes of any kind — no bid, budget, or negative-keyword edit anywhere. This isn't a case of a fix that failed; it's a case of no fix having been attempted yet.
Why: this report only has CDP-level visibility into Bing (spend/orders/revenue), not the platform-level detail (search terms, bid history, impression share) that would point at a specific lever. That gap has been flagged as the next step for two consecutive weekly reports now and still hasn't been wired up. Until the bingads SDK is pulled for CPC_Core specifically, "what to do about this" stays a recommendation, not an action.
Search Brand's best week (7.82x) — don't credit it to anything we did
NOT ATTRIBUTABLEWhat happened: Search Brand ROAS climbed 6.39x→7.82x, led by SR_US_BR_SpaDr_CPC_Core specifically (6.23x→7.15x, 32 orders).
The honest check: neither platform action taken this window landed on the campaign that actually improved. The RSA replacement (Sep 11) was on Products, not CPC_Core. The keyword bid bumps (Sep 15) landed two days after this report's window had already closed. Nothing that happened to CPC_Core specifically this week explains the jump.
Why this matters: on a 32-order base, a swing this size is well within normal demand variance. Calling it a win for a specific action would be a false attribution — and the Do Not Touch list already protects this campaign from a bid change on the back of one strong week, for exactly this reason.
PMax: 54 days dark, and there is still no plan to rebuild it
NOT ATTEMPTEDWhat happened: nothing. All 9 legacy PMax campaigns remain PAUSED, confirmed live, $0 spend since Jul 22. Neither the changelog nor the live change history shows any action on PMax this window or in the weeks before it.
Why call this out explicitly: a silent line item is easy to read as "nothing to report" when it should read as "nothing has been tried." The account still has no working non-brand engine at scale — Search NB (Reviews) and, until Sep 11, Demand Gen were carrying that role by default, not by design. If a non-brand rebuild is a priority, PMax is the open slot; it just hasn't been picked up yet.
Shopping Brand's dip (4.41x) — correctly left alone, but watch a scheduling coincidence
TOO SMALL TO CALLWhat happened: ROAS dipped 6.99x→4.41x on a swing of exactly one order (14→13). No bid or budget change was made on this campaign specifically in response — the right call, given the sample size.
The coincidence to flag: on Sep 15, two days after this report's window closed, the Shopping campaign's cpc_bid_ceiling was raised $0.80→$1.60 — but that decision was driven by a separate finding (73% of Impression Share lost to rank, average CPC pinned to the old ceiling), not by this week's ROAS dip. If next week's ROAS recovers, don't read it as "the dip was fixed" — the two events are unrelated and just happen to sit next to each other on the calendar.
Google Demand Gen (Discovery) — DGEN_US_NB_TSD_HairSerum_Discovery
Status: PAUSED. Confirmed live today: campaign.status = PAUSED. CDP daily spend drops to $0 on Sep 12–13, consistent with the pause landing around Sep 11–12 (last spend day Sep 11, $148.48). This closes out the pause/cap recommendation this report has made for three consecutive weeks.
Read — the week that finally triggered the pause
This week: spend $1,472 → $1,027
(-30.2%) — the largest single-week spend in the recent
window — on 0 orders and $0 revenue. The prior week's "best
week yet" (3 orders, some revenue) reversed completely. Lifetime since launch:
$8,353, 21,102 clicks,
19,445 users landed, 7 orders, $645
— 0.077x. ATC rate this final week was 1.37%, consistent with the
same read across every week this campaign ran: the events fire, people mostly do not buy.
Recommendation: keep it paused. If Demand Gen gets revisited, treat it as a new test —
different targeting/creative/landing page and a capped daily budget (~$50/day) — rather than simply
re-enabling the same campaign at the same settings that produced an $8,353 lifetime spend against $645 of
revenue.
Platform Changes — Last Week & This Week
Every entry below is cross-verified against this account's live Google Ads change_event history (queried today, Sep 01–17 window, 132 total changes) in addition to reports/changelog.md — so the who/what/when is confirmed by the platform itself, not only by our own notes.
Last Week (Sep 08–14)
Sep 09
Buyer-exclusion audience added to SR_US_NB_SpaDr_ReviewsUI
We added the "Compradores_TSD" list as a negative audience directly in the UI. Verified live today via the API: a USER_LIST criterion with negative=true is present on the campaign. DGEN_US_NB_TSD_HairSerum_Discovery never got the same exclusion — moot now, since it was paused two days later.
Sep 09
Demand Gen sustain-or-kill diagnosis deliveredREPORT
Formal recommendation to pause DGEN_US_NB_TSD_HairSerum_Discovery, based on 30-day CDP (ROAS 0.09x, CPA 8.5x over target). Written up, not yet executed that day — see the story section above for what actually triggered the pause two days later.
Sep 11
SR_US_BR_SpaDr_Products reactivated; 2 zero-ROAS ad groups pausedUI
We switched the campaign to ENABLED after reviewing 90 days of CDP per ad group. HBB and EyeCream ad groups paused (0 orders each over 90 days); the rest stayed live.
Sep 11
7 replacement RSAs created; 5 old disapproved ads pausedAPI
New RSAs point at the working URL (thespadr.com/products/hair-serum) since a live ad's final URL can't be edited. Created PAUSED on purpose for review, then approved and enabled. Old disapproved ads across Core_CPCBid, BrandModifiers_CPCBid, Phrase_Core, Products (x2), Core and CPC_Core paused.
Sep 11
Demand Gen paused for goodUI
Paused right after its single worst week ($1,027 spend, 0 orders) — see the story section above. Lifetime at pause: $8,353 spend, 7 orders, $645 revenue (0.077x).
Sep 08–14
Shopping negativizer kept running hourlyAUTO
Automated task (TsdShoppingNegativizer) added exact-match negative keywords daily to SHP_TSD_US_PPT_ACQ_VOLUME_CBO_WK45: +1 (09/11), +790 (09/12), +1,249 (09/13), +446 (09/14) — over 2,400 new negatives this week alone, no human review needed.
This Week, To Date (Sep 15–17)
Sep 15
Landing-page audit takeaways appliedAPI
4 more dormant ad groups paused (Spa_Dr_Ingredients_EX in Modifiers; FaceMoisturizer and Neck&Chest in Products; HBB1_Reviews in Reviews), 1 duplicate dead-URL ad removed (not just paused) in Ex_2200_HairSerum, and 2 sets of final URLs consolidated off orphaned subdomains (10 ads in Age_Defying_Serum_EX, 3 ads in Modifiers/Skincare).
Sep 15
Bid ceiling corrected: bids, not budget, were the real constraintAPI
4 Products keywords raised toward Google's own first-page/top-of-page estimate; Shopping's cpc_bid_ceiling raised $0.80→$1.60 after Lost Impression Share showed 0% lost-to-budget and 73% lost-to-rank on all 4 candidate campaigns — corrects an earlier report that had recommended raising budget instead.
Sep 15
Negativizer backlog diagnosed and fixedAUTO
The 5 original shared negative-keyword lists had been full (25,000/25,000) since ~Sep 14, 10am — silently blocking new negatives for about 1.5 days while the Windows task kept reporting green. Fixed by auto-creating a 6th overflow list, which drained the backlog in one run.
Sep 15–17
Shopping negativizer, still runningAUTO
+1,535 (09/15), +959 and +1 into a new list (09/16), +1,583 (09/17) — the automated hourly task hasn't missed a day.
Sep 01–17
Still nothing on Microsoft/Bing Ads for this accountGAP
Zero changes of any kind — bid, budget, or negative — appear in either the changelog or the live change history for the full window. Flagged in the story section above as the reason Bing Search Brand's two-week miss is still unaddressed.
Still blocked: pausing 3 trial campaigns (SR_US_BR_SpaDr_Reviews_Script, SR_US_BR_SpaDr_Reviews_Troas, SR_US_NB_SpaDr_Serum_Group1_Advertorial), proposed Sep 15 — the API rejects the status change with CANNOT_MODIFY_FOR_TRIAL_CAMPAIGN. Needs a manual action in Drafts & Experiments.