Lesson 1 of 8 · 48 min

Outbound as a system: funnel, SLAs, unit economics

Model outbound as a production state machine with stage SLAs, unit economics, and observability — not a Zapier pile of tools. Control plane first; Clay/SEP/CRM second. Companion: gtm-stack-automation for RevOps foundations.

Zapier pile → production outbound

Most GTM teams ship outbound as a tool pile: a Clay table, a Smartlead campaign, a HubSpot workflow, a Notion SOP, and a Slack channel that explodes when replies land. Interviews for GTM Engineering grade whether you can treat outbound as a production system — stages, SLAs, error budgets, unit economics, and observability — not a demo of connectors. This lesson is the map for the whole track. CRM/RevOps foundations live in companion track gtm-stack-automation; we reference them, we do not re-teach them.
Outbound is a multi-stage pipeline with loss at every hop. Treat it like a factory line: inventory enters as accounts and contacts; it exits as meetings and pipeline. Between those ends you have scoring, enrichment, validation, sequencing, delivery, reply classification, CRM write-back, and attribution. Each hop has a throughput, a quality filter, a cost, and a failure mode. Seniors name the hops before they name tools.
GTM Engineer loops (Clay, Ramp-style ops, AI-native sales tools, agency systems roles) ask: design the system, debug a broken conversion, or pick metrics that falsify a “more volume” plan. Product-minded answers beat tool-vendor answers. If your first sentence is “I’d connect Apollo to Instantly,” you are already mid-bar.

The outbound funnel as a state machine

Model contacts (or accounts) as entities moving through states. A clean state machine stops double-sends, zombie sequences, and CRM ghosts. Write states on the whiteboard before you draw Clay columns.
text
1OUTBOUND STATE MACHINE (contact-centric)23  discovered → scored → eligible | rejected4  eligible → enriching → enriched | enrich_failed5  enriched → validating → valid_email | invalid6  valid_email → sequenced → in_flight7  in_flight → replied | completed | bounced | unsub | paused8  replied → classified → routed → meeting_booked | nurture | closed_lost910  Rules of the machine:11  - one active sequence per contact per product motion12  - invalid / bounced / unsub are terminal for cold email13  - replied always pauses steps (HITL or auto-stop)14  - every transition emits an event for attribution + ops1516  Account-level twin: accounts score, contacts attach, meetings roll up.
Account-based motions add a twin machine at the account level: target account → researched → multi-threaded → engaged → opportunity. Contacts are edges into the account graph. If you only model contacts, multi-threading and account SLAs become tribal knowledge in a spreadsheet.
  1. 01Discovered — entered via intent, scrape, import, or CRM export; identity may still be weak.
  2. 02Scored / eligible — passed ICP threshold; non-goals rejected with a reason code.
  3. 03Enriched — required fields present at declared confidence; waterfall cost recorded.
  4. 04Valid — email/phone passed validation; catch-all policy explicit.
  5. 05In-flight — sequence active; stop conditions wired.
  6. 06Replied / routed — human or classifier owns next action under SLA.
  7. 07Attributed — touch logged so experiments do not lie later.

SLAs between stages

Without SLAs, outbound becomes a black box that “feels busy.” Production teams publish stage SLAs the way backend teams publish latency budgets. Interviewers love candidates who invent boring, enforceable numbers.
text
1STAGE SLAs (example B2B SaaS mid-market outbound)23  Stage hop                      SLA              Owner4  ---------------------------    --------------   ----------------5  List load → scored             < 4 hours        scoring service6  Eligible → enriched            < 24 hours       enrichment worker7  Enriched → validated           < 2 hours        validation hop8  Valid → first send             < 12 hours       sequence engine9  Positive reply → human touch   < 15 minutes     reply ops10  Meeting set → CRM opp          < 1 hour         CRM write-back11  Bounce spike detect            < 30 minutes     deliverability1213  Error budget example: <2% of eligible contacts stuck >48h in enriching.14  Breach → page the GTM eng on-call, not “check Clay tomorrow.”
SLAs force architecture: async workers, queues, idempotent updates, and dead-letter handling for enrich_failed. That is why this track sits next to backend thinking even though the domain is GTM. Companion gtm-stack-automation covers CRM object models; here you own the pipeline clock.

