Troubleshooting
Common issues and their solutions when working with The One Relay.
1. Email Not Delivered
Symptoms: Email shows sent status in logs but never reaches delivered.
Steps:
- Check Email Logs — look for the specific email and its status
- If status is
bounced, check the bounce type and sub-type for details - If status stays at
sent, the delivery event from SES may not have arrived yet — wait 5 minutes and refresh - Check if the recipient's domain has valid MX records:
dig MX example.com - Check the recipient's spam/junk folder
Common causes:
- Recipient address doesn't exist (hard bounce)
- Recipient's mailbox is full (soft bounce — SES retries)
- Your domain is blacklisted by the recipient's mail server
- SES delivery events not reaching Relay (SNS subscription issue)
2. Domain Verification Failing
Symptoms: Domain stuck in Pending status after adding DNS records.
Steps:
- Open the domain and review the DNS records dialog
- Verify each record exists in your DNS provider exactly as shown
- Check for typos in CNAME names and values
- Confirm you don't have duplicate SPF records (only one TXT record with
v=spf1is allowed) - Wait up to 48 hours for DNS propagation, then click Verify again
Common causes:
- DNS records not yet propagated (TTL-dependent)
- Incorrect CNAME target (copied wrong value)
- Multiple SPF records on the domain (merge into one)
- DNS provider added extra dots or quotes to record values
3. API Key Returns 401 Unauthorized
Symptoms: API requests return 401 Unauthorized.
Steps:
- Verify the key is in the
X-Relay-Keyheader (notAuthorization) - Check the key hasn't been revoked — look on the API Keys page
- Check the key hasn't expired — compare expiration date to current date
- Verify you're using the full key, not just the masked preview
- Confirm you're hitting the correct API URL (
api.theonerelay.app)
4. API Key Returns 403 Forbidden
Symptoms: API requests return 403 Forbidden even with a valid key.
Steps:
- The key is valid but lacks the required scope for this endpoint
- Check the key's scopes on the API Keys page
- Add the missing scope (e.g.,
sendfor/api/send,read-logsfor/api/logs) - Or create a new key with the correct scopes
5. Rate Limited (429 Too Many Requests)
Symptoms: Send requests return 429 with a Retry-After header.
Steps:
- Check which rate limit window you're hitting — the error response includes details
- Implement retry logic that respects the
Retry-Afterheader - If hitting per-second limits, add delays between sends
- For batch operations, spread sends over time rather than sending all at once
- Consider increasing rate limits in Settings if your volume is legitimate
Common causes:
- Sending too many emails in a short burst
- Batch job not pacing sends properly
- Multiple integrations sending simultaneously
6. High Bounce Rate Alert
Symptoms: Receiving bounce rate alert emails or seeing warnings in Analytics.
Steps:
- Open Analytics and check the Bounce Rate Trend
- Open Email Logs and filter by status
bouncedto see which addresses are bouncing - Check if bounces are concentrated on specific domains (could indicate a blocklist)
- Review the Suppression List — addresses should be auto-suppressed after hard bounces
- Clean your recipient lists by removing addresses that haven't engaged recently
Common causes:
- Sending to an old or unvalidated contact list
- Client's email server is rejecting your domain (check blocklists)
- DNS authentication records (SPF/DKIM/DMARC) were modified or removed
7. Inbound Emails Not Routing
Symptoms: Emails sent to [email protected] (or similar) don't appear in PSA/CRM/Portal.
Steps:
- Check the
inbound_emailscontainer in Cosmos — verify the email was received - If not received, check SES receipt rules and S3 bucket for the raw email
- If received but not routed, check integration environment variables:
PSA_API_URL,CRM_API_URL,PORTAL_API_URL,INTEGRATION_KEY - Check the destination API is running and accessible
- Check for routing pattern mismatches (e.g.,
ticket+abcwhereabcisn't a valid ticket ID)
Common causes:
- Integration environment variables not set on Relay function app
- Destination product API is down or unreachable
- SNS subscription for inbound emails not confirmed
- SES receipt rule not active
8. Template Variables Not Replaced
Symptoms: Emails contain literal {{variable_name}} text instead of values.
Steps:
- Verify the variable names in your template match the keys in your
variablesobject (case-sensitive) - Check for typos:
{{client_name}}in template must match"client_name"in the send request - Use the Test Send feature to preview variable substitution before production use
- Check that you're using the template send endpoint (
/api/send-template), not the regular send endpoint
9. Open/Click Tracking Not Working
Symptoms: Analytics show 0% open rate despite confirmed email delivery.
Steps:
- Open tracking requires images to load — many email clients block images by default
- Check if the recipient's email client blocks external images (Outlook, corporate mail filters)
- Click tracking requires link rewriting — verify your HTML includes
<a href>links - Check that the SES configuration set has open and click tracking enabled
- Some open rates below 20% are normal for transactional email
10. Emails Going to Spam
Symptoms: Delivered emails land in recipient's spam/junk folder instead of inbox.
Steps:
- Verify all DNS records are properly configured: SPF, DKIM, and DMARC
- Check your domain against blocklists at MXToolbox
- Review your bounce and complaint rates in Analytics — high rates damage sender reputation
- Ensure email content doesn't trigger spam filters:
- Avoid ALL CAPS in subject lines
- Don't use excessive exclamation marks
- Include a plain text version alongside HTML
- Maintain a reasonable text-to-image ratio
- Build sender reputation gradually by starting with low volume and increasing over time
11. CSV Export Empty or Incomplete
Symptoms: Export downloads but contains fewer records than expected.
Steps:
- Check your active filters — exports respect the current filter state
- Clear all filters to export the complete dataset
- For large exports, use date range filters to break into smaller chunks
- Check that logs exist for the selected date range in the Email Logs view
12. SES Webhook Events Not Processing
Symptoms: Email logs stay at sent status and never update to delivered/bounced.
Steps:
- Verify the SNS topic subscription is confirmed and active
- Check that the webhook endpoint (
/api/webhooks/ses) is accessible from the internet - Verify the SES configuration set
theonerelay-eventsis assigned to your SES identity - Check Relay function app logs for webhook processing errors
- Test by sending an email and checking SES sending statistics in the AWS console — if SES shows delivery but Relay doesn't, the webhook pipeline is broken
When to Contact Support
Contact support if:
- Your SES account is suspended or under review
- Domain verification has failed for more than 48 hours with correct DNS records
- Webhook events stop processing for all tenants (platform-wide issue)
- You need rate limit increases beyond standard tiers
- Inbound routing is silently dropping emails (not stored in inbound archive either)
For all other issues, the steps above should resolve the problem. Check Email Logs and Analytics first — they contain the data needed to diagnose most issues.