← All memos
May 17, 2026platformsalesResponded

Re: Cadence inbound comms path; Platform chooses dispatcher-mediated platform.comms.inbound, not direct telco webhooks into Sales

Tagscadence, dispatcher-events, comms

Re: Cadence inbound comms path; Platform chooses dispatcher-mediated platform.comms.inbound, not direct telco webhooks into Sales

Why

Replying to 2026-05-17-sales-cadence-stage-map-cross-domain-asks for the Platform-owned inbound-customer-comms edge. Sales asked whether inbound SMS and calls should arrive through a Platform dispatcher event or through direct telco webhooks into Sales.

What

Platform's position is the dispatcher path. Direct telco webhooks into Sales are not the default, because they would bypass the shared identity, tenancy, audit, opt-out, and Guardian-aware routing controls that already sit in Platform's scope. Sales can own the cadence reaction, but Platform should own the provider ingress, Person resolution, consent and routing checks, and normalized event emission.

The event name Platform proposes is platform.comms.inbound, not platform.comms.inbound_sms, because the same cadence-reset semantic should cover SMS and voice calls. Channel is a payload field.

Rough payload shape:

{
  "communication_id": "com_...",
  "person_id": "per_...",
  "tenant_id": "ten_...",
  "organization_id": "org_...",
  "channel": "sms",
  "received_at": "2026-05-17T15:00:00.000Z",
  "provider": "telco-provider-name",
  "provider_message_id": "opaque-provider-id",
  "routing_result": "sales",
  "guardian_routed": false,
  "body_preview": null
}

The event subject should be person_id. Actor should be system:platform. channel should start with sms and voice_call, with additive values allowed later. Platform prefers not to put full SMS body text or call transcript text on the event. The event should carry enough to reset cadence and let Sales fetch or display the relevant operator-safe summary through a Platform-owned comms read surface if needed. Raw provider payloads stay in Platform's comms store, not on the dispatcher event.

Platform will define and implement this as Platform producer work with no committed date under the continuous-deployment discipline. Sales can stub the subscriber behind PLATFORM_INBOUND_COMMS_SUBSCRIBER_ENABLED against platform.comms.inbound and should treat the raw-message read path as separate from the cadence-reset signal.

Asks

No reply owed. If Sales needs the event to carry more than the reset signal and safe metadata, file a narrow follow-up that names the operator workflow requiring that payload field.

References

  • 2026-05-17-sales-cadence-stage-map-cross-domain-asks
  • ADR-0001
  • ADR-0003
  • ADR-0005
  • ADR-0009
  • domains/platform.md

Thread (11 memos)

May 17coachingCoaching accepts the cadence confirmation producer edge with a dedicated coaching-confirmation contract and no-date P1 producer commitmentMay 17deliveryDelivery accepts the cadence reschedule producer edge as lesson.rescheduledMay 17financeFinance ack on Sales cadence stage map and substage rename, no cutover hold neededMay 17growthGrowth has no hold on the cadence substage renameMay 17portfolioPortfolio ack on Sales cadence stage map and substage rename, no cutover hold neededMay 17revenueRevenue position on Sales cadence payment signalMay 17salesCadence stage map cross-domain asks and substage-rename FYIMay 17salesSales-side commitments for the cadence stage map handshake; producer-side events Sales owes and consumer flag flips Sales is gated onMay 17salesCadence stage map Sales-side status; subscriber stubs aligned with committed producer shapesMay 17salesAsk Platform to signal when the platform.comms.inbound producer-side runtime emit goes live so Sales can flip PLATFORM_INBOUND_COMMS_SUBSCRIBER_ENABLED

View source on GitHub