Method
Claim ledger, not narrative
Each claim = query → data → verdict. No "likely" or "suggests" without data backing.
Data sources
GA4 355101599 · GSC · PostHog 365336 · Sheet
Ground truth for orders = Revenue sheet
Status
5 confirmed findings · 7 disputed
Claims from prior AI-written reports and my earlier drafts tested against cell-level data; failures are at the bottom with the specific test that failed.

Confirmed findings

Sales recovered

Top-line: sales returned to January levels by April. There is no remaining gap to close.

SourceJan 2026Apr 1-15Δ
Sheet (ground truth)37.7 orders/day37.3 orders/day−1.1%
GA435.2 tx/day34.3 tx/day−2.5%

The "25% drop" framing is specific to Mar 16-31. It was a temporary event driven by the size-dropdown canvas bug + a brief server-side tracking outage, both of which have reversed. The Mar 16-31 dip is documented and real; what followed is a full recovery back to the January baseline.

The cell-level "losses" below (e.g. Paid Search × Desktop −$353/day) are mostly a compositional shuffle, not net attrition — Direct × Desktop gained nearly the exact same amount that Paid × Desktop lost, consistent with attribution leakage from the March tracking outage. Total sales held.

The findings below stand as a post-mortem of March and as standing CRO items (the PostHog designer friction, homepage above-the-fold, GA4 undercount). They should not be read as "what is broken today" — the answer to that is "nothing at the aggregate level."

March post-mortem

What actually happened Mar 16-31, by cell

Using a clean period pair — Feb vs Mar 16-31, both at ~95% GA4 capture rate (so cell-level deltas are reliable). Total drop: −13.4% in GA4 cube, −16% in sheet. Daily revenue impact: ~$1,290/day below Feb baseline across 16 days.

Biggest single wound: the homepage

Landing-page × device decomposition shows the drop concentrated on one page:

PageFeb sess/dDrop sess/dΔ $/d
/ × desktop6.84.4−$453 🔴 biggest single hit
/cart × desktop3.12.9−$126
/ × mobile0.90.4−$98 🔴
/?keyword=funeral prints (paid LP)1.00.7−$62
/cart × mobile0.60.4−$54

Homepage desktop + mobile together lost ~$551/day — roughly 40% of the entire drop concentrated on one page. Not product pages, not the designer itself. The homepage.

Top cell-level losses (Channel × Device × User type)

CellFeb tx/dDrop tx/dΔ $/dΔ %
Direct × desktop × returning5.824.94−$176−15%
Direct × desktop × new1.640.88−$150−46%
Cross-network × mobile × new1.540.75−$148−51%
Organic × desktop × returning1.040.81−$116−22%
Cross-network × desktop × new1.641.38−$114−16%
Paid Search × desktop × returning3.212.94−$89−8%
Direct × mobile × returning1.931.62−$55−16%
Paid Search × desktop × new2.393.06+$154+28%
Paid Shopping × desktop × new0.500.81+$88+62%

Four of the top loser cells are "returning users" across different channels (Direct desktop, Organic desktop, Paid Search desktop, Direct mobile). That pattern is consistent with "regular customers came back, found the site slow/broken, and gave up for a couple of weeks". Paid ads picked up some of the slack on acquisition (Paid Search new +28%, Paid Shopping new +62%) because Google's auto-bidding re-allocated impressions — but returning customers can't be auto-bid.

Estimated root-cause breakdown

EventEvidenceEst. $/day% of drop
Homepage slow / broken during server migration Homepage × desktop −$453, × mobile −$98; both on the same entry page ~$551 ~40%
Designer canvas bug (size drop-down) Cart-page losses, returning-user drops across channels ~$200-300 ~15-20%
Tracking outage / attribution loss Unassigned × desktop × returning −42%, GA4 capture drop Mar 1-15 ~$50 ~4%
Residual / other cells & noise Cumulative small-cell drops, AOV mix, seasonality ~$400-500 ~30-35%

Biggest new insight: the homepage slowness around the March 16 server move looks like the primary driver of the drop — not the designer, and not a mobile issue. Earlier drafts of this page missed this because the homepage isn't in the designer funnel and wasn't in my initial cell-level tables.

