Quick Start Guide
Send your first email with Notify in minutes.
Get from sign-up to a delivered email in a few steps.
1. Create your account
Sign up at notify.cx/sign-up and open the dashboard.
2. Create your API key
Generate an API key from the dashboard checklist or the Credentials page. Copy it when it’s shown and store it in an environment variable:
NOTIFY_API_KEY=your_api_key_here
Never expose your API key in client-side code or commit it to version control.
3. Send yourself a guided test
On the dashboard checklist, send a plain-text test to your signup email from hey@test.notify.cx. It counts toward your usage and shows up in Recent activity. You can skip this step if you want.
Want to rehearse the HTTP shape without delivering? Call the non-delivering test API (requires your API key):
const response = await fetch('https://notify.cx/api/email/send/test', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'x-api-key': process.env.NOTIFY_API_KEY!
},
body: JSON.stringify({
to: 'you@example.com',
subject: 'Hello from Notify',
message: '<p>It works.</p>',
from: 'noreply@your-verified-domain.com'
})
});
console.log(await response.json());
/api/email/send/test logs a TEST row and does not hit an inbox or count against quota. See Testing Emails.
4. Verify your domain
Add SPF/DKIM via Domain Verification. Production POST /api/email/send stays locked until a domain is verified.
5. Send in production
const response = await fetch('https://notify.cx/api/email/send', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'x-api-key': process.env.NOTIFY_API_KEY!
},
body: JSON.stringify({
to: 'recipient@example.com',
subject: 'Hello from Notify',
message: '<p>It works.</p>',
from: 'noreply@your-verified-domain.com'
})
});
if (!response.ok) {
throw new Error(await response.text());
}
console.log(await response.json());
The request body requires to, from, subject, and message. See Sending Emails for plain text vs HTML.
6. Observe delivery
Open dashboard logs to see delivery status, opens, clicks, and bounces for each message. On the Free plan, logs are retained for 48 hours; Pro and Scale plans include permanent log history.
Plan limits
| Plan | Emails / month | Domains | Webhooks | Log retention |
|---|---|---|---|---|
| Free | 1,000 | 1 | 0 | 48 hours |
| Pro | 10,000 | 3 | 3 | Permanent |
| Scale | 100,000 | 10 | 10 | Permanent |
See Usage Limits FAQ for rate limits and upgrade options.
What's next?
- Python guide
- Password reset emails
- Magic links, OTP & verification
- Authentication & API Keys
- Domain Verification · Cloudflare DNS · Route 53
- Sandbox vs Production
- Logs & Monitoring
- Webhooks & Notifications
- Error Catalog
- Example starter:
examples/nextjs-password-reset/in the Notify repo - Machine-readable overview: /llms.txt