Lesson 6 of 8 · 48 min

Reply ops, routing, CRM write-back, and SLAs

Build reply operations as a production path: taxonomy, classification, atomic routing, class-based SLAs, idempotent CRM write-back, QA sampling, and booking/stop reconciliation.

Inbox chaos → reply operations system

Positive replies are the rarest inventory in outbound. Teams that “just watch shared inboxes” leak meetings. Reply ops is a classification → route → SLA → CRM write-back → close-the-loop system. This lesson designs that plant floor — where GTM eng meets AE reality.
Every reply is an event: raw message, thread id, contact id, mailbox id, timestamp, raw text. Classification assigns intent. Routing assigns owner. SLA measures speed-to-touch. CRM write-back creates tasks, logs activities, and advances fields. Without write-back, attribution (L7) and forecasting lie.
RevOps object models live in gtm-stack-automation. Here we focus on the operational path from ESP/SEP webhook to human action without double-assign or silent drops — including multi-client agency queues for the capstone.

Reply taxonomy

text
1REPLY CLASSES (minimum viable taxonomy)23  positive_interested     → route AE/SDR now; propose times4  positive_referral       → capture referral; new identity flow5  question_info           → route with FAQ pack; may stay SDR6  objection_pricing       → enablement snippet + owner7  not_now                 → nurture date; suppress cold TTL8  ooo                     → reschedule sequence resume date9  wrong_person            → ask route / find persona; update contact10  unsubscribe_stop        → global suppress; confirm if needed11  hostile                 → suppress + escalate policy12  bounce_auto             → not a human reply; hygiene path13  neutral_other           → human triage bucket1415  Classifier can be rules+LLM; humans correct → training labels.
  1. 01Precision on positive — false positive wastes AE time; false negative drops revenue.
  2. 02OOO handling — auto pause/resume beats human calendar math.
  3. 03Wrong person — gold for multi-threading if handled with care.
  4. 04Hostile/legal — scripted suppress, no clever comebacks from SDRs.
  5. 05Language detection — route to capable owners or translate carefully.

Routing and ownership

Routing rules: territory, segment, account owner, round-robin, or product line. Ambiguity needs a default queue with SLA, not “hope someone sees Slack.” Ownership transfer must be atomic in CRM — two AEs texting the same prospect is an ops bug.
text
1ROUTE DECISION (pseudo)23  on reply_classified(contact, class):4      stop_sequences(contact)5      if class in SUPPRESS:6          suppress(contact); crm_write(status); return7      owner = crm.account_owner(contact) or territory_router(contact)8      if owner is None: owner = round_robin(queue=class)9      create_task(owner, due=sla_deadline(class), payload=thread)10      notify(owner, channel=prefer_urgent_if_positive)11      crm_activity(reply_raw_link, class, model_version)12      emit_event(reply_ops.routed)  # attribution + metrics

SLAs by class

Not every reply needs a 5-minute response. Positives do. OOOs can be machine-handled. Publish SLAs and measure breach rate. After-hours: on-call rotation or explicit next-business-morning policy with prospect timezone awareness.
  1. 01positive_interested — 5–15 minutes during business hours.
  2. 02question_info — same day.
  3. 03objection — same day with enablement.
  4. 04not_now — 24–48h thoughtful close + future date.
  5. 05hostile — immediate suppress; manager review sample.
  6. 06Breach alerts — page secondary owner; never silent fail.

CRM write-back contracts

Define the fields and objects you update: contact status, last_reply_at, reply_class, sequence_state=stopped, task, opportunity on meeting set, campaign member / engagement timeline. Idempotent writes keyed by message_id. Companion track covers deeper CRM schema — here enforce the event contract.
text
1WRITE-BACK CONTRACT (event: reply.received)23  message_id (idempotency key)4  contact_id, account_id, mailbox_id, thread_id5  reply_class, classifier_version, confidence6  stopped_sequences: [ids]7  task_id, owner_id, sla_due_at8  crm_status_before → crm_status_after910  Consumers: reply dashboards, attribution, coaching QA, compliance export

QA and coaching loop

Sample classified replies weekly. Measure precision/recall on positives. Feed corrections into prompts/rules. Coach tone on positives — speed without substance still loses. GTM eng owns the machine; sales leaders own talk tracks; both read the same samples.

Multi-tool reality

