control tower / journal
Journal
engine connected
Proposed -- needs human approval

This tower does not push to git. To approve, a human makes this exact edit and commits it:

1. Open docs/marketing/journal/002-capi-direct-from-backend-sgtm-deferred.md in the docs repo.
2. Change the line "- **Status:** proposed" to "- **Status:** active".
3. Commit and push. The journal's git history is the audit trail; this tower does not commit on your behalf.

002: Conversion feeds go direct from the backend; sGTM deferred to phase 2

  • Date: 2026-08-30
  • Decider: engine proposal (Claude, from the v1 build plan), pending Daud approval
  • Status: proposed
  • Review by: 2026-10-15

Decision

Meta CAPI and Google Enhanced Conversions are fed directly from the modules/growth Stripe webhook handler, not through a server-side GTM container. sGTM (Stape, first-party subdomain) is planned but deferred until GA4 server events or a third ad channel need it. The full sGTM design stays in docs/marketing/specs/measurement-spine.md so phase 2 is a lift, not a rethink.

Evidence

  • Server-side conversion capture recovers an estimated 20-30 percent of events lost to ad blockers/ITP/iOS versus browser-only tracking (docs/research/marketing/measurement.md:34; browser-only tracking misses 30-60 percent per google-youtube.md:54).
  • The site currently fires zero ecommerce events client-side and has no Meta pixel (recon: checkout has no analytics calls; the one view_item call is a no-op stub). There is nothing to migrate and nothing to dedupe against; a direct server feed is the shortest correct path.
  • Google retired the Ads API upload path for offline/enhanced conversions on 2026-06-15; new pipelines must use the Data Manager API (measurement.md:43).
  • sGTM's value (CLS/TBT wins from moving client tags server-side) applies when client tags exist to move; today only the GTM container itself is client-side.

Predicted effect

Meta and Google receive purchase conversions keyed on real Stripe charges with hashed-PII match data, at greater than 90 percent coverage of successful payments (measured against growth.conversion_log vs Stripe charge counts over the same window), within 2 weeks of credentials.

Measured effect

(pending)