Systems & Data

GTM Systems Architecture

How I design the revenue stack: one object model, one source of truth per metric, and governed flow between CRM, product, billing, and BI. Below is the reference architecture I implement, the governance that keeps it trustworthy, and what I fix in the first 90 days.

Reference architecture

  SOURCES                  SYSTEM OF RECORD            ANALYTICS / ACTIVATION

  Website / Ads ─┐
  Content / SEO ─┤──▶  Marketing Automation ─┐
  Events        ─┘      (leads, campaigns)   │
                                             ├──▶  CRM  ──┐
  Product signup ────▶  Product Analytics ───┤  (accounts, │
  Usage / activation     (events, PQL score) │   opps,     │
                                             │   contacts) │
  Sales activity ────▶  Engagement Tools ────┘             │
  (email, calls)                                           │
                                                           ▼
                        Billing / Subscriptions  ──▶   Warehouse
                        (invoices, MRR, churn)         (modeled tables:
                                                        arr_daily, pipeline_snapshot,
                                                        rep_capacity, funnel_stage)
                                                           │
                          ┌────────────────────────────────┼────────────────────────┐
                          ▼                                ▼                        ▼
                    BI / Dashboards              Forecast & Planning        Reverse ETL
                    (GTM console, board)         (capacity, scenarios)      (scores back to CRM)
      

Principle: data flows one direction into the warehouse, and only modeled tables flow back out. No tool reads another tool's raw objects.

Object model

Account

The durable spine. Hierarchy for parent/child, firmographics, segment, and owner. Everything else hangs off it — never off a contact.

Opportunity

One record per revenue event: new, expansion, renewal. Type is mandatory so NRR is computable without manual tagging.

Subscription

Billing truth for ARR. Opportunities forecast it; subscriptions confirm it. Variance between the two is a monitored data-quality metric.

Product account

Self-serve identity joined to the CRM account. Carries activation state and usage so PLG and enterprise share one funnel.

Person

Lead and contact unified. Lifecycle stage lives here; buying-committee role is a relationship to the opportunity, not a field on the person.

Activity

Normalized touch log across email, calls, meetings, and product events — the input to coverage, hygiene scoring, and attribution.

Lifecycle and stage gates

StageEntry criterion (objective)Owner
01 SignalInbound form, signup, or target-account intent recordedMarketing
02 QualifiedFit + activation threshold met (PQL) or discovery bookedMarketing / SDR
03 ValidatedProblem, metric, and economic buyer confirmed in writingAE
04 ProvenTechnical validation or pilot success criteria metAE + SE
05 CommittedMutual action plan with dated signature step; pricing approvedAE
06 ClosedSigned order form; subscription record createdDeal desk

Every gate is evidence-based, not opinion-based. A stage cannot advance without its field populated — which is what makes the forecast model defensible.

Data governance

One owner per metric

Each metric has a named owner, a defined formula, and a single source table. Disputes are resolved by the dictionary, not by the loudest dashboard.

Required-field enforcement at the gate

Validation fires on stage change, not on save — capture stays fast, data stays complete where it matters.

Automated hygiene scoring

Nightly job scores every open opportunity on close-date realism, activity recency, and missing evidence; scores are written back to the CRM and surfaced in pipeline reviews.

Change control

Field and picklist changes go through a weekly review with a deprecation path. No silent schema drift ahead of quarter close.

Metric dictionary (extract)

MetricDefinitionSource of truthCommon miscalculation
ARR Annualized value of active subscriptions at period end Billing → arr_daily Counting signed-but-unbilled opps, or including one-time services
NRR ARR from prior-period cohort today ÷ ARR at cohort start Billing cohort table Including new logos in the numerator, inflating the result
Pipeline coverage Open pipeline closing in period ÷ remaining quota pipeline_snapshot Using total open pipeline regardless of close date
CAC payback Blended S&M spend ÷ new ARR gross margin, in months Finance + billing Excluding partially-loaded headcount or expansion spend
Win rate Closed-won ÷ (closed-won + closed-lost), by cohort of creation CRM opportunity Measuring by close date, which flatters slow-moving losses
Activation rate Self-serve accounts reaching the value event within 14 days Product analytics Counting signups instead of distinct product accounts

First 90 days

  1. Days 1–30 — Establish truth. Audit the object model, publish the metric dictionary, and reconcile CRM-reported ARR against billing. Freeze conflicting dashboards.
  2. Days 31–60 — Instrument the funnel. Rebuild stage gates with objective criteria, land the warehouse models, and stand up pipeline-coverage and capacity reporting the exec team actually uses.
  3. Days 61–90 — Make it predictive. Launch the forecast cadence with scenario ranges, ship hygiene scoring back into the CRM, and set the deal-desk approval matrix so pricing exceptions stop being ad hoc.