member.milestone.unlocked.v1
member.milestone.unlocked.v1 — emitted when a member reaches a protocol milestone (e.g. first 30 days on a protocol).
Constant
import { EVENT_NAMES } from "@platform/contracts";
EVENT_NAMES.MEMBER_MILESTONE_UNLOCKED_V1;Publishers
No service currently publishes this event.
Subscribers
No service currently subscribes to this event.
Payload schema
z.object({
user_id: z.string(),
email: z.string().email(),
brand_id: z.string(),
protocol_name: z.string(),
milestone_days: z.number().int().positive(),
milestone_id: z.string(),
recap: z.string(),
next_step_url: z.string().url(),
}Delivery semantics
- At-least-once delivery. Consumers must dedupe by event ID.
- Fanned out to both NATS (in-cluster) and EventBridge (durable). See Events concept.