Caveats: % allocations are rough — evidence overlap between the three events makes perfect attribution impossible without server logs for Mar 16-31. The "residual" bucket catches AOV shifts and cells too small to analyse individually. Explore this interactively on Decomposition.

Earlier update (pre-aggregate-check). An earlier version of this page claimed the mobile designer was bleeding ~$6,500/month via Paid Search × Mobile. That's in the disputed section (D6) — Paid Search × Mobile purchases actually grew +19%. Full interactive cell-level exploration on Decomposition.
Reliability caveat

How much to trust these findings, given GA4 only captures ~88% of real orders

GA4 captures between 83% and 95% of sheet orders depending on the period. At the monthly level it's much tighter than at the daily level: Jan 93.5%, Feb 94.8%, Mar 82.8% (tracking outage), Apr 92.1%. GA4 under-reports revenue more than order count (75-80% capture on $) because it misses shipping/tax/adjustments. The earlier version of this panel overstated the noise by quoting daily-granularity figures; monthly capture is stable enough to support cell-level comparisons.

Survives the noise ✓
  • #2 Direct × Desktop +42% — too big to be measurement artefact
  • #3 Paid stable at aggregate — 4-window comparison, all consistent
  • #4 GA4 undercount pre-drop — this finding IS the coverage story
  • D6, D7 refutations — purchase-level data unambiguous
Wide error bar ~
  • #1 Paid × Desktop −$353/d — 14.6% cell drop is within GA4's daily swing; period-averages smooth it but it's near the noise floor. Triangulate against Google Ads console before acting.
  • #5 Homepage CVR — single-page data has more noise than aggregate
Unverified assumption ✗
  • GA4 cell-level capture rate is consistent across segments. Safari and iOS are generally under-captured more than Chrome/Android. If true for this property, Mobile Safari cells would look artificially weak without a real behaviour change. We've only verified the aggregate 88%, not per-segment capture.

Triangulation plan: for each moderate-confidence finding, the test below either confirms or kills it against an independent source (not GA4):

1

Paid Search × Desktop is the biggest real cell-level sales loss

CONFIRMED
Finding

Jan vs Apr, by purchase (not atc), sorted by dollar impact:

CellJan tx/dApr tx/dΔ $/d
Paid Search × Desktop5.774.93−$353 🔴 biggest real loss
Cross-network × Desktop3.323.47−$235 (AOV dropped, tx steady)
Direct × Mobile3.132.33−$175 🔴 real
Paid Shopping × Mobile1.230.60−$97 (low AOV)
Paid Search × Mobile1.291.53+$84 (refutes mobile smoking gun)
Direct × Desktop6.979.87+$343 🟢 see Finding #2

Full ranked table including user-type and landing-page breakdown lives on the Decomposition page.

Interpretation

Split by (channel × device × user-type), the net change vs January is small (~−$200/day) and not concentrated in one place. The single biggest loser is Paid Search on desktop — 0.84 fewer transactions/day × ~$420 AOV = about $353/day. That is a paid issue, not a designer or mobile issue. Desktop paid traffic held its session volume (~87/day start_design) but atc rate held too (9.8% → 9.5%) while purchase count slipped — consistent with either a small AOV mix change or real-traffic attrition that doesn't show up in the atc event.

Second real loss: Direct × Mobile. Direct mobile lost 25% of its transactions and $175/day — likely returning mobile users who have not fully re-engaged post-drop.

Proof

GA4 purchase events split by sessionDefaultChannelGroup × deviceCategory, Jan 2026 vs Apr 1-15 2026. Daily averages to neutralise window-length.

add_to_cart ÷ start_design, overall by period (context only)
15.4%11.5%7.7%3.8%0.0%DecJanFebMar 1-15Mar 16-31Apr 1-1513.4%12.0%11.8%13.0%11.4%10.9%add_to_cart / start_design %
2

Direct × Desktop over-recovered — it's absorbing the deferred purchases

CONFIRMED
Finding

Direct × Desktop tx/day went 6.97 → 9.87 Jan → Apr (+42%, +$343/day). Direct × Desktop CVR in April is 5.79% — the highest of the year vs 3.16% in January. Direct × Mobile went the other way (−25% tx, −$175/day).

