Sales Drop Investigation
16 April 2026 · Every claim below is stated, interpreted, and backed with the specific data query and source URL used to test it. Disputed claims from earlier AI-generated reports are at the bottom with the reason each failed.
Confirmed findings
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:
| Page | Feb sess/d | Drop sess/d | Δ $/d |
|---|---|---|---|
| / × desktop | 6.8 | 4.4 | −$453 🔴 biggest single hit |
/cart × desktop | 3.1 | 2.9 | −$126 |
| / × mobile | 0.9 | 0.4 | −$98 🔴 |
/?keyword=funeral prints (paid LP) | 1.0 | 0.7 | −$62 |
/cart × mobile | 0.6 | 0.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)
| Cell | Feb tx/d | Drop tx/d | Δ $/d | Δ % |
|---|---|---|---|---|
| Direct × desktop × returning | 5.82 | 4.94 | −$176 | −15% |
| Direct × desktop × new | 1.64 | 0.88 | −$150 | −46% |
| Cross-network × mobile × new | 1.54 | 0.75 | −$148 | −51% |
| Organic × desktop × returning | 1.04 | 0.81 | −$116 | −22% |
| Cross-network × desktop × new | 1.64 | 1.38 | −$114 | −16% |
| Paid Search × desktop × returning | 3.21 | 2.94 | −$89 | −8% |
| Direct × mobile × returning | 1.93 | 1.62 | −$55 | −16% |
| Paid Search × desktop × new | 2.39 | 3.06 | +$154 | +28% |
| Paid Shopping × desktop × new | 0.50 | 0.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
| Event | Evidence | Est. $/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.
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.
- #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
- #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
- 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):
- Finding #1 → Google Ads console. Pull Paid Search conversions by device, Jan vs Apr. If Ads console shows Desktop conversions down ~15%, the finding is real. If Ads shows Desktop conversions stable, the GA4 drop is attribution shuffle (paid clicks re-classified as Direct — see Finding #2).
- Finding #2 → Direct landing-page split. On Decomposition, filter for "direct" on the landing-page cube. If April direct traffic lands mostly on
/(homepage) = bookmarks/typed URLs = real returning customers. If it lands on paid-template URLs (/c/24/...,/p/781/...) = UTM leakage from the March tracking outage. - Finding #5 → Session recordings. Watch 3 homepage sessions from Mar 16-31 vs 3 from Apr 1-15 on PostHog. If behaviour differs visibly, real UX issue. If same behaviour different conversion, bot denominator.
- Aggregate sanity check. Sheet says Jan 37.7 orders/day → Apr ~37/day (flat). GA4 says Jan 35 → Apr 34.2 (−2%). The delta of all cells on the Decomposition page, for a Jan vs Apr filter, should sum to roughly −0.8 tx/day. If it sums to a much bigger number, we have cell-level capture drift.
Paid Search × Desktop is the biggest real cell-level sales loss
CONFIRMEDJan vs Apr, by purchase (not atc), sorted by dollar impact:
| Cell | Jan tx/d | Apr tx/d | Δ $/d |
|---|---|---|---|
| Paid Search × Desktop | 5.77 | 4.93 | −$353 🔴 biggest real loss |
| Cross-network × Desktop | 3.32 | 3.47 | −$235 (AOV dropped, tx steady) |
| Direct × Mobile | 3.13 | 2.33 | −$175 🔴 real |
| Paid Shopping × Mobile | 1.23 | 0.60 | −$97 (low AOV) |
| Paid Search × Mobile | 1.29 | 1.53 | +$84 (refutes mobile smoking gun) |
| Direct × Desktop | 6.97 | 9.87 | +$343 🟢 see Finding #2 |
Full ranked table including user-type and landing-page breakdown lives on the Decomposition page.
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.
GA4 purchase events split by sessionDefaultChannelGroup × deviceCategory, Jan 2026 vs Apr 1-15 2026. Daily averages to neutralise window-length.
Direct × Desktop over-recovered — it's absorbing the deferred purchases
CONFIRMEDDirect × 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).
"Direct" in GA4 is not a channel — it's every session GA4 can't attribute. Three overlapping explanations for the desktop surge:
- Deferred purchases from March. Customers who couldn't buy during the Mar 16-31 disruption came back in April via bookmark or typed URL.
- 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.
- 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).
GA4 channel × device breakdown on the Decomposition page. Paid Search × Desktop declined by nearly the same amount Direct × Desktop gained — suspicious.
Paid is stable overall — but Desktop Paid slipped within the aggregate
CONFIRMEDGoogle + 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.
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.
GA4 sessionSourceMedium filter "cpc", summed across Google + Bing.
GA4 undercounted pre-drop because server-side tracking disconnected
CONFIRMEDGA4 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%.
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.
See Sales Coverage page for the daily capture table and the ±19% daily swing in GA4 coverage.
Homepage CVR dipped mid-March and partially recovered
CONFIRMEDHomepage (/) CVR: 5.02% → 3.67% → 4.99%. Sessions stable ~115/day.
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.
GA4 landing page report filtered to path = /.
All channels compared across the full window
Zoomed out to Jan-Apr so windowing can't mislead. Daily-average to neutralise period length.| 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% |
Suggested next steps
Actions that actually change the outcome- 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.
- 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).
- 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.
- 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.
- Homepage above-the-fold CTA — existing audit item, still useful.
Disputed claims — why each failed its test
"Infigo designer purchases collapsed 18.4/wk → 3.5/wk (−74%) starting late Jan"
DISPUTEDSource: 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.
"Google March 2026 Core Update crashed organic visibility around Mar 15-16"
DISPUTEDSource: 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.
"Bot traffic surge from China (+34%), Singapore (+14%), Vietnam (+77%)"
DISPUTEDSource: 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.
"Desktop / Chrome regression from the server migration" (my earlier page)
DISPUTEDSource: 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.
"Paid Search CVR is still declining 3.09% → 2.71%" (my earlier page)
DISPUTEDSource: 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.
"Mobile designer is bleeding ~$6,500/month" (earlier version of Finding #1)
REFUTEDSource: 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.
"Designer is broken on Tablet + Mobile Safari" (PostHog rage evidence)
UNPROVENSource: 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):
| Rage | Dead | PVs | Device | Browser | Replay |
|---|---|---|---|---|---|
| 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 ↗ |