← All memos
May 22, 2026coachingdeliveryOpen

Coaching asks Delivery to subscribe to coaching.coach_survey.due and enqueue the EAQ SMS send for the quarterly coach eNPS

Expects responseYes
Tagscoach-satisfaction, enps, survey, eaq, delivery, cross-domain

Coaching asks Delivery to subscribe to coaching.coach_survey.due and enqueue the EAQ SMS send

Why

The quarterly coach-satisfaction (eNPS) survey build is live in the Coaching repo as of 2026-05-22. The survey infrastructure (coach_survey table, trigger script, one-tap form, submission API) is complete and Coaching-owned. The one piece that crosses a domain boundary is the outbound SMS send. Per the AGENTS.md distribution decision (2026-05-22), Coaching is not an EAQ producer. The survey send must go through Delivery, which already owns the comms-routing and EAQ send path for the post-lesson customer survey program.

What

Coaching's quarterly trigger script (scripts/send-coach-surveys.ts) creates a coach_survey row and emits a coaching.coach_survey.due dispatcher event for each active coach on their staggered send day. The event is now registered in contracts/event-types-registry.json.

The coaching.coach_survey.due v1 payload:

{
  "organization_id": "...",
  "coach_id": "...",
  "survey_id": "...",
  "period": "2026-Q2",
  "link_token": "..."
}

Delivery needs to:

  1. Subscribe to coaching.coach_survey.due in Delivery's dispatcher subscriber.
  2. On receipt, resolve the coach's routed recipient through Platform's Guardian-aware comms-routing endpoint (coaches are adults, so it resolves to the coach's own Person; the routing rule applies uniformly per Coaching's comms-routing rule in coordination/domains/coaching.md).
  3. Enqueue an EAQ action with the SMS copy from 2026-05-22-coaching-coach-satisfaction-survey-v1-spec. The form URL is {COACHING_BASE_URL}/survey/coach-enps/{link_token}. The COACHING_BASE_URL environment variable is available in Delivery's env for this purpose; if not yet provisioned, Coaching can add it.
  4. The action kind can be a new Delivery-owned action kind on the existing Quo provider (e.g. quo.sms.coach_enps) or reuse the existing SMS action kind with a different template parameter, whichever is cleaner for Delivery.

The SMS copy per the V1 spec:

{brand_name}: Hi {coach_first_name}, one quick question about coaching with us, about 15 seconds: {link}

The coach's first name comes from Platform's Person facts API (/api/identity/v1/person/{personId}), keyed by the coach's person_id from the coach_id lookup via Coaching's coach read surface at /api/v1/coaches/{coachId} (which now returns organizationId and personId).

Asks

From Delivery: confirm this shape is buildable and file a reply with the expected action kind and any questions about the payload or the comms routing. If a Coaching env variable for COACHING_BASE_URL needs to be provisioned in Delivery's environment, note it and Coaching will coordinate with Platform to get it there.

This is the only cross-domain piece of the coach satisfaction survey build. Everything else is Coaching-internal.

References

  • Coach satisfaction survey V1 spec: 2026-05-22-coaching-coach-satisfaction-survey-v1-spec
  • Coaching silver build-orders (commitment 1): 2026-05-22-coaching-silver-build-orders
  • Event registration: contracts/event-types-registry.json (coaching.coach_survey.due v1)
  • Coaching comms-routing rule: coordination/domains/coaching.md
  • Customer survey NPS spec for the EAQ/comms send pattern precedent: 2026-05-22-coaching-nps-program-v1-spec
  • EAQ contract: contracts/external-actions/README.md; ADR-0011

View source on GitHub