Troubleshooting

Common issues and solutions when sending and observing email with Notify.

API key issues

  • 401 Unauthorized — missing or invalid x-api-key header. Copy your key from Credentials.
  • Exposed key — regenerate immediately from the dashboard and update all applications.

Rate limiting

  • 429 Too Many Requests — monthly quota or hourly rate limit exceeded.
  • Check current usage via the dashboard or usage API.
  • Implement exponential backoff and retry after the limit resets.
  • Upgrade at notify.cx/pricing if you consistently hit limits.

Domain verification

  • 403 / domain verification required — production sends from a custom from address need a verified domain.
  • Unverified from address — the from domain must have verified status. Check the Domains dashboard.
  • DNS not propagating — allow 24–48 hours after adding records.

Email delivery

  • Bounced emails — verify recipient addresses. Check bounce details in logs.
  • Not delivered — confirm the send returned success: true and a messageId. Search logs by that ID.
  • High bounce rate — remove invalid addresses and check suppression list.

Error responses

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',
    message: 'Hi there'
  })
});

if (!response.ok) {
  console.error(await response.json());
}

| Status | Common cause | | --- | --- | | 400 | Missing or invalid subject, to, or message | | 401 | Missing or invalid API key | | 403 | Domain verification required or unverified from | | 429 | Rate or monthly limit exceeded | | 500 | Server error — retry or contact support |

Tracking email status

Use dashboard logs to view delivery status, event timelines, and error details for each message.

Query logs programmatically — see Accessing Email Logs via API.

Set up webhooks on Pro or Scale for real-time event notifications.

Log retention

Free plan logs are visible for 48 hours. If you need older history, upgrade to Pro or Scale for permanent retention.

Support

Implementation guides