> ## Documentation Index
> Fetch the complete documentation index at: https://ahasend.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> AhaSend stores all message data in the EU. See /facts.
> The API base URL is https://api.ahasend.com. Send the API key in the Authorization: Bearer header. See /api-reference/authentication.
> Use send.ahasend.com for SMTP. Ports 25, 587 and 2525 use STARTTLS. Port 465 is not supported. See /smtp.
> For send-only integrations, create an API Key v2 under Credentials → Add and scope it to messages:send:{your-domain}. See /send-api/credentials and /api-reference/scopes.

# Email Troubleshooting and FAQ

> Fix common AhaSend email problems: domains that do not verify, paused sending, missing messages, port 465 failures, API 403 errors and suppressions.

AhaSend troubleshooting starts with the failed step: DNS verification, authentication, message acceptance or recipient delivery; this FAQ points you to the right checks.

## Why Is My AhaSend Domain Not Verifying?

Check that the records are saved at the provider serving your current nameservers, with the exact full names, types and values shown in AhaSend. A repeated domain suffix, proxied CNAME or duplicate SPF record can break verification. Use your [provider guide](/docs/dns.md), then **Check DNS**. See [domain setup](/docs/domains.md) for propagation timing and required records.

## Why Does the API Return 403 Domain Not Allowed?

The key must belong to the right account and allow the domain in the message's From address. Check the account ID, verified sender and [key scope](/docs/api-reference/scopes.md). A domain-scoped key for `example.com` does not automatically authorize a different sending domain. Follow [send-only key setup](/docs/send-api/credentials.md) and read the actual [API error message](/docs/api-reference/errors.md).

## Why Is Sending Paused on My Domain?

AhaSend refuses new email from a paused domain. It pauses a domain when too many recent emails from it bounced. Your other domains continue to send. Check the domain page in the dashboard for the reason and the next steps. See [paused domains](/docs/domains.md#why-is-sending-paused-on-my-domain).

## Why Is Sending Paused on My Account?

AhaSend refuses all new email from a paused account. Each v2 API request that uses an API key of the account gets HTTP 401 with `account is paused`. SMTP refuses each message with code `521`. You can still sign in to the dashboard. The dashboard alert shows the reason and the next steps. AhaSend can also send an email about the pause to the account members. For a sub-account, the members of the parent account also get it.

When the parent account is paused, its sub-accounts cannot send. A send request of a sub-account then gets HTTP 403 with `Sending is paused on the parent account. Contact the parent account owner.`, and the sub-account dashboard shows a banner.

| Reason | What to do next |
| - | - |
| Too many recent emails had content that we do not permit. For example: marketing content from a transactional domain, phishing or cold email. | Tell us which domains send marketing email. Set the [sending type](/docs/domains.md#sending-type) of those domains to marketing, or ask us to do it. Do not send phishing or cold email. |
| Too many recent emails got a high spam score. | Remove content that looks like spam. |
| Too many recent emails bounced. | Remove addresses that are not valid or old. Send only to people who asked for your email. |
| We found a violation of our terms of service. | Contact support. |
| Our team must examine your account. | Contact support. |
| The owner of the parent account paused this account. | Contact the owner of the parent account. |

You cannot lift a pause on your own account. If AhaSend paused it, fix the cause, then reply to the pause email or write to [support@ahasend.com](mailto:support@ahasend.com). AhaSend support examines the account and lifts the pause. For a sub-account, the parent account can also lift the pause, except a pause for a terms of service violation or for an examination by our team. If the parent account paused it, contact the owner of the parent account.

The owner or an Administrator of the parent account can resume a paused [sub-account](/docs/scale/sub-accounts.md): open the sub-account in **Settings > Sub-accounts** and click **Resume**, or call [Resume Sub-Account](/docs/api-reference/sub-accounts/unsuspend-sub-account.md). The parent cannot resume a sub-account that our team paused for a terms of service violation or for an examination; contact support for these. When the parent account is paused, its sub-accounts cannot send until AhaSend support lifts that pause.

## Why Does SMTP Port 465 Not Work?

Port 465 on `send.ahasend.com` uses implicit TLS. Set your client's security option to SSL/TLS (also called SMTPS or implicit TLS), not STARTTLS: a client that waits for a greeting before it starts TLS gets no greeting, and the server closes the connection after 30 seconds. See the settings for common libraries on [SMTP](/docs/smtp.md#does-ahasend-support-port-465). Authenticate with an SMTP username and password; an API key is not an SMTP password. If the connection itself times out, check outbound network access on your host: some hosting providers block port 465. Ports 587 and 2525 with STARTTLS work the same way.

## Why Was My Email Delivered but Not Received?

Delivered means the recipient server accepted the message, not that it placed it in the inbox. Ask the recipient to check spam, quarantine, rules and forwarding. Compare the exact recipient and delivery timestamp with the [message log](/docs/api-reference/messages/get-message.md). For repeated issues, examine [authentication](/docs/email-authentication.md) and [sender reputation](/docs/deliverability.md). A sandbox send is never delivered to a mailbox.

## Why Is the Message Queued or Deferred?

Queued means accepted for processing; deferred means an attempt hit a temporary problem. Check whether the message was scheduled, read delivery attempts, and look for the affected recipient provider. Let AhaSend continue its attempts rather than sending another copy. See [bounces and failures](/docs/bounces.md) and [schedule rules](/docs/send-api/send-email.md).

## Why Was a Recipient Suppressed?

A matching suppression stops the send. Look up its reason, sending domain and expiry before changing it. An unsubscribe or complaint is not fixed by deleting the record. See [suppression duration and removal guidance](/docs/bounces.md).

## Why Did HTTP 202 Still Include an Error?

The API can accept a request while a recipient entry has `status: error`. Check every item in the response's `data` array and its error details; do not report a complete success based only on HTTP 202. See the [send response](/docs/send-api/send-email.md) and [Create Message](/docs/api-reference/messages/create-message.md).

## Why Did a Retry Send a Duplicate?

Use a stable [idempotency key](/docs/api-reference/idempotency.md) with the exact same API payload and within its supported window. A timeout or server error can leave the outcome uncertain. Check your job record and message log before retrying. SMTP does not offer that API header, and a new random key on every retry cannot identify the original job.

## Why Are Webhooks Missing or Failing Verification?

Check that the endpoint is enabled, subscribed to the needed event and reachable at its final URL. Verify the original request bytes and full raw secret before parsing or changing the body. Do not base64-decode AhaSend secrets. See [signature verification](/docs/api-reference/webhooks/security.md), [retry behavior](/docs/api-reference/webhooks/retry-policy.md) and [local tests](/docs/cli/webhook-testing.md).

## What Should I Collect Before Asking for Help?

Check the [status page](https://status.ahasend.com). Record the time and timezone, message or job ID, sender domain, affected recipient domain, response status and sanitized error text. Keep keys, SMTP passwords, signing secrets and private message content out of screenshots and tickets. Use the support route for your [plan](/docs/facts.md).

## Related Guides

* [Domain setup](/docs/domains.md), [DNS providers](/docs/dns.md) and [send-only API keys](/docs/send-api/credentials.md).
* [REST API](/docs/send-api/send-email.md), [SMTP settings](/docs/smtp.md), [CLI quickstart](/docs/cli/quickstart.md), [Node.js SDK](/docs/guides/nodejs-sdk.md) and [Go SDK](/docs/guides/go-sdk.md).
* [Plans and limits](/docs/facts.md), [delivery webhooks](/docs/integrations/webhooks.md) and [troubleshooting](/docs/troubleshooting.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.