Plan · 2026-05-11
The Dec 2024 GA4 implementation delivered a pageview-only foundation and then froze. Build out the missing conversion events, rotate ownership off a departed consultant, close a HIPAA consent gap, and fix six storefront bugs surfaced during the audit. Kyle + Claude pair-program through it; no consultant.
purchase configured, never firesDecember 2024: AdvancedRx (engagement coordinated by Sarah Lee, Director of Tech) paid Measure Marketing Pro $2,550 for a server-side GA4 implementation. The accepted scope explicitly struck out e-commerce events and lead-form events. Brady (the consultant from Measure Marketing Pro) delivered what he was paid to build — a HIPAA-compliant pageview foundation via Stape sGTM — and walked away in February 2025. No conversion events have fired since.
analytics@measuremarketing.pro and silently forwards
offline conversion data to Brady's agency Google Ads account.
AdvancedRx has zero Google Ads spend — this pipeline writes to a
destination Kyle does not control. Disconnect is urgent (Track A.1).
Brady's technical execution was correct for the slim scope. The infrastructure is textbook dual-container server-side GTM with PHI scrubbing and a signed BAA. The gap is everything after page_view.
GA4 - Config tag fires on every page306115267
What's missing:
any LWC-side dataLayer.push() call. The
container is configured to forward conversion events; no LWC ever
pushes one. Zero of 17 customer-facing storefront LWCs have analytics
instrumentation today.
From the GA4 Pages and Screens report — active users over the last 28 days. Two big drops jump out; one of them happens entirely inside a modal that produces no pageview signal.
b2bLoginCodeComponent catches errors and shows a toast
with no redirect, no page change, no event. The 16% includes users who
never tried, retried once and walked away, retried five times, or
clicked Resend. Custom login events split them.
/my-home — no URL
change, no pageviews, no signal for any of its 5 steps. Patients who
started the wizard but abandoned mid-flow produce no GA4 evidence.
Custom wizard events (one per screen) crack this open.
The instrumentation audit incidentally uncovered six bugs across pricing, attribution, login, payment failure, consent, and schema. Two are revenue-affecting, one is an active data leak (already covered in §1 callout), one is HIPAA-adjacent.
UnitPrice from
Standard Price Book (4,198 entries) instead of the
storefront's Advanced RX Store Price Book (949
entries). If the two diverge for any product, customers added via
wizard are charged the wrong amount.
Prescription_Link__c,
RefillId__c, or Sig__c on the CartItem.
The parallel invocable method does. Wizard-added items lose Rx
attribution at the CartItem level.
Profile.Name = 'Advanced RX Customer Community Plus Login
User'. Users on the other two community profiles can never log in —
they see "No unique user found" every attempt.
convertCartToOrder catch throws without refunding. If
anything fails after the AuthorizeNet charge succeeds, the
customer pays but no Order exists. Helpdesk has been receiving
fault emails — query B2B_Custom_Exception__c for
historical occurrences.
Magic_Link_Auth_Event__c when that ships.
The work splits cleanly along three independent tracks. Different urgencies, different stakeholders, different cost profiles. Track A can ship this week with no consultant; Track B is the bulk of the dev work; Track C runs as separate tickets.
dataLayer.push() insertions in existing LWCs — one
push per moment we want to measure. Only one Apex piece
(server-side purchase) needs real engineering.
Not analyst work — LWC editing guided by Claude.
Ranked by analytical lift per hour invested. Login funnel events (rank 1) are 12 single-line pushes across two LWCs — the cheapest, sharpest diagnostic in the entire plan.
Walking the refill funnel stage-by-stage. Each row maps a customer journey moment to whether GA4 sees it today (left) and whether it would see it after the corresponding Track B phase ships (right). Green pills are reportable in GA4 funnel reports; amber pills are partial signal; gray pills are dark today.
The point of all the events isn't the events — it's the questions you can answer about real customer behavior. Six examples below; each is unanswerable today and becomes a one-query report in GA4 once Track B ships.
/passwordless-challenge to /my-home is a
black box — could be email-never-arrived, code-typed-wrong,
code-expired, or walked-away.
login_code_submitted, login_code_failed,
login_code_resend_requested, and
login_success. You see exactly which failure mode
dominates.
/my-home — no pageviews fire for individual
steps. The 62% drop from /my-home to
/cart
mixes wizard-abandoners with users who never opened it.
refill_wizard_step_1_viewed...step_5_viewed)
gives a step-by-step funnel report. You see exact drop per step.
purchase event carries items[] with
Product2 IDs + family + prices. GA4 "Top selling items" report
works natively. Slice by source, cohort, time.
refill_wizard_start ÷ /my-home
pageviews. Tells you whether the friction is at "find the wizard"
or "complete the wizard."
/cart pageviews and
orders, but the ratio is noisy (empty-cart redirects, failed adds
that never redirect). No per-step visibility inside checkout.
add_to_cart →
begin_checkout → add_shipping_info →
add_payment_info → purchase. Five-stage
funnel with clean drop-off at every step.
Track A ships this week with no consultant, parallel to magic-link prereq work. Sprints 1–3 ship Track B in dependency order, Kyle pair-programming with Claude. Track C tickets run alongside. Each sprint is ~10 hours of focused effort spread across 2 weeks of calendar time — evening/weekend shape, not heads-down full days.
view_item, view_item_list,
add_to_cart, begin_checkout,
add_shipping_info, add_payment_info,
client-side purchase (~6-10 hrs). Kyle + Claude.
purchase from
convertCartToOrder (~10-15 hrs — the only substantial
Apex piece). Bug #4 fix (refund logic). Bug #5 (consent) counsel
review starts in parallel. Kyle + Claude.
The findings throughout this plan come from a multi-console audit conducted 2026-05-11, plus a thorough read of every storefront-facing LWC and the cart-to-order Apex conversion path.
GTM-N8C8PCKJ — 2 tags, 1 trigger, 4
variables, 4 versions, last published 2026-02-26
GTM-5NWGFT4G — 1 client (GA4), 1
trigger, 1 tag
mzldlvji — Pro tier $20/mo, 4
Power-Ups, 3 Connections — all signed in as
analytics@measuremarketing.pro
306115267 — 12K active users / 7d, 1 Key
Event configured, 0 firing
b2bCheckoutPayment →
processPayments → AuthorizeNet →
convertCartToOrder →
B2B_Cart_To_Order flow → OrderSummary +
OrderPaymentSummary + OrderPayment__c
B2BCustomLoginHelper →
B2BCustomLoginHandler →
UserManagement.initPasswordlessLogin /
verifyPasswordlessLogin
JBSystemFlow_Refill_Reminder_c confirms
Refill_Reminder__c.Id is sent to SFMC as
SalesforceObjectId
Three decisions for Kyle this week, before any execution starts.