ALArchie Lyon
Revenue Systems Architecture

How a revenue stack fits together

Revenue systems architecture is the design of how every go-to-market tool shares data — so sales, customer success, finance and leadership work from one connected picture of the customer. Below is a real life example of the architecture I've set up for a B2B SaaS company. Click any system to see what it does.
Native integrationn8n automationBatch ETL into datalake
Drag to pan · pinch or use controls to zoom

Company names, people, internal property names and data volumes are left out. Stripe, Lusha and product-usage connections show the usual setup and are marked as assumed.

Five layers

A B2B SaaS go-to-market stack in five layers: prospecting and enrichment, engagement, systems of record, an automation layer that connects them, and a central data lake for reporting.

01
Prospecting & enrichment

Clay, Lusha and website forms bring new companies and contacts into the CRM.

02
Engagement

Aircall, Gong and Google Workspace capture calls, meetings and emails and log them against records.

03
Systems of record

HubSpot owns pre-sale, Planhat owns post-sale, the product holds usage and Stripe holds billing.

04
Automation layer

n8n sits in the middle, connecting systems through their APIs and filling gaps in native tooling.

05
Data & analytics

Airbyte loads everything into an S3/Iceberg lake, dbt builds gold marts for Metabase and AI access.

Customer lifecycle through the stack

  1. 01Prospect sourced (Clay, Lusha, inbound form)
  2. 02Lands in the CRM and is routed to a rep (n8n)
  3. 03Outreach (Aircall, Gmail, sequences)
  4. 04Meeting booked (CRM scheduler and Calendar)
  5. 05Meeting recorded (Gong)
  6. 06Deal progressed in the CRM
  7. 07Closed-won customer handed to the CS platform
  8. 08Customer onboarded in the product
  9. 09Billed through Stripe
  10. 10CS team monitors health, usage and success plans
  11. 11Renewal, expansion or churn
  12. 12Every stage lands in the data lake for reporting

Identity & matching keys

  • The CRM company ID is the main cross-system key; the CS platform stores it on each customer company.
  • The product platform stores the CS platform's company ID. Product-to-CRM mapping is being built.
  • Aircall contacts carry the CS platform contact ID.
  • Gong and Aircall match calls and meetings to CRM records by email or phone number.
  • The data lake joins everything on these IDs, plus email and phone, with crosswalk tables where direct links are missing.
All data flows
  • Clay → HubSpotEnriched prospectsnative
  • Lusha → HubSpotEmails & dialsnative
  • Website forms → HubSpotLeadsnative
  • Ad platforms → HubSpotDirect connection from Meta, Google, Reddit and LinkedIn advertising platforms to HubSpot.inbound
  • HubSpot → n8nQualify & routeautomation
  • Google Workspace ↔ HubSpotMeetings & emailsnative
  • Aircall → HubSpotCall logsnative
  • Aircall → n8nTranscripts → CS tasksautomation
  • Planhat ↔ AircallContacts + CS IDnative
  • Gong → HubSpotRecordings as notesnative
  • Gong → n8nMeeting outcomesautomation
  • n8n → PlanhatWon customers, tasksautomation
  • HubSpot ↔ PlanhatCompany ID linknative
  • Product platform → PlanhatUsage (assumed)native
  • Stripe → PlanhatRevenue (assumed)native
  • Planhat → AirbyteHubSpot, Planhat, Gong, Aircall, product and Stripe all sync into the lake via Airbyte.batch ELT
  • Airbyte → Data lakeLoadbatch ELT
  • Data lake → dbtRaw → goldbatch ELT
  • dbt → MetabaseDashboardsoutbound
  • dbt → AI access (MCP)Gold tablesoutbound
  • Data lake → n8nThin return path: extracts exported via Drive, then n8n, for one-off migrations and backfills.automation