control tower
Overview
engine connected
Engine statusGET /api/growth/admin/status
Conversions: dry-runLifecycle: dry-runDigest: dry-run
Config presence
– Meta CAPI– Google Ads– Digest recipients✓ Site base URL✓ API base URL
Row counts
TableRows
growth.conversion_log0
growth.subscribers0
growth.checkout_sessions0
growth.lifecycle_sends0
growth.ad_insights_daily0
growth.decay_snapshots0
Registered jobs
  • process-conversion
  • growth-weekly-digest
  • growth-abandoned-checkout
  • growth-welcome-series
  • growth-lifecycle-sends
  • growth-ads-insights-pull
Activation checklistderived from live state
✓Growth admin API reachable (GROWTH_API_BASE + GROWTH_ADMIN_TOKEN correct)
Meta CAPI credentials set (GROWTH_META_ACCESS_TOKEN, GROWTH_META_DATASET_ID)
Google Ads conversion credentials set (reserved, dry-run-only in v1 regardless)
Digest recipients configured (GROWTH_DIGEST_RECIPIENTS)
✓Site base URL set (GROWTH_SITE_BASE_URL)
✓API base URL set (GROWTH_API_BASE_URL)
Conversions dry-run turned off for live sends
Lifecycle sends dry-run turned off for live sends
Digest delivery dry-run turned off
Hard rulesnon-negotiable, every screen
floorExploration/brand spend share never drops below 15%(EXPLORATION_FLOOR, not env-configurable, not learnable -- a blueprint-level decision).
gatev1 is read-first: this tower monitors and its only mutation is its own annotations. Spend changes and campaign mutations stay in the gated seesight-ads CLI tools.
truth● booking-truth (Stripe/growth) renders primary. ● platform-claimed numbers, when they arrive, are always labeled as such and never blended in.
PIIThe growth admin API masks emails server-side before this tower ever sees them. Nothing here receives full addresses, tokens, or secrets.