Replies may land in Google Workspace, SEP unibox, or CRM shared inbox. Normalize to one event pipeline. Duplicate notifications are OK; duplicate owners are not. Prefer one orchestrator that listens to many sources.
  1. 01Q: Build vs buy for unibox? Buy SEP unibox if it meets SLA routing and API export; build orchestration when multi-ESP, multi-client, or custom classification. Either way own the event contract and CRM write-back.
  2. 02Q: What if AE ignores tasks? Measure breach, escalate, and route around chronic breach with management policy. System can reassign; it cannot invent sales culture alone — but it can surface truth.
  3. 03Q: How do you handle calendar booking? Prefer owned scheduling links with identity prefill; write meeting back to CRM immediately; pause all sequences on booking webhook, not on human memory.

Enablement snippets without becoming a content CMS

Objection classes should attach short, approved response kits — pricing one-pager, security FAQ, competitor landmines — versioned and owned by product marketing. Reply ops routes the human; enablement reduces time-to-quality. Do not build a full CMS inside the sequencer; link out to source-of-truth docs.
  1. 01Snippet id on task payload for the classified objection.
  2. 02Expiry — stale pricing kits auto-flag for refresh.
  3. 03QA sample — did the AE use current security language?
  4. 04Escape hatch — escalate to SE/solutions when snippet confidence low.
text
1REPLY OPS METRICS23  positive_touch_p50 / p95     time to first human on positives4  sla_breach_rate             by class and owner5  classifier_precision_pos    weekly QA sample6  double_assign_count         should be ~07  writeback_fail_rate         CRM errors / replies8  meeting_rate_from_positive  quality of handling, not just speed910  Staff to p95, not to average hero days.
After-hours policy must be explicit: page a rotator for positives, or promise next-business-morning in prospect timezone. Ambiguity creates random founder heroics and silent drops. Encode the policy in the router, not in tribal Slack knowledge.
Interview closer: “Replies are events with classes, owners, SLAs, and idempotent CRM writes — Slack is notify-only.” If you can defend that sentence with a sequence diagram, you clear reply-ops design prompts.
Outbound creates options; reply ops converts options into calendar reality — or into silent regret.
docsHubSpot conversations / ticket routing conceptsHubSpotdocsSalesforce activity & task modelSalesforcedocsOutreach reply handling patternsOutreacharticleClay blog — GTM ops workflowsClay

Checkpoint

Positive reply sits 6 hours in a shared Gmail label. Architectural miss?

ANone — AEs should live in Gmail search all dayBNo event pipeline: classify→owner task→SLA→CRM; shared labels are notifications at bestCThey should CC a founder on every reply instead
Sign up free to answer and see why

Checkpoint

Classifier marks “unsubscribe please” as positive_interested. Harm and fix?

AHarmless — AE will notice and suppress manually eventuallyBHigh harm: may continue sequences or wrong tone; fix with stop-word rules + human QA + easy one-click suppress overriding modelCDelete the classifier and use only humans forever
Sign up free to answer and see why

Checkpoint

Two AEs get Slack pages for same positive. Prevention?

AAsk them to coordinate in a private DM threadBAtomic assign in CRM/router with idempotent message_id; Slack notifies owner only after commitCDisable CRM tasks and rely only on Slack reactions
Sign up free to answer and see why

Checkpoint

OOO auto-replies are flooding the positive queue. Best handling?

ATreat all as positives to avoid missing real interestBDetect OOO class via patterns/model; pause/resume sequences; exclude from positive SLA denominatorCUnsubscribe everyone who OOOs once
Sign up free to answer and see why

Checkpoint

Meeting booked on Calendly but sequence keeps emailing. Fix ownership?

ATell SDRs to pause sequences when they see calendar invites in emailBWire scheduler webhooks → stop sequences + CRM meeting activity/opp rules; reconcile nightlyCIt’s fine — extra emails after booking show persistence
Sign up free to answer and see why

Can you design reply taxonomy, routing, SLAs, and idempotent CRM write-back?

New to itGetting thereConfident

Takeaways

  • Replies are events: classify, route, SLA, write back, sample QA.
  • Slack notifies; CRM owns. Atomic assignment prevents double-work.
  • OOO/stop/hostile classes protect humans and compliance.
  • Next: attribution, experiments, multi-touch honesty (gos-attribution).

Next lesson: measure outbound without lying to yourself about multi-touch reality.

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.