Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 2 additions & 6 deletions domains.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ Before setting up your domain, make sure you have:
- **The domain or subdomain** you want to use for sending emails

<Info>
**Managed DNS vs manual DNS:** New domains in AhaSend use managed DNS (DNS v3) by default. Managed DNS shows two DKIM CNAME records so AhaSend can rotate DKIM keys safely over time. Some older or explicitly manual domains may still use the legacy single-DKIM-TXT setup instead. Your domain details page is always the source of truth for the exact records you need to publish.
**Managed DNS vs manual DNS:** New domains in AhaSend use managed DNS by default. Managed DNS shows two DKIM CNAME records so AhaSend can rotate DKIM keys safely over time. A domain with manual DNS uses a single DKIM TXT record instead. Your domain details page is always the source of truth for the exact records you need to publish.
</Info>

<Steps>
Expand Down Expand Up @@ -138,7 +138,7 @@ Before setting up your domain, make sure you have:
**Record Type:** Usually `CNAME` for managed DNS, sometimes `TXT` for manual DNS
**Purpose:** Prevents email tampering, confirms sender identity, and enables safe DKIM rotation on managed domains

**Managed DNS (DNS v3):**
**Managed DNS:**

```text
Name: managed._domainkey.(your domain or subdomain)
Expand All @@ -161,10 +161,6 @@ Before setting up your domain, make sure you have:
Type: TXT
Value: [unique DKIM public key]
```

<Note>
If you are working with a legacy or explicitly manual domain, your dashboard will show a single DKIM TXT record instead of the managed CNAME-based setup.
</Note>
</Accordion>

<Accordion title="DMARC record (Required)" icon="shield-halved">
Expand Down
6 changes: 1 addition & 5 deletions guides/drupal.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ sidebarTitle: "Drupal"
description: "Send Drupal email through AhaSend API v2 with the AhaSend module: add a Symfony Mailer transport, test in sandbox mode and log events from signed webhooks."
---

The [AhaSend module](https://www.drupal.org/project/ahasend) adds an AhaSend transport to Drupal's Symfony Mailer module. Your site's email, such as password resets, account notifications and form submissions, is sent through the AhaSend API v2. The module can also receive signed AhaSend webhooks and show the delivery events of each message in Drupal.
The [AhaSend module](https://www.drupal.org/project/ahasend) adds an AhaSend transport to Drupal's Symfony Mailer module. Your site's email, such as password resets, account notifications and form submissions, is sent through the AhaSend API v2. The module can also receive signed AhaSend webhooks and show the delivery events of each message in Drupal. This guide covers version 2.x of the AhaSend module.

## Prerequisites

Expand All @@ -14,10 +14,6 @@ The [AhaSend module](https://www.drupal.org/project/ahasend) adds an AhaSend tra

Composer also installs the required [Symfony Mailer](https://www.drupal.org/project/symfony_mailer) module. The AhaSend module works with Symfony Mailer 1.6 or later and with 2.x, which is called Mailer Plus. This guide notes where the two differ.

<Note>
Version 2.x of the module uses API v2. It replaces version 1.x, which used the legacy API v1 and the Mail System module. Version 1.x is no longer supported and has no upgrade path.
</Note>

## Install the Module

From your Drupal project root:
Expand Down
4 changes: 2 additions & 2 deletions roadmap.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -385,8 +385,8 @@ The AhaSend roadmap shows active work, planned improvements and shipped features
<div className="rm-accent" />

<div>
<p className="rm-title">DKIM rotation for older domains <span className="rm-tag is-improvement">Improvement</span></p>
<p>Add DKIM rotation support when upgrading legacy domains.</p>
<p className="rm-title">DKIM rotation for manual-DNS domains <span className="rm-tag is-improvement">Improvement</span></p>
<p>Add DKIM rotation support when a manual-DNS domain moves to managed DNS.</p>
</div>
</div>

Expand Down
2 changes: 1 addition & 1 deletion security/ip-allow-lists.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Available on Free, Pro and Max. See [plans and features](/facts#plans-and-featur

## How it works

Every API key carries an `ip_allow_list`. It is empty by default, and an empty list means no restriction, so existing keys keep working exactly as before.
Every API key carries an `ip_allow_list`. It is empty by default, and an empty list means no restriction.

When the list is not empty:

Expand Down
4 changes: 2 additions & 2 deletions send-api/ahaml.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -545,7 +545,7 @@ A read prints the stored design as the email draws it. So some designs come back
- A `Color` mark with no color comes back as the paragraph color, `#374151`. A `Highlight` with no color, an empty color and an image with no source draw nothing, and are left out.
- A theme setting the stored design lacks comes back at the value the email is drawn with.
- A section padding or margin, or a border width or radius, that the editor keeps as one value for all four sides comes back with all four sides at that value.
- A setting an older editor stored that the email does not use, such as a color on a list item, is left out.
- A stored setting that the email does not use, such as a color on a list item, is left out.
- A paragraph, heading or footer whose text draws nothing, such as spaces alone, is left out. An empty paragraph, which draws a blank line, stays. When the only text is characters XML cannot hold and one of them draws a line, the block comes back as one line: an empty paragraph, or a heading or footer holding a `<Br/>`.
- A rule whose result is known before the email is sent, such as one on a name that is not valid, is left out when it always shows its block, and the block is left out with it when it always hides it. A `Repeat` whose list name is not a valid name is left out with its blocks.
- A rule whose action is neither show nor hide is left out, as the email always shows its block. A `value` stored with `is_true` or `is_false` is left out, as those operators do not read it.
Expand All @@ -554,7 +554,7 @@ A read prints the stored design as the email draws it. So some designs come back

A block left out as above can take its bottom margin with it where no block next to it draws as large a margin: at the start or the end of the tag that holds it, or after a `Spacer`, a `Columns` or a `Section` with no bottom margin.

A design made by an older editor comes back with every setting it lacks at its default, as the editor fills them when it opens the design. This is the one case where an edit can change the sent email beyond what the edit itself changes: a write stores the filled settings, as the next save in the dashboard would. AhaML sent back unchanged keeps the stored design.
A setting other than a theme setting that the stored design lacks comes back at its default, as the editor fills it when it opens the design. This is the one case where an edit can change the sent email beyond what the edit itself changes: a write stores the filled settings, as the next save in the dashboard would. AhaML sent back unchanged keeps the stored design.

A design AhaML cannot show reads with `markup` null and `markup_error` set:

Expand Down
Loading