You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Public subscribe endpoint and embeddable signup form #27
There is no public way to add subscribers; the API requires team credentials.
Add a scoped-key POST /subscribe endpoint with per-IP rate limiting (only trust x-forwarded-for behind a trusted proxy; use Redis rather than in-memory limits).
Provide an embeddable signup form.
Optional confirmed opt-in and a welcome email.
Make sure public endpoints cannot be used to trigger mail to arbitrary addresses at scale.
Honeypot: a hidden website field. If it's filled in, return a fake success.
Per-IP limit of about 5 per 10 minutes, plus a per-list flood threshold that alerts but never blocks, so one attacker can't lock out real signups. The alert should mention list bombing and spam traps.
Cap signup-triggered emails (welcome plus confirmation) per list, for example 100 per 10 minutes, counted from sent rows. This keeps the endpoint from being used to spray mail.
Confirmation resends: when a pending contact signs up again, resend at most once per 10 minutes and 3 times in total. If confirmation is on, skip the welcome email: one email, not two.
"Open Gmail" button after signup: a deep link to from:<sender> in:anywhere newer_than:1d, with Outlook, Yahoo, iCloud and Proton variants. The API returns it too. It's cheap and lifts confirmation rates.
Activity
clbotdev commentedon Oct 10, 2026
Signup-flow details from https://github.com/marclou/mailcheap (
app/archive/actions.js,lib/inbox-links.js):websitefield. If it's filled in, return a fake success.from:<sender> in:anywhere newer_than:1d, with Outlook, Yahoo, iCloud and Proton variants. The API returns it too. It's cheap and lifts confirmation rates.resubscribe: truecan revive unsubscribed or dormant contacts, never bounced or complained ones.