Unit economics — the numbers that kill bad volume plans

Every design review should open with unit economics. If positive reply rate is 1.2% and cost-to-first-touch is $1.80, “2× the list” is not a strategy — it is a burn plan. Compute backwards from meetings needed.
text
1OUTBOUND UNIT ECONOMICS (back-of-envelope)23  Meetings needed / month ............... M4  Show rate ............................. S      (e.g. 0.70)5  Booked meetings needed ................ M / S6  Positive reply → meeting rate ......... R_m    (e.g. 0.25)7  Positive replies needed ............... (M/S) / R_m8  Positive reply rate ................... R_p    (e.g. 0.012)9  Delivered contacts needed ............. positives / R_p10  Validation pass rate .................. V      (e.g. 0.78)11  Enriched contacts needed .............. delivered / V1213  Cost stack per contact:14    list + score + waterfall enrich + validate + send infra + tool seats15  Cost per meeting = total monthly cost / meetings held16  Kill criterion: cost/meeting > max CAC share for outbound channel1718  Interview move: write this table before naming Clay or Instantly.
  1. 01Cost per enriched contact — waterfall spend / successful enrichments (not attempts).
  2. 02Cost per delivered first-touch — includes validation + send infra + seat amortization.
  3. 03Positive reply rate — positives / delivered (define positive: interested, not OOO).
  4. 04Meeting rate — meetings held / positives (or / delivered — pick one and stick).
  5. 05Pipeline $ per $ outbound cost — only honest with multi-touch caveats (L7).
  6. 06Domain health budget — bounce/complaint caps are hard constraints, not KPIs to game.

Observability for outbound

If you cannot answer “where are contacts stuck and why?” in five minutes, you do not have a system — you have dashboards of vanity opens. Instrument stage counts, hop latencies, reason codes, and provider error rates.
  1. 01Funnel census — counts per state daily; alert on unexpected pile-ups.
  2. 02Hop latency histograms — p50/p95 time in enriching, validating, awaiting first send.
  3. 03Reason codes — rejected_icp, enrich_timeout, catch_all_policy, hard_bounce, unsub.
  4. 04Provider health — waterfall step success rate and $/success per vendor.
  5. 05Domain health — bounce rate, spam complaint rate, inbox placement samples.
  6. 06Reply SLA breach rate — positives without human touch inside the budget.
Production metaphor: this is the same spine as a checkout pipeline — events, stages, dead letters, and on-call. The “customer” is a prospect’s inbox reputation plus your AE’s time. Both can be destroyed by silent retries.

Tool layer vs control plane

Clay, Instantly, Smartlead, Outreach, Salesloft, Apollo, Clearbit/Breeze, ZoomInfo, HubSpot, Salesforce — these are workers and UIs. Your control plane is: identity resolution, scoring policy, waterfall policy, sequence graph, deliverability policy, reply routing, attribution events. Interviews grade control-plane thinking. Tool APIs change; state machines do not.

Interview framing — design outbound for X

Classic prompt: “Design outbound for a PLG SaaS selling to mid-market fintech in the US.” Senior answer shape: ICP and non-goals → volume targets from unit economics → state machine → enrichment waterfall with cost caps → sequence graph with stop rules → domain/warmup plan → reply ops SLA → CRM write-back → metrics and kill criteria. Tools appear as implementations of each box.
  1. 01Q: How is outbound different from marketing nurture? Outbound is interruptive, identity-resolved, and sequence-driven with hard stop rules and domain risk. Nurture is permissioned or product-triggered with softer reputation constraints. Mixing lists without policy is how you spam your own customers.
  2. 02Q: What would you instrument first on day one? State census + bounce rate + positive-reply SLA. Those three catch zombie inventories, domain death, and the revenue-critical human hop. Opens are a lagging vanity metric under privacy noise.
  3. 03Q: Where do you put human-in-the-loop? High-value account personalization, positive-reply handling, and exception queues (legal, VIP, angry replies). Not on every enrichment cell — that does not scale and creates silent backlog.

