ioy.ai
Sign inGet the starter
Operations

Optional newsletters and operations

Enable explicit opt-ins, product updates, delivery tracking, and notification channels for your generated product.

Does the template subscribe users automatically?

No. Waitlist and newsletter modules are disabled by default. Account registration, Google sign-in and purchases do not subscribe anyone. Once enabled, the signup box starts unchecked and a separate confirmation email verifies each request.

What do I configure first?

Apply the generated project's migrations, configure a verified Resend sender and server-only key, and set WAITLIST_ENABLED=true or NEWSLETTER_ENABLED=true. Keep BETTER_AUTH_SECRET private; it encrypts queued email. Configure Turnstile for public signup and a signed Resend webhook at /api/webhooks/resend for acceptance, delivery, bounce, complaint, suppression and contact unsubscribe events. See service configuration and the repository's docs/growth-and-notifications.md for every parameter.

Resend newsletters require a dedicated RESEND_NEWSLETTER_SEGMENT_ID. Beehiiv is optional: set NEWSLETTER_PROVIDER=beehiiv, BEEHIIV_API_KEY and BEEHIIV_PUBLICATION_ID. Confirmed contacts synchronize to that publication; editorial newsletter composition and publication use Beehiiv's editor.

How does a subscriber confirm or unsubscribe?

Submit an email on /updates or /waitlist, select the specific consent box, then open the confirmation link within 48 hours. Press Confirm subscription; opening the URL alone does not subscribe anyone. Leave through a message's unsubscribe link or the signed-in /app/email-preferences page. Subscription withdrawal cancels queued optional messages and does not disable account/billing mail.

How do I send a reviewed product update?

Open /admin/growth with your administrator session. Choose a short product release notice or a Resend newsletter, write the message, and explicitly authorize that reviewed message. Release notices use the encrypted mail outbox with a consent check before each send. Newsletters use Resend Broadcasts after confirmed subscriber synchronization. The admin shows queued, provider acceptance, actual delivery and failures separately.

Do not claim an unknown delivery succeeded or blindly send it again. The admin recovery controls require verified provider evidence. Large promotional campaigns belong in the newsletter provider's broadcast tools, rather than the small service-notice queue.

Which operational events can notify me?

When enabled and configured, confirmed payments, refund increments, failed or unknown tasks, request errors and daily confirmed model-cost thresholds can notify Discord, Feishu/Lark or the existing alert email. Events persist with the business transaction; channels send after commit. They contain system references and minimal numeric/status information, without prompts, generated results, credentials or user email.

Set NOTIFICATIONS_ENABLED=true and the chosen secret webhook URL. Feishu supports its optional signature secret. COST_ALERT_THRESHOLD_USD alerts once per UTC day when recorded successful-task model cost reaches the threshold. Rate limits schedule retries; uncertain channel acceptance stays unknown until an operator checks the provider history.

What is verified locally?

Tests use in-memory data and simulated provider responses. Local email goes through the local mail sink. A local simulation does not prove real delivery or provider configuration. Before production, test an authorized address, confirmation, withdrawal, signed delivery webhook, subscriber segment isolation and the selected channel's message history using your own accounts.

Provider references: Resend Broadcasts, Beehiiv subscription creation, Discord webhooks.