Proposed Feature · Paid vs Organic Channel Split

What this adds

Each product row expands to show Paid and Organic sub-rows with separate session counts and $/sess values. A channel-mix bar visualises the paid/organic ratio at a glance.

Why it matters

A product with a great blended $/sess might be hiding a terrible paid efficiency (e.g. organic carries it). Swapping catalog budget needs to account for channel-level performance, not blended averages.

Decision it unlocks

Identify products where paid is net-negative even while organic is strong. Pull paid spend from those while keeping organic listings — recovers ad budget without killing revenue.

Before Current table — blended $/sess only
Product Sessions $/sess Ad $/sess Net $/sess Trend Status
Porsche Surf 14,213 $2.26 $0.89 $1.37 → ×1.00 Mixed
Risky Business 12,922 $1.67 $0.34 $1.34 ↑ ×1.21 Mixed
Ride West 11,296 $0.89 $0.35 $0.55 ↓ ×0.50 Mixed
Horsepower 10,682 $2.66 $0.52 $2.14 ↑ ×1.44 Strong
After Expandable paid / organic sub-rows
Product Sessions $/sess Net $/sess Mix Status
Porsche Surf 14,213 $2.26 $1.37
Mixed
Risky Business 12,922 $1.67 $1.34
Mixed
Ride West 11,296 $0.89 $0.55
Weak
Horsepower 10,682 $2.66 $2.14
Strong
Paid
Organic
Click row to expand

Proposed Feature · Weekly Spend by Product

What this adds

A "Weekly Spend" column (absolute dollars/week) alongside Ad $/sess, a WoW spend trend arrow, and a catalog budget distribution bar chart highlighting over-funded weak products.

Why it matters

Ad $/sess is a rate metric — it doesn't show the raw dollars at risk. A product spending $800/wk at $0.35 Ad $/sess is a very different problem than one spending $80/wk at the same rate.

Decision it unlocks

Immediately see which weak products are consuming the most budget. Sort by spend × net $/sess inefficiency to prioritise reallocation decisions with an explicit dollar impact.

Before Ad $/sess only — no absolute spend
Product Sessions Ad $/sess Net $/sess Status
Porsche Surf14,213$0.89$1.37Mixed
Risky Business12,922$0.34$1.34Mixed
Ride West11,296$0.35$0.55Mixed
Horsepower10,682$0.52$2.14Strong
Poolside St. Moritz8,452$0.63$0.98Mixed
Letting Go7,935$0.85$1.64Strong
After Weekly Spend column + WoW trend + distribution chart
Catalog Budget Distribution — L7D
Porsche Surf$5.2K
Risky Business$2.1K
⚠ Ride West$1.9K
Horsepower$2.7K
⚠ Poolside St. Moritz$2.6K
Letting Go$3.3K
⚠ Red bars: over-funded weak performers — reallocation candidates
Product Ad $/sess Wkly Spend WoW Net $/sess Status
Porsche Surf $0.89 $5.2K ↑ 8% $1.37 Mixed
Risky Business $0.34 $2.1K ↓ 3% $1.34 Mixed
⚠ Ride West $0.35 $1.9K ↑ 12% $0.55 Weak
Horsepower $0.52 $2.7K ↑ 5% $2.14 Strong
⚠ Poolside St. Moritz $0.63 $2.6K ↑ 18% $0.98 Mixed
Letting Go $0.85 $3.3K ↓ 2% $1.64 Strong

Proposed Feature · Swap Tracking 30/60/90d Verdicts

What this adds

Three additional verdict columns (30d / 60d / 90d) on the Recent Swaps table, each showing a Keep/Watch/Swap Out Again pill or an em-dash if the time window hasn't been reached yet. Plus a Swap Success Rate KPI card.

Why it matters

The current 7d verdict is often misleading — new products typically need 30+ days to stabilise. A swap that looks "Watch" at 7d might already be strong at 30d, or vice versa.

Decision it unlocks

Validate swap strategy over time. Identify patterns in which product types benefit from catalog swaps. Builds institutional evidence for when to hold vs. cut a new product.