Anti-patterns that interviewers ding in five minutes

  1. 01Tool-first answer — naming Clay/Instantly before states, SLAs, or unit economics.
  2. 02Infinite volume — no bounce budget, no AE capacity model, no kill criteria.
  3. 03Sheet as SoR — operational truth in mutable tabs without events or locks.
  4. 04Open-rate north star — optimizing pixels while positives and meetings rot.
  5. 05Silent retries — enrichment/send loops without idempotency or DLQs.
If you remember one framing for the rest of the track: control plane first, workers second, vendors last. Every later lesson (scoring, waterfall, sequences, domains, reply ops, attribution) is a subsystem of this machine. When a prompt is vague, redraw the state machine and ask which hop is broken.
Outbound is a factory with reputation as inventory. You can speed the line until you melt the brand — good GTM engineering is knowing which dial is heat.
docsClay University — outbound systems thinkingClayarticleClay blog — GTM engineering patternsClaydocsHubSpot — sales pipeline stages (CRM companion)HubSpotdocsSalesforce — Lead & Contact data model overviewSalesforce

Checkpoint

An AE says “just 3× the Instantly campaign volume.” Positive reply rate is 1%, bounce rate is 2.8%, cost per enriched contact is already above plan. What is the strongest GTM eng response?

AAgree and scale — more top-of-funnel always produces more meetings linearlyBRefuse blind scale; recompute meetings from unit economics, cap volume by bounce/complaint budgets, and fix ICP or copy before buying more sendsCSwitch tools from Instantly to Outreach — platform choice is the bottleneck
Sign up free to answer and see why

Checkpoint

You inherit a stack: Clay → webhook → Zapier → Google Sheet → Smartlead → HubSpot manual import on Fridays. Biggest architectural smell?

AToo many SaaS logos — consolidate to a single vendor immediatelyBNo durable contact state machine or stage SLAs; Sheet is the system of record and CRM lags a weekCHubSpot should own sequencing so Smartlead is redundant by definition
Sign up free to answer and see why

Checkpoint

Which metric set best detects a silent enrichment outage within a day?

AOpen rate and click rate on step 1 emailsBDaily census of contacts in enriching + p95 enrich latency + enrich_failed reason codesCMonthly pipeline created by outbound source field in CRM
Sign up free to answer and see why

Checkpoint

Interviewer: “Map outbound to a backend pipeline.” Strongest analogy?

AOutbound is just cron jobs posting to an email API — no queue semantics neededBStages are a state machine; enrichment/validation are workers with retries/DLQ; sends have rate limits; replies are events that must pause consumersCCRM is the only database that matters; everything else is disposable cache
Sign up free to answer and see why

Checkpoint

You must present kill criteria for an outbound motion before launch. Which set is most senior?

AKill if open rate <40% after two weeks — opens are the north starBKill or pause if bounce >2%, cost/meeting >$X for 3 weeks, or positive→meeting CNever kill — outbound always needs six months before judgment
Sign up free to answer and see why

Can you whiteboard outbound as a state machine with stage SLAs and unit economics without naming a tool first?

New to itGetting thereConfident

Takeaways

  • Outbound is a production pipeline: states, SLAs, error budgets, observability.
  • Unit economics + domain health cap volume; tools implement the control plane.
  • Companion gtm-stack-automation owns CRM/RevOps foundations — link, don’t re-teach.
  • Next: ICP scoring services that do not rot (gos-icp-scoring).

Next lesson: design ICP definition and scoring so eligibility stays honest as markets drift.

Sources

Free to read · better with Enzo

Learn it with Enzo

Save your progress, answer the checkpoints, and let Enzo quiz you on what you just read.