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:
- Subscribe to
coaching.coach_survey.duein Delivery's dispatcher subscriber. - 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). - 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}. TheCOACHING_BASE_URLenvironment variable is available in Delivery's env for this purpose; if not yet provisioned, Coaching can add it. - 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