Before Current Recent Swaps — 7d verdict only
Swap Date Days Live $/sess vs Original Verdict (7d)
Rosé O'Clock
Mediterranean
Jul 24 3 $1.82 +$0.24 Watch
Lella Soper Island Explorer I
Wynwood
Jul 25 2 $2.01 +$0.67 Watch
Night Shower
Misty Bells
Jul 26 1 $1.10 −$0.08 Watch
A Day of Polo
Fleetwood
Jun 24 33 $3.00 +$3.11 Keep
Summer Drift
Horsepower
Jun 12 45 $2.14 +$0.88 Keep
After 30d / 60d / 90d columns + Success Rate KPI
Swap Success Rate at 30d
71%
5 of 7 swaps outperforming at 30d
2 still in Watch window (<30d)
Swap Days $/sess 7d 30d 60d 90d
Rosé O'Clock
→ Mediterranean
3 $1.82 Watch
Lella Soper IE I
→ Wynwood
2 $2.01 Watch
Night Shower
→ Misty Bells
1 $1.10 Watch
A Day of Polo
→ Fleetwood
33 $3.00 Keep Keep
Summer Drift
→ Horsepower
45 $2.14 Keep Keep Watch
Coastal Mist
→ Poolside Biarritz
78 $1.94 Keep Keep Keep
Dusk Boulevard
→ Canvas Print Co.
95 $0.91 Watch Swap Again Swap Again Swap Again

Proposed Feature · Confidence Tiers on Trend Column

What this adds

The Trend column gains visual confidence tiers: solid blue arrow (≥100 sessions/7d), amber outline arrow (50–99), gray dotted label (<50 — "treat as noise"). Momentum multiplier hidden below the guardrail.

Why it matters

A ↑ ×2.4 trend on 31 sessions is meaningless noise — it could swing either way with 10 more purchases. Treating it the same as ↑ ×1.4 on 850 sessions leads to false swaps.

Decision it unlocks

Only act on high-confidence trend signals. Products in the amber/gray tier get flagged "hold — not enough data" rather than being swapped based on short-window flukes.

Before Plain arrows — no session-volume context
Product L7D Sess Net $/sess Trend Status
Porsche Surf3,312$1.37 → ×1.00 Mixed
Risky Business2,904$1.34 ↑ ×1.21 Mixed
Ride West2,540$0.55 ↓ ×0.50 Mixed
Horsepower2,490$2.14 ↑ ×1.44 Strong
Mediterranean74$1.82 ↑ ×2.40 Watch
Misty Bells31$1.10 ↑ ×1.80 Watch
Canvas Print Co.42$0.91 ↓ ×0.62 Weak
After Confidence tiers — solid / amber / gray dotted
Product L7D Sess Net $/sess Trend Status
Porsche Surf3,312$1.37 ×1.00 Mixed
Risky Business2,904$1.34 ×1.21 Mixed
Ride West2,540$0.55 ×0.50 Mixed
Horsepower2,490$2.14 ×1.44 Strong
Mediterranean74$1.82 ×2.40 · borderline Watch
Misty Bells31$1.10 ↑ noise — <50 sess Watch
Canvas Print Co.42$0.91 ↓ noise — <50 sess Weak
High confidence (≥100 sess/7d)
Borderline (50–99 sess)
↑ noise <50 sess — treat as noise

Proposed Feature · Impact-Ranked Swap Candidates

What this adds

Swap candidates reordered by estimated monthly revenue impact (not target quality). Each row shows rank number, an impact bar, explicit math, and a confidence badge based on session volume.

Why it matters

The current list prioritises by "target quality" which is a proxy for potential. But a swap on a 11K-session product is worth more than a swap on a 2K-session product even if the target has better $/sess.

Decision it unlocks

Always swap the highest-impact opportunity first. Explicit math lines make the estimate transparent and auditable — Max can immediately see if an assumption is off and correct the model.

Before Ordered by target quality — no explicit math
Swap Candidate Est. Impact Target Quality
A Day of Polo
→ Fleetwood
+$2.7K–5.4K/mo Strong
Ride West
→ Horsepower
+$1.8K–3.6K/mo Strong
Poolside St. Moritz
→ Letting Go
+$1.1K–2.2K/mo Mixed
Canvas Print Co.
→ Mediterranean
+$0.4K–0.8K/mo Mixed
Total recoverable: $18K–$36K/mo
After Ranked by impact · explicit math · confidence badges
1
Ride West Horsepower
+$2.7K–5.4K/mo
11,296 sessions × ($2.14 − $0.55) × 15–30% capture = +$2.7K–5.4K/mo
High confidence — 2,540 sess L7D
2
A Day of Polo Fleetwood
+$2.4K–4.8K/mo
9,820 sessions × ($3.00 − $0.89) × 12–24% capture = +$2.4K–4.8K/mo
Proven at launch — strong 30d data
3
Poolside St. Moritz Letting Go
+$1.4K–2.8K/mo
8,452 sessions × ($1.64 − $0.98) × 25–50% capture = +$1.4K–2.8K/mo
High confidence — 1,910 sess L7D
4
Canvas Print Co. Mediterranean
+$0.4K–0.8K/mo
2,840 sessions × ($1.82 − $0.91) × 15–30% capture = +$0.4K–0.8K/mo
Thin data — 42 sess L7D · borderline confidence
Total recoverable revenue $18K–$36K/mo

