Waitlist signup
Triggered when a user clicks a coming_soon agent's "Notify me" CTA.
Idempotency
The unique index on (agentId, email) plus ON CONFLICT DO NOTHING makes duplicate submits safe. A second submit still returns 200, and the interaction row is not written a second time (the service checks).
Anonymous waitlist
Signed-out submission is allowed. The handler still writes both rows; userId is NULL, userEmail is the form value.
Status query
GET /agents/:agentId/waitlist/me lets the UI decide whether to show the form or the success state on next visit. For unauth users it returns { notified: false } without erroring.
Email fan-out
Best-effort. The InteractionsService.record() call fires emails synchronously (or with a short-lived queue depending on environment) and writes notifyError if any fail. There's no retry.
If you need reliable notification:
- Add a real queue (BullMQ, SQS) and have
InteractionsServiceenqueue rather than send. - Or rely on a SaaS like Resend / Postmark with their own retry semantics.
When to flip to active
When the agent is ready, run:
SELECT email FROM agent_waitlist WHERE agent_id = '<id>' ORDER BY created_at;
…and email the list from your preferred tool. There's no built-in "notify waitlist now" button yet.