Marketing
Marketing Setup & Runbook
Single-pane checklist for launching paid acquisition and keeping the operations stack healthy.
Setup Progress
Checking configuration...
Operational dashboards
Stage-by-stage drop-off, real-time event stream
Sticky-bucket variant assignment + results
Revenue by UTM source, medium, campaign
Search Console queries + ranking opportunities
Logo, colors, preview + send-test for 12 templates
Compose UTM-tagged links for every channel
Every incoming URL with utm_* / gclid / fbclid is captured into a session cookie and stamped on every booking row, so attribution survives across page loads and the Stripe redirect.
The cookie banner uses Google Consent Mode v2 defaults set to denied before GTM loads. GA4 then runs in cookieless mode until the user accepts. The Meta Pixel is loaded with fbq('consent','revoke') and never auto-fires PageView; cookie-consent.tsx grants consent and fires PageView on accept.
Build tagged URLs in the campaign manager:
/marketing/campaignsPaste your IDs in Settings → Analytics. The site reads them from the public /api/analytics-config endpoint and injects scripts at runtime.
Conversion events fire automatically via apps/web/src/lib/track.ts — you do not need to configure tags inside GTM:
- · Tour detail →
view_item+ViewContent - · Booking submit →
begin_checkout+InitiateCheckout - · Confirmation page →
purchase+Purchase(with bookingRef as MetaeventIDfor cross-load dedup)
Verify in GA4 Realtime + Meta Events Manager → Test Events. Conversion events appear within seconds of triggering them on a real page.