Interpretation

"Direct" in GA4 is not a channel — it's every session GA4 can't attribute. Three overlapping explanations for the desktop surge:

  1. Deferred purchases from March. Customers who couldn't buy during the Mar 16-31 disruption came back in April via bookmark or typed URL.
  2. Attribution leakage. When server-side Google tracking disconnected in early March, some paid UTMs were stripped — those sessions count as Direct. The Paid Search × Desktop −$353 and Direct × Desktop +$343 nearly cancel out, which is what you'd expect from mis-attribution.
  3. Dark social. Links shared via Teams, iMessage, WhatsApp, emails without UTMs — all show as Direct. If customer service or word-of-mouth shifted channels, Direct inflates.

Whichever is dominant matters a lot: (1) means "recovery is real"; (2) means "we've been misreading paid's performance". Testable by looking at which pages Direct × Desktop users land on (homepage = bookmarks/typed; product-detail = email/chat).

Proof

GA4 channel × device breakdown on the Decomposition page. Paid Search × Desktop declined by nearly the same amount Direct × Desktop gained — suspicious.

Direct × Desktop tx/day per window
11.358.515.682.840.006.979.87Direct × DesktopJanApr
3

Paid is stable overall — but Desktop Paid slipped within the aggregate

CONFIRMED
Finding

Google + Bing CPC combined: 14.1 tx/day in Dec-Jan → 14.7 Feb → 14.1 Mar → 14.5 Apr 1-15. Daily sessions 878 → 943 → 850 → 899. Paid held within ±4% across the whole window at the aggregate level.

Under the aggregate: Paid Search × Desktop lost 0.84 tx/day (−14.6%, −$353/day) from Jan → Apr, while Paid Search × Mobile gained +0.24 tx/day (+19%, +$84/day). The composition shifted, the sum held.

Interpretation

