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

# Before an email can send

> The account setup, CAN-SPAM footer, and DMARC policy that need to be in place before allGood will send an email.

A few things have to be in place before an email can go out. Some live in your account setup and some live in the email itself. If something required is missing, allGood stops the send and tells you exactly what to fix. It never sends without these pieces, and it never adds them behind your back.

## Your account

| Requirement | Where it lives | If it's missing |
| - | - | - |
| **A verified sending domain** | **Email Domains** | The email can't send. See [Set up an email domain](https://docs.allgoodhq.com/mk/settings/email/domains-setup.md). |
| **DMARC at `quarantine` or `reject`** on that domain | Your DNS. The domain's card on **Email Domains** shows the record to publish. | allGood stops the send. See [What allGood requires on your sending subdomain](https://docs.allgoodhq.com/mk/settings/email/authentication.md#what-allgood-requires-on-your-sending-subdomain). |
| **A From name and From address** | **Sender Defaults** in **Settings → Email** | The email can't send. |
| **Your postal address** | **Sender Defaults** in **Settings → Email** | allGood stops the send. |
| **A sending IP** | Assigned by allGood during account setup, shown under **Sending IP** in **Settings → Email** | The email can't send. See [Your sending IP](https://docs.allgoodhq.com/mk/settings/email/sending-ip.md). |

**Settings → Email** tells you where your account stands. **Ready to send** means nothing is blocking. **Not ready to send** lists what to fix. **Worth fixing** lists warnings that don't stop a send.

## Each email

| Requirement | Where it lives | If it's missing |
| - | - | - |
| **An unsubscribe link** in the HTML and the plain-text version | The email or its template | allGood stops the send. |
| **Your postal address, printed** in the HTML and the plain-text version | The email or its template | allGood stops the send. |
| **A plain-text version** | The email | The email can't send. Mailbox providers also read its presence as a sign of quality. |

## Build the footer

Both legal requirements live in the email's footer. Here is a footer that passes the check:

```liquid theme={null}
<a href="{{ send.unsubscribeUrl }}">Unsubscribe</a>
{{ sender.postalAddress }}
© {{ "now" | date: "%Y" }} Your Company
```

The plain-text version needs both as well. A reader whose mail app shows only text sees nothing else:

```liquid theme={null}
Unsubscribe: {{ send.unsubscribeUrl }}
{{ sender.postalAddress }}
```

* **The unsubscribe link** must be a real link whose `href` is `{{ send.unsubscribeUrl }}`. The link text can say whatever you like. The word "unsubscribe" on its own doesn't count, and neither does a link to a preference page of your own. In the plain-text version, the bare URL is the link.
* **The postal address** can be printed with `{{ sender.postalAddress }}` or typed out in an email. allGood compares the finished message to the address in **Sender Defaults**, so an address that doesn't match, or no address configured, fails the check. A template must use `{{ sender.postalAddress }}`, because each email built from it takes the address of the domain that sends it.
* **The year** has no field of its own. The `date` filter on `"now"` prints the current year when the email sends.

allGood never adds a footer for you, so an email whose design has none is stopped, not sent.

> [!WARNING]
>
> Keep the unsubscribe link and the postal address outside any `{% if %}` condition. The check reads the message each recipient actually gets. If a condition hides either one for some recipients, their copy fails.

## When the checks run

* **When you save.** An email or template without `{{ send.unsubscribeUrl }}` in a clickable link, and in its plain-text version, can't be saved. A template without `{{ sender.postalAddress }}` can't be saved either. A near-miss spelling, such as `{{ unsubscribe_url }}`, is called out by name.
* **When the email is approved.** The approver sees the same verdict a send would get, and has to acknowledge anything missing before approving.
* **When it sends.** allGood checks each recipient's finished copy, both the HTML and the plain-text version. If either is missing the link or the address, that send is stopped.

## Good to know

* **The checks always block.** There's no setting to turn a missing unsubscribe link, a missing postal address, or a weak DMARC policy into a warning.
* **Double-check inherited templates.** A placeholder written with the wrong field name shows as blank and fails the check. The correct names are `send.unsubscribeUrl` and `sender.postalAddress`.
* **A weak DMARC policy doesn't stop previews.** A preview sent to you or your team still goes out, so you can keep testing while the policy is raised.
* **Unsubscribing is per email address.** The link opens your Subscription Center, where the person can opt out of all your marketing email. See [How unsubscribes work](https://docs.allgoodhq.com/mk/content/email/emails/how-unsubscribes-work.md).

If a send is stopped and you can't tell why, see [Email not sending or rendering wrong?](https://docs.allgoodhq.com/mk/content/email/emails/troubleshooting.md) or contact [support@allgoodhq.com](mailto:support@allgoodhq.com).

## Related articles

* [Email not sending or rendering wrong?](https://docs.allgoodhq.com/mk/content/email/emails/troubleshooting.md)
* [Authenticate your sending domain](https://docs.allgoodhq.com/mk/settings/email/authentication.md)
* [Web Edge domain vs. email domain](https://docs.allgoodhq.com/mk/settings/email/domains-vs-web-edge.md)
* [Email settings FAQ](https://docs.allgoodhq.com/mk/settings/email/faq.md)


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