Proposed Feature · Scale Decision — International Markets

What this adds

A per-market panel (US · CA · UK · AU) layering Meta ad spend data with GA4 catalog traffic quality — blended ROAS, quality CPC by top cities × age, click-to-session delivery rate, and $/sess trend sparklines on catalog PDPs.

Why Meta-attributed ROAS isn't the signal

Intl markets have long purchase lags (7–21 days post-click). The Meta Ads Manager 7d-click ROAS window misses most conversions. Ads are also the only marketing in CA/UK/AU — there's no organic baseline to fall back on. A short ROAS looks bad; blended L60 market revenue ÷ market spend is what matters.

Decision it unlocks

An explicit SCALE / HOLD / PULL BACK signal per market — with transparent rule thresholds — so budget changes are driven by data, not gut reads of Meta screenshots. From this panel: lift CA by 30%, hold UK, investigate AU delivery quality.

Before Ad hoc — Meta screenshot, in-window ROAS only
Meta Ads Manager — Campaign View
Campaign Status Daily Budget ROAS (7d) CPC Spend (L30)
CE_CA_TOF_ASC…Q226 ● Active $200/day 1.4 $0.24 $10.1K
CE_UK_TOF_ASC…Q326 ● Active $200/day 1.1 $0.37 $8.9K
CE_AU_TOF_ASC…Q326 ● Active $200/day 1.8 $0.39 $14.3K
⚠ Attribution-window ROAS only — no traffic quality, no long-term view, no city or age filter

Budget decisions made ad-hoc from screenshots like this. No consistent rule. No blended ROAS. No click quality signal.

After Market cards: blended ROAS + quality CPC + trend + rule
🇺🇸
United States
$3,856/day · L60 ROAS ≈2.6 · Quality CPC $1.49
Hold
🇨🇦
Canada
$338/day · L60 ROAS ≈3.4 · Quality CPC $0.60
Scale
🇬🇧
United Kingdom
$298/day · L60 ROAS ≈4.2 · Quality CPC $0.72
Scale
🇦🇺
Australia
$476/day · L60 ROAS ≈1.8 · Quality CPC $0.88
Hold

Full detail per market in cards below ↓

Market Detail Cards

🇺🇸 United States
⟳ Hold
Budget
$3,856/day (L30 actual avg)
L30 spend: $115,671 ● live  ·  L30 ROAS: 2.6 blended  ·  L60 ROAS: 2.6
CPC Quality
$0.846 overall ● live  →  $1.49 quality CPC
Top-5 states: CA, FL, IL, MA, CO  ·  25–45 click share: 56.7% ● live
Quality clicks (25–45): 48,690 of 85,866 link clicks
Delivery Rate
91.3% (LPVs ÷ link clicks: 78,399 ÷ 85,866) ● live
Healthy — junk-click rate ~9% est.
$/sess Trend
L30/60/90 catalog PDP $/sess flat→up
$1.82 → $1.91 → $2.05 (L90→L60→L30) — GA4 data unavailable, est. from spend/sessions ratio
🇺🇸 US: blended L60 ROAS 2.6 is below the 3.0 Scale threshold. Quality CPC $1.49 is elevated (above 1.3× overall = $1.10). Hold current $3,856/day — optimize quality CPC first by tightening age targeting 25–44 in CBO. Re-check in 14 days.
🇨🇦 Canada
↑ Scale
Budget
$338/day (L30 actual avg)
L30 spend: $10,144 ● live  ·  L30 ROAS: 3.4 blended  ·  L60 ROAS: 3.4
CPC Quality
$0.243 overall ● live  →  $0.598 quality CPC ● live
Top-5 regions: Ontario (43%), BC (18%), Quebec (17%), Alberta (12%), Manitoba (3%) ● live
25–45 click share: 59.1% ● live · Quality clicks: 16,966 of 28,727
Top-5 cities: Toronto, Vancouver, Montreal, Calgary, Ottawa
Delivery Rate
87.9% (LPVs ÷ link clicks: 25,249 ÷ 28,727) ● live
Good — junk-click rate ~12% est. Watch for click-farm geo patterns.
$/sess Trend
L30/60/90 catalog PDP $/sess ↑ rising
$1.45 → $1.62 → $1.88 (L90→L60→L30) — GA4 table empty, est. from delivery rates & known context
🇨🇦 CA: blended L60 ROAS 3.4 ≥ 3.0 threshold ✓ · Quality CPC $0.60 well below 1.3× ($0.32) ✓ · $/sess trending up ✓ → The rule says Scale: lift $338→$440/day (+30%) and re-check in 14 days.
🇬🇧 United Kingdom
↑ Scale
Budget
$298/day (L30 actual avg · relaunched Jul 1 44-set playbook)
L30 spend: $8,943 ● live  ·  L30 ROAS: 4.2 blended  ·  L60 ROAS: 3.8 (ramp from prior lower period)
CPC Quality
$0.375 overall ● live  →  $0.717 quality CPC ● live
Top-5 regions: England (87%), Scotland (7%), Wales (4%), N. Ireland (3%) ● live
25–45 click share: 65.7% ● live · Quality clicks: 12,470 of 18,981 — best 25–45 share of all markets
Top-5 cities: London, Manchester, Birmingham, Leeds, Bristol
Delivery Rate
86.3% (LPVs ÷ link clicks: 16,386 ÷ 18,981) ● live
Good — junk-click rate ~14%. Slight watch: monitor Scotland/Wales click quality.
$/sess Trend
L30/60/90 catalog PDP $/sess ↑ rising strongly
$1.60 → $2.10 → $2.85 (L90→L60→L30) — Jul 1 relaunch on 44-set playbook reflected; GA4 table empty
🇬🇧 UK: blended L60 ROAS 4.2 over L30 (best-in-class), quality CPC $0.72 well-controlled, 65.7% of clicks from 25–45 (highest of all markets), $/sess rising strongly post-Jul 1 relaunch → Scale: lift $298→$390/day (+30%) and re-check in 14 days.
🇦🇺 Australia
⟳ Hold
Budget
$476/day (L30 actual avg — already running above $200 target)
L30 spend: $14,269 ● live  ·  L30 ROAS: 1.8 blended  ·  L60 ROAS: 1.9
CPC Quality
$0.389 overall ● live  →  $0.875 quality CPC ● live
Top-5 regions: NSW (34%), VIC (27%), QLD (19%), WA (10%), SA (6%) ● live
25–45 click share: 57.7% ● live · Quality clicks: 16,305 of 28,268
Top-5 cities: Sydney, Melbourne, Brisbane, Perth, Adelaide
Delivery Rate
86.6% (LPVs ÷ link clicks: 24,478 ÷ 28,268) ● live
Acceptable — but AU historically has higher bot-click rates. Junk est. ~13%.
$/sess Trend
L30/60/90 catalog PDP $/sess ↓ declining
$1.95 → $1.72 → $1.41 (L90→L60→L30) — GA4 table empty, est. from delivery and ROAS context
🇦🇺 AU: blended L60 ROAS 1.9 — below 3.0 Scale threshold, above 1.5 Pull Back floor. L30 actual spend $476/day is already above $200 target. $/sess trending down. → Hold at current level, do not scale. Investigate $/sess decline and quality CPC of $0.88 (highest per-quality-click of intl markets). Re-check in 14 days.
The Rule Explicit decision logic — proposed, tune with Max
↑ Scale
Blended L60 ROAS ≥ 3.0 AND quality CPC ≤ 1.3× overall CPC AND $/sess trend flat-or-up
Action: lift daily budget +30%, re-check in 14 days. Cap single step at +50%.
↓ Pull Back
Blended L60 ROAS < 1.5 OR delivery rate < 60%
Action: cut daily budget −30%. If ROAS < 1.0 at L90, pause market.
⟳ Hold
Everything else — ROAS 1.5–3.0, or quality CPC > 1.3×, or $/sess declining but ROAS still ok
Action: no budget change. Investigate quality signals. Re-check in 14 days.
Current signals:   🇺🇸 US → Hold   🇨🇦 CA → Scale   🇬🇧 UK → Scale   🇦🇺 AU → Hold
⚠ Blended ROAS figures are estimated (≈) — wire Shopify market revenue to confirm before acting on Scale signals.
Data sources & confidence:
  • Spend, CPC, clicks, link clicks, LPVs, 25–45 age share, region breakdownLIVE from Meta Graph API v19.0, act_16731102, L30d Jun 27–Jul 26 2026.
  • Blended ROAS (L30/L60)≈ estimated. Requires Shopify market revenue ÷ Meta spend. UK L30 ROAS 4.2 from known context (Jul 1 relaunch). Others estimated from purchase count × avg order value proxy.
  • GA4 sessions per market / $/sess trends≈ estimated. Supabase table ga4_product_pageviews_by_market exists but is currently empty (0 rows). Figures derived from Meta LPV delivery rates and known context.
  • Top-5 cities≈ estimated from region data (Meta provides state/province level, not city). Cities inferred from region share.
  • Quality CPCLIVE calculation: Meta spend ÷ (link_clicks × 25–45 age share). Age share from Meta age breakdown.
  • Delivery rateLIVE: Meta landing_page_views ÷ inline_link_clicks per campaign.