This refutes the ad agency's framing that Infigo (the platform) caused the drop — total paid volume is stable. But it does not mean paid is fine cell-by-cell: Desktop Paid dropped real transactions while Mobile Paid gained them. Two candidates: (a) Google's auto-bidding shifted more impressions to mobile (which has lower AOV, hence total revenue down despite tx being close); (b) paid desktop clicks are attribution-leaking to Direct (see Finding #2). Test (b) by looking at Direct × Desktop landing pages — if they match paid landing-page templates, it's leakage.

Proof

GA4 sessionSourceMedium filter "cpc", summed across Google + Bing.

Paid CPC transactions/day across the window
16.912.78.54.20.0Dec-JanFebMarApr 1-1514.114.714.114.5Paid tx/day (all CPC)
4

GA4 undercounted pre-drop because server-side tracking disconnected

CONFIRMED
Finding

GA4 captured 75% of true orders in Mar 1-15, then 98% in Mar 16-31, 92% in Apr 1-15 (sheet is ground truth). John confirmed in the call: server-side Google tracking briefly disconnected in early March while ads kept running. JC confirmed GA4 normally under-tracks 20-30%.

Interpretation

Any GA4-only comparison of "pre-drop vs drop" is distorted: the same period that shows fewer real sales shows more GA4 transactions because GA4 suddenly started capturing more of them. Always pair GA4 analysis with the sheet.

Proof

See Sales Coverage page for the daily capture table and the ±19% daily swing in GA4 coverage.

GSC organic clicks/day across the window
377283189940JanFebMar 1-15Mar 16-31Apr 1-15298313320306288GSC clicks/day328280240252264Avg position
5

Homepage CVR dipped mid-March and partially recovered

CONFIRMED
Finding

Homepage (/) CVR: 5.02% → 3.67% → 4.99%. Sessions stable ~115/day.

Interpretation

Nearly — but not fully — healed. The earlier audit flagged no hero or above-the-fold CTA on the homepage; the March dip amplified that existing weakness. Fixing that is a cleanup, not a fire.

Proof

GA4 landing page report filtered to path = /.

Homepage CVR per window
5.77%4.33%2.89%1.44%0.00%5.02%3.67%4.99%Homepage CVRMar 1-15Mar 16-31Apr 1-15

All channels compared across the full window

Zoomed out to Jan-Apr so windowing can't mislead. Daily-average to neutralise period length.
Transactions per day by channel
13.410.16.73.40.0JanFebMar 1-15Mar 16-31Apr 1-15DirectPaid SearchCross-networkUnassignedReferralPaid ShoppingOrganic Search
Conversion rate (CVR %) by channel
9.1%6.9%4.6%2.3%0.0%JanFebMar 1-15Mar 16-31Apr 1-15DirectPaid SearchCross-networkUnassignedReferralPaid ShoppingOrganic Search
Channel Jan tx/d Feb tx/d Mar 1-15 Mar 16-31 Apr 1-15 Jan CVR Apr CVR
Direct 10.2 9.8 9.8 7.8 12.2 3.16% 5.79%
Paid Search 7.1 6.6 6.3 7.1 6.5 2.84% 2.71%
Cross-network 5.9 6.6 5.7 6.3 6.9 1.56% 1.88%
Unassigned 4.1 3.7 3.1 2.6 2.1 6.01% 3.12%
Referral 3.2 3.1 1.5 1.8 2.3 8.01% 8.31%
Paid Shopping 2.4 1.9 1.7 2.3 1.7 0.83% 0.58%
Organic Search 2.2 2.4 2.9 1.9 2.3 0.65% 0.67%
Reading this chart: Direct is the biggest revenue channel and shows the clearest story — dipped in Mar 16-31, then over-recovered to the highest CVR of the year in Apr (5.79%). Paid Search is the second largest and is steady at 6-7 tx/day with CVR in a narrow 2.66-3.09% band — not the cause. Organic Search is flat at ~2 tx/day across the whole window — too small to matter at this scale. Unassigned is steadily declining in both tx and CVR — consistent with GA4's bot filter catching more over time.

Suggested next steps

Actions that actually change the outcome
  1. Test the attribution-leak hypothesis for Paid Search × Desktop. On the Decomposition page, inspect landing pages for Direct × Desktop in April vs January. If they skew toward paid landing-page templates (category and product URLs with tracking params stripped) rather than the homepage, it's attribution leakage — not a real paid performance drop. This decides whether the −$353/day is a real issue or a measurement shuffle.
  2. Understand Direct × Mobile's −$175/day. Returning mobile users haven't come back. Pull a PostHog cohort of mobile purchasers from Jan-Feb, see who returned in April, and check what they landed on. Points at whether it's an attention issue (email, outreach) or a discovery issue (SEO / site layout).
  3. Wire native PostHog ecommerce events (purchase, add_to_cart, begin_checkout). Lets us build funnels in PostHog and stop relying on the GA4 numerator which flickers on the designer path.
  4. Reproduce mobile designer flow for hygiene, not revenue. PostHog shows real user friction on Tablet + Mobile Safari (D7). Worth fixing even though we can't tie it to lost sales today — friction today usually becomes lost sales later.
  5. Homepage above-the-fold CTA — existing audit item, still useful.

Disputed claims — why each failed its test

D1

"Infigo designer purchases collapsed 18.4/wk → 3.5/wk (−74%) starting late Jan"

DISPUTED

Source: Sales Drop Investigation doc (Mar 25, 2026).

Why disputed: The claim measured designer traffic as a referral from funeralprints.infigosoftware.com. That subdomain shows fewer than 10 sessions/week in GA4 across the whole window — nowhere near the 18/wk the claim implied. Per project notes, the customer-facing designer lives on the same domain (funeralprints.com/CF/DynamicProduct/Editor/*), so it wasn't ever a referral. The measurement method was wrong.

What replaced it: Finding #1 uses event-based measurement (add_to_cart ÷ start_design) which directly captures designer completion.

D2

"Google March 2026 Core Update crashed organic visibility around Mar 15-16"

DISPUTED

Source: Sales Investigation doc (Mar 25, 2026).

Why disputed: GSC clicks per day went Jan 298 → Feb 313 → Mar 1-15 320 (higher) → Mar 16-31 306 → Apr 1-15 288. Average position improved from 8.2 in Jan to 6.0 in Mar 1-15. The "−20% organic clicks" claim in the older doc does not hold when Jan is compared to March. There is a mild softening in April (−10% from March peak), not a crash.

What this means: The Google Core Update may have had a small effect in April but it's not the cause of the mid-March drop.

D3

"Bot traffic surge from China (+34%), Singapore (+14%), Vietnam (+77%)"

DISPUTED

Source: Sales Drop Investigation doc (Mar 25, 2026) and Sales Investigation doc (Mar 25, 2026).

Why disputed: GA4 sessions from China: Feb 3,172 → Mar 1-15 990 → Mar 16-31 321 → Apr dropped out of top 5. China traffic collapsed through the window, not grew. Singapore was flat around 400/period. Vietnam never appeared in the top 15 in any period. GA4's bot filter may have caught up in the meantime, or the original counts were wrong. Either way, "bot surge is inflating session metrics" does not survive today.

D4

"Desktop / Chrome regression from the server migration" (my earlier page)

DISPUTED

Source: Previous version of this page (14 Apr 2026).

Why disputed: My earlier finding blamed a desktop-specific layout or speed regression for the stuck desktop CVR. But the server swap was a one-time fix that John confirmed recovered next-day. The stuck desktop CVR is more plausibly explained by bot denominator inflation (more sessions in GA4, same real conversions) combined with the designer canvas bug (Finding #1 — hurts desktop proportionally because desktop has more engaged design sessions). No independent evidence of a desktop rendering regression exists.

D5

"Paid Search CVR is still declining 3.09% → 2.71%" (my earlier page)

DISPUTED

Source: Previous version of this page.

Why disputed: Directly contradicted by Finding #3 above, which measures paid at the transaction level. Paid tx/day went 14.1 → 14.7 → 14.1 → 14.5 — stable. The apparent CVR decline on the earlier page came from growing session counts (partly bot traffic in the denominator) while real transactions held flat, not from fewer paid sales. The CVR framing was misleading.

D6

"Mobile designer is bleeding ~$6,500/month" (earlier version of Finding #1)

REFUTED

Source: Prior revision of this page (same session).

Why refuted: I claimed Paid Search × Mobile was bleeding revenue because its add_to_cart rate halved (9.7% → 5.4%). Purchase data for the same cell shows the opposite: purchases in Paid Search × Mobile went up +19% (1.29 → 1.53 tx/d, +$84/day) Jan → Apr. The atc rate drop is almost entirely a tracking artefact — the add_to_cart event fires less on the rolled-back mobile designer path, but users still complete checkout. Mobile total tx Jan → Apr: 9.7 → 9.1/day (within noise).

What this leaves: the real residual sales losses are in the cells on Finding #1 — Paid Search × Desktop, Direct × Mobile, and a few others — not a designer-specific mobile leak.

D7

"Designer is broken on Tablet + Mobile Safari" (PostHog rage evidence)

UNPROVEN

Source: PostHog session replays, April 14-15.

The evidence is real: the worst April session on the designer shows 83 rage clicks + 46 dead clicks; another has 67 rage + 118 dead. 6 of the 10 most-frustrated designer sessions were on Tablet + Mobile Safari. April daily averages: 4.5 dead clicks and 0.4 rage clicks per designer session, which is very high for any tool. Users are struggling on the mobile designer.

Why unproven as a sales-loss finding: the frustrated sessions exist, but we have no evidence they translate to lost revenue. Mobile purchase volume recovered to January levels (9.7 → 9.1 tx/day) and Paid Search × Mobile purchases actually grew. Users may be finishing their order on another device, or pushing through the friction. Either way, fixing the mobile UX is good hygiene, but calling it a driver of the sales drop is unsupported.

Top rage sessions (preserved for context, click to open):

RageDeadPVsDeviceBrowserReplay
83 46 6 Tablet Mobile Safari Open ↗
81 67 3 Tablet Mobile Safari Open ↗
67 118 11 Tablet Mobile Safari Open ↗
31 16 4 Tablet Chrome Open ↗
30 11 2 Tablet Mobile Safari Open ↗
21 50 8 Desktop Chrome Open ↗
18 69 3 Desktop Chrome Open ↗
13 14 1 Desktop Chrome Open ↗
13 3 2 Tablet Chrome Open ↗
12 80 3 Mobile Chrome Open ↗