Summary
When a visitor subscribes to a public status page via email, OpenStatus creates a pending subscriber and returns a verification token, but no verification email appears to be sent.
The codebase already has email verification support via sendEmailVerification(...) and a public /verify/[token] route, but the statusPage.subscribe mutation does not seem to call the email channel after creating the subscriber.
Current behavior
- Visitor opens a public status page.
- Visitor enters an email in the subscription form.
statusPage.subscribe creates or updates a pending subscriber.
- The mutation returns
{ id, token }.
- No verification email is sent to the subscriber.
- The subscriber has no way to discover the
/verify/[token] URL unless custom code uses the returned token.
Expected behavior
- Visitor submits an email subscription request.
- Server creates a pending subscriber with a verification token.
- Server sends a verification email using the configured email provider.
- The email includes the public status page verification link, for example
/verify/<token>.
- Visitor clicks the link.
- The subscriber is marked accepted/verified.
- Future status updates are sent only to accepted subscribers.
Why this matters
Without the verification email, self-hosted status page email subscriptions appear successful in the UI but are not actionable for external subscribers. This makes the subscription flow effectively unusable unless deployers add custom logic outside OpenStatus.
Notes
The existing pieces appear to already exist:
packages/subscriptions/src/channels/email.ts includes sendEmailVerification(...).
- The status page app includes a
/verify/[token] route.
statusPage.subscribe creates the subscriber and returns a token.
The missing piece seems to be wiring the subscribe mutation to send the verification email server-side after creating the pending subscriber.
I'd be happy to attempt a fix with my LLM. Let me know if that's acceptable for this project.
Summary
When a visitor subscribes to a public status page via email, OpenStatus creates a pending subscriber and returns a verification token, but no verification email appears to be sent.
The codebase already has email verification support via
sendEmailVerification(...)and a public/verify/[token]route, but thestatusPage.subscribemutation does not seem to call the email channel after creating the subscriber.Current behavior
statusPage.subscribecreates or updates a pending subscriber.{ id, token }./verify/[token]URL unless custom code uses the returned token.Expected behavior
/verify/<token>.Why this matters
Without the verification email, self-hosted status page email subscriptions appear successful in the UI but are not actionable for external subscribers. This makes the subscription flow effectively unusable unless deployers add custom logic outside OpenStatus.
Notes
The existing pieces appear to already exist:
packages/subscriptions/src/channels/email.tsincludessendEmailVerification(...)./verify/[token]route.statusPage.subscribecreates the subscriber and returns a token.The missing piece seems to be wiring the subscribe mutation to send the verification email server-side after creating the pending subscriber.
I'd be happy to attempt a fix with my LLM. Let me know if that's acceptable for this project.