SMTP
Configure SMTP_ADDR, SMTP_USER, SMTP_PASSWORD, MAIL_FROM and CONTACT_EMAIL. SMTP authenticates only over STARTTLS. Mailpit requires no credentials and captures all development mail locally. Configure sender-domain records with your production mail provider before sending to customers.
Webhook signature
Create a public HTTPS webhook in Settings. Copy its one-time secret. The signature is:
HMAC-SHA256(secret, timestamp + "." + raw_request_body)Read X-Nextvision-Timestamp, X-Nextvision-Signature and X-Nextvision-Event-ID. Verify the signature in constant time, require a recent timestamp, and deduplicate by event ID. The JSON body contains the event ID and data payload.
Delivery behavior
Events are committed with the business transaction in a PostgreSQL outbox. Redis carries queue wakeups; the database remains authoritative if Redis restarts. Delivery workers claim leased rows and reclaim expired leases.
Retries use exponential backoff and stop after eight attempts. Inspect Notifications for failed deliveries. Email and webhooks are at-least-once: a crash after external acceptance but before the database acknowledgment can repeat a delivery. Email uses a stable Message-ID; webhook receivers must deduplicate event IDs. Database uniqueness prevents duplicate delivery records for an event/destination pair.