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

# Hetzner

> Add the DNS records Lettr needs in the Hetzner DNS Console to verify your sending, inbound, tracking, and storage domains with DKIM and DMARC.

This guide walks you through adding the required DNS records for Lettr using Hetzner's DNS Console. Hetzner is a European hosting provider that offers DNS management through its DNS Console at [dns.hetzner.com](https://dns.hetzner.com).

You will configure a **sending domain** (CNAME, DKIM TXT, and DMARC TXT records) and, optionally, an **inbound domain** (MX records), **tracking domain** (two CNAME records), and **storage domain** (CNAME and two TXT records).

***

## Sending Domain Setup

A sending domain authenticates your outgoing emails with DKIM and DMARC, ensuring they are delivered reliably and not marked as spam. This requires a CNAME record for domain verification, a TXT record for DKIM signing, and a TXT record for DMARC policy.

To create a sending domain in Lettr:

1. Select **Domains** in the navigation panel
2. Select **Sending Domains**
3. Click **Create Sending Domain**
4. Enter your desired sending subdomain (e.g. `mailing.company.com`)
5. Click **Create Domain**

<Tip>
  Use a subdomain (e.g. `mailing.company.com`) instead of the root domain (`company.com`). A subdomain provides proper
  reputation segmentation and is required if you also plan to receive emails with Lettr.
</Tip>

Click your new domain in the Sending Domains list.

This will display a list of DNS records that need to be configured. Keep this page open — you will need these values soon.

### Configure Hetzner DNS

Log in to your [Hetzner account](https://console.hetzner.com/projects) and select one of your projects. In your project dashboard, click on **DNS** in the left-hand menu and select the DNS Zone you want to configure.

<img src="https://mintcdn.com/lettr/ikqqtlrPdNsBj2J4/images/hetz-domain-list.png?fit=max&auto=format&n=ikqqtlrPdNsBj2J4&q=85&s=6f1a108ef50673ea01df1549b8c3988d" alt="Domain listed in Hetzner DNS zone list" width="2568" height="1766" data-path="images/hetz-domain-list.png" />

This will open the domain details page, where you can manage your DNS records.

<img src="https://mintcdn.com/lettr/ikqqtlrPdNsBj2J4/images/hetz-dns-setup.png?fit=max&auto=format&n=ikqqtlrPdNsBj2J4&q=85&s=77b888153b1f08adce6ca627704981ac" alt="Hetzner DNS zone details page with nameserver instructions" width="2548" height="1770" data-path="images/hetz-dns-setup.png" />

<Tip>
  If your domain was purchased through Hetzner or your nameservers already point to Hetzner, skip nameserver
  configuration entirely. Your domain is already using Hetzner's nameservers by default — proceed directly to adding the
  DNS records below.
</Tip>

<AccordionGroup>
  <Accordion title="Domain registered with a different registrar?">
    If you registered your domain elsewhere but want to manage DNS on Hetzner, you must first **update the nameservers**
    at your registrar to Hetzner's nameservers shown in the domain configuration.

    <img src="https://mintcdn.com/lettr/ikqqtlrPdNsBj2J4/images/hetz-nameservers.png?fit=max&auto=format&n=ikqqtlrPdNsBj2J4&q=85&s=15e23f72ca0bda558646588eb39b0a45" alt="Hetzner nameserver configuration" width="2554" height="1852" data-path="images/hetz-nameservers.png" />

    <Warning>Until the nameservers are updated, any records you add in Hetzner will not resolve.</Warning>
  </Accordion>
</AccordionGroup>

### Add CNAME Record

The CNAME record verifies domain ownership with Lettr's email infrastructure.

Copy the CNAME values from Lettr to Hetzner:

1. Expand the **Type** dropdown in Hetzner and select **CNAME**.
2. Copy the **Hostname** from Lettr and paste it into the **Name** field in Hetzner.
3. Copy the **Value** from Lettr and paste it into the **Value** field in Hetzner.
4. Leave **TTL** empty (Hetzner will default to 3600).
5. Click **Add**.

<Info>
  Omit your domain suffix from the Hostname when pasting into Hetzner. For example, instead of `mailing.lettr-demo.com`,
  paste only `mailing`.
</Info>

<img src="https://mintcdn.com/lettr/ikqqtlrPdNsBj2J4/images/hetz-sending-1.png?fit=max&auto=format&n=ikqqtlrPdNsBj2J4&q=85&s=f4ea7d1825ca3c5e61096dfadf8e86c9" alt="Adding CNAME record in Hetzner DNS Console" width="2092" height="832" data-path="images/hetz-sending-1.png" />

### Add TXT Record (DKIM)

The DKIM record adds a cryptographic signature to your outgoing emails, allowing recipients to verify they were sent by an authorized sender.

Copy the TXT values from Lettr to Hetzner:

1. Expand the **Type** dropdown in Hetzner and select **TXT**.
2. Copy the **Hostname** from Lettr and paste it into the **Name** field in Hetzner.
3. Copy the **Value** from Lettr and paste it into the **Value** field in Hetzner.
4. Leave **TTL** empty (Hetzner will default to 3600).
5. Click **Add**.

<Info>
  Omit your domain suffix from the Hostname when pasting into Hetzner. For example, instead of
  `scph0126._domainkey.mailing.lettr-demo.com`, paste only `scph0126._domainkey.mailing`.
</Info>

<img src="https://mintcdn.com/lettr/ikqqtlrPdNsBj2J4/images/hetz-sending-2.png?fit=max&auto=format&n=ikqqtlrPdNsBj2J4&q=85&s=2fa7f23485eb51014a1c79b7485c17cc" alt="Adding DKIM TXT record in Hetzner DNS Console" width="2088" height="774" data-path="images/hetz-sending-2.png" />

### Add TXT Record (DMARC)

The DMARC record tells receiving mail servers how to handle emails that fail authentication checks, protecting your domain from spoofing.

Copy the TXT values from Lettr to Hetzner:

1. Expand the **Type** dropdown in Hetzner and select **TXT**.
2. Copy the **Hostname** from Lettr and paste it into the **Name** field in Hetzner.
3. Copy the **Value** from Lettr and paste it into the **Value** field in Hetzner.
4. Leave **TTL** empty (Hetzner will default to 3600).
5. Click **Add**.

<Info>
  Omit your domain suffix from the Hostname when pasting into Hetzner. For example, instead of
  `_dmarc.mailing.lettr-demo.com`, paste only `_dmarc.mailing`.
</Info>

<img src="https://mintcdn.com/lettr/ikqqtlrPdNsBj2J4/images/hetz-sending-3.png?fit=max&auto=format&n=ikqqtlrPdNsBj2J4&q=85&s=3deffd484a5cb95181717b08eb1f91b7" alt="Adding DMARC TXT record in Hetzner DNS Console" width="2102" height="780" data-path="images/hetz-sending-3.png" />

### Verify Your Sending Domain

After adding all three DNS records, go back to Lettr and click **Verify DNS Records**. DNS propagation can take up to 24–48 hours, though it typically completes within a few minutes.

***

## Inbound Domain Setup

An inbound domain allows Lettr to receive emails on your behalf. This requires three MX records that direct incoming mail to Lettr's mail servers.

### Add Inbound Domain to Lettr

To create an Inbound domain in Lettr:

1. Select **Domains** in the navigation panel
2. Select **Inbound Domains**
3. Click **Create Inbound Domain**
4. Enter your desired inbound subdomain (e.g. `inbound.company.com`)
5. Click **Create Domain**.

Click on your new domain in the Inbound Domains list.

This will display the MX records that need to be configured.

### Add MX Records

MX records tell other mail servers where to deliver emails addressed to your domain.

Copy the MX values from Lettr to Hetzner:

1. Expand the **Type** dropdown in Hetzner and select **MX**.
2. Copy the **Hostname** from Lettr and paste it into the **Name** field in Hetzner.
3. Copy the **Priority** number (e.g. `10`) from Lettr and paste it into the **Priority** field in Hetzner.
4. Copy the **Required MX Record** value (without the priority number) from Lettr and paste it into the **Value** field in Hetzner.
5. Leave **TTL** empty (Hetzner will default to 3600).
6. Click **Add**.
7. Repeat this process for the second (rx2.sparkpostmail.com) and third (rx3.sparkpostmail.com) MX records.

<Info>
  Omit your domain suffix from the Hostname when pasting into Hetzner. For example, instead of `inbound.lettr-demo.com`,
  paste only `inbound`.
</Info>

<img src="https://mintcdn.com/lettr/ikqqtlrPdNsBj2J4/images/hetz-inbound-1.png?fit=max&auto=format&n=ikqqtlrPdNsBj2J4&q=85&s=13520477fce5cfe1e672bb6088c6e186" alt="Adding MX record in Hetzner DNS Console" width="2104" height="832" data-path="images/hetz-inbound-1.png" />

### Verify Your Inbound Domain

After adding all three MX records, go back to Lettr and click **Verify DNS Records**. DNS propagation can take up to 24–48 hours, though it typically completes within a few minutes.

***

## Tracking Domain Setup

A tracking domain allows Lettr to track email opens and link clicks using your own custom domain instead of the default Lettr tracking domain. This requires two CNAME records: one for the SSL certificate and one for routing tracking traffic to Lettr's infrastructure.

### Add Tracking Domain to Lettr

To create a Tracking domain in Lettr:

1. Select **Domains** in the navigation panel
2. Select **Tracking Domains**
3. Click **Create Tracking Domain**
4. Enter your desired tracking subdomain (e.g. `tracking.company.com`)
5. Click **Create Domain**

Click on your new domain in the Tracking Domains list.

This will display the CNAME records that need to be configured.

### Add SSL Certificate CNAME Record

The SSL Certificate CNAME record provisions an SSL certificate for your custom tracking domain, enabling secure HTTPS connections for tracked links.

Add the record in Hetzner:

1. Expand the **Type** dropdown in Hetzner and select **CNAME**.
2. Copy the **Hostname** from Lettr and paste it into the **Name** field in Hetzner.
3. Copy the **Value** from Lettr and paste it into the **Value** field in Hetzner.
4. Leave **TTL** empty (Hetzner will default to 3600).
5. Click **Add**.

<Info>
  Omit your domain suffix from the Hostname when pasting into Hetzner. For example, instead of `track.lettr-demo.com`,
  paste only `track`.
</Info>

<img src="https://mintcdn.com/lettr/ikqqtlrPdNsBj2J4/images/hetz-tracking-1.png?fit=max&auto=format&n=ikqqtlrPdNsBj2J4&q=85&s=66e68d1b9ff15b6f6753af1b0d2930a3" alt="Adding SSL Certificate CNAME record in Hetzner DNS Console" width="2102" height="834" data-path="images/hetz-tracking-1.png" />

### Add Traffic CNAME Record

The Traffic CNAME record routes click and open tracking requests from your custom domain to Lettr's tracking servers.

Add the record in Hetzner:

1. Expand the **Type** dropdown in Hetzner and select **CNAME**.
2. Copy the **Hostname** from Lettr and paste it into the **Name** field in Hetzner.
3. Copy the **Value** from Lettr and paste it into the **Value** field in Hetzner.
4. Leave **TTL** empty (Hetzner will default to 3600).
5. Click **Add**.

<Info>
  Omit your domain suffix from the Hostname when pasting into Hetzner. For example, instead of `track.lettr-demo.com`,
  paste only `track`.
</Info>

<img src="https://mintcdn.com/lettr/ikqqtlrPdNsBj2J4/images/hetz-tracking-2.png?fit=max&auto=format&n=ikqqtlrPdNsBj2J4&q=85&s=b50d979ef13c1fa8557fc72d172fafe8" alt="Adding Traffic CNAME record in Hetzner DNS Console" width="2104" height="826" data-path="images/hetz-tracking-2.png" />

### Verify Your Tracking Domain

After adding both CNAME records, go back to Lettr and click **Verify DNS Records**.

***

## Storage Domain Setup

A storage domain lets you serve email assets (images, attachments) from your own custom domain instead of the default Lettr storage URL. This requires two TXT records for certificate validation and ownership verification, and a CNAME record for routing asset requests to Lettr's storage infrastructure.

### Add Storage Domain to Lettr

To create a Storage domain in Lettr:

1. Select **Domains** in the navigation panel
2. Select **Storage Domains**
3. Click **Create Storage Domain**
4. Enter your desired storage subdomain (e.g. `assets.company.com`)
5. Click **Create Domain**

Click on your new domain in the Storage Domains list.

This will display the TXT and CNAME records that need to be configured.

### Add TXT Record (Certificate Validation)

The Certificate Validation TXT record provisions an SSL certificate for your custom storage domain, enabling secure HTTPS delivery of email assets.

Add the record in Hetzner:

1. Expand the **Type** dropdown in Hetzner and select **TXT**.
2. Copy the **Hostname** from Lettr and paste it into the **Name** field in Hetzner.
3. Copy the **Value** from Lettr and paste it into the **Value** field in Hetzner.
4. Leave **TTL** empty (Hetzner will default to 3600).
5. Click **Add**.

<Info>Omit your domain suffix from the Hostname when pasting into Hetzner, just as with the CNAME record above.</Info>

<img src="https://mintcdn.com/lettr/ikqqtlrPdNsBj2J4/images/hetz-storage-1.png?fit=max&auto=format&n=ikqqtlrPdNsBj2J4&q=85&s=0fad4e7533cce82f082468874a3de8ea" alt="Adding Certificate Validation TXT record in Hetzner DNS Console" width="2108" height="784" data-path="images/hetz-storage-1.png" />

### Add TXT Record (Hostname Pre-validation)

The Hostname Pre-validation TXT record verifies ownership of the storage domain before Lettr provisions a custom hostname for it.

Add the record in Hetzner:

1. Expand the **Type** dropdown in Hetzner and select **TXT**.
2. Copy the **Hostname** from Lettr and paste it into the **Name** field in Hetzner.
3. Copy the **Value** from Lettr and paste it into the **Value** field in Hetzner.
4. Leave **TTL** empty (Hetzner will default to 3600).
5. Click **Add**.

<Info>Omit your domain suffix from the Hostname when pasting into Hetzner, just as with the CNAME record above.</Info>

<img src="https://mintcdn.com/lettr/ikqqtlrPdNsBj2J4/images/hetz-storage-2.png?fit=max&auto=format&n=ikqqtlrPdNsBj2J4&q=85&s=eb9d3132d72a33eb56d6908657d54cb6" alt="Adding Hostname Pre-validation TXT record in Hetzner DNS Console" width="2100" height="774" data-path="images/hetz-storage-2.png" />

### Add CNAME Record (Domain Routing)

The Domain Routing CNAME record routes asset requests from your custom domain to Lettr's storage infrastructure.

Add the record in Hetzner:

1. Expand the **Type** dropdown in Hetzner and select **CNAME**.
2. Copy the **Hostname** from Lettr and paste it into the **Name** field in Hetzner.
3. Copy the **Value** from Lettr and paste it into the **Value** field in Hetzner.
4. Leave **TTL** empty (Hetzner will default to 3600).
5. Click **Add**.

<Info>
  Omit your domain suffix from the Hostname when pasting into Hetzner. For example, instead of `assets.lettr-demo.com`,
  paste only `assets`.
</Info>

<img src="https://mintcdn.com/lettr/ikqqtlrPdNsBj2J4/images/hetz-storage-3.png?fit=max&auto=format&n=ikqqtlrPdNsBj2J4&q=85&s=e3113cb189e0c35692b3e97fa7b0a160" alt="Adding Domain Routing CNAME record in Hetzner DNS Console" width="2104" height="834" data-path="images/hetz-storage-3.png" />

### Verify Your Storage Domain

After adding all three records, go back to Lettr and click **Verify DNS Records**.

***

## Troubleshooting

<AccordionGroup>
  <Accordion title="Domain Suffix Not Omitted">
    Hetzner automatically appends your zone's domain to the record name. If you paste the full hostname (e.g. `mailing.lettr-demo.com`), the resulting record will be `mailing.lettr-demo.com.lettr-demo.com`, which will fail verification.

    Always paste only the subdomain portion (e.g. `mailing`, `scph0126._domainkey.mailing`, `_dmarc.mailing`).
  </Accordion>

  <Accordion title="Records Not Propagating">
    If verification fails after adding records, check the following:

    * **Wait at least 30 minutes** before your first verification attempt. Most records propagate within 1–2 hours.
    * **Confirm the records exist** using command-line tools:

    ```bash theme={null}
    # Check CNAME record
    dig CNAME mailing.yourdomain.com +short

    # Check DKIM record
    dig TXT scph0126._domainkey.mailing.yourdomain.com +short

    # Check DMARC record
    dig TXT _dmarc.mailing.yourdomain.com +short

    # Check MX records (inbound)
    dig MX inbound.yourdomain.com +short

    # Check tracking domain CNAME
    dig CNAME track.yourdomain.com +short

    # Check storage domain CNAME
    dig CNAME assets.yourdomain.com +short
    ```

    * **Use a web tool** like [dnschecker.org](https://dnschecker.org) to verify propagation across multiple DNS servers worldwide.
  </Accordion>

  <Accordion title="Wrong Record Type">
    A common mistake is selecting the wrong type in Hetzner's record type selector:

    | Record                          | Correct Type |
    | ------------------------------- | ------------ |
    | Sending verification            | CNAME        |
    | DKIM                            | TXT          |
    | DMARC                           | TXT          |
    | Inbound mail                    | MX           |
    | Tracking SSL certificate        | CNAME        |
    | Tracking traffic                | CNAME        |
    | Storage certificate validation  | TXT          |
    | Storage hostname pre-validation | TXT          |
    | Storage domain routing          | CNAME        |
  </Accordion>

  <Accordion title="MX Record Trailing Period">
    Hetzner may require a trailing period on MX values (e.g. `rx1.sparkpostmail.com.`). Try adding it if verification
    fails.
  </Accordion>

  <Accordion title="DKIM Value Truncated">
    The DKIM TXT value is a long string. After saving the record in Hetzner, re-open it to confirm the full value was stored. If it appears truncated, try pasting the value again. Hetzner's DNS Console supports long TXT values, but copying errors can occasionally cut off the string.
  </Accordion>

  <Accordion title="Nameservers Not Updated">
    If your records are saved in Hetzner but not resolving, confirm that your domain registrar is pointing to Hetzner's nameservers. You can check this with:

    ```bash theme={null}
    dig NS yourdomain.com +short
    ```

    The output should include Hetzner nameservers (e.g. `hydrogen.ns.hetzner.com`, `oxygen.ns.hetzner.com`, `helium.ns.hetzner.de`). If it shows a different provider's nameservers, update them at your domain registrar.
  </Accordion>

  <Accordion title="When to Contact Support">
    If your DNS records are correctly configured (confirmed with `dig` or dnschecker.org) and verification still fails after 48 hours, contact Lettr support at **[support@lettr.com](mailto:support@lettr.com)** or through the in-app chat. Include your domain name and the output of the `dig` commands above.
  </Accordion>
</AccordionGroup>

***

## Related Topics

<CardGroup cols={2}>
  <Card title="Sending Domains" icon="paper-plane" href="/learn/domains/sending-domains">
    Learn about sending domain setup, SPF, DKIM, and DMARC.
  </Card>

  <Card title="Inbound Domains" icon="inbox" href="/learn/domains/inbound-domains">
    Configure MX records to receive emails with Lettr.
  </Card>

  <Card title="Tracking Domains" icon="link" href="/learn/domains/tracking-domains">
    Set up a custom tracking domain for click and open tracking.
  </Card>

  <Card title="Storage Domains" icon="hard-drive" href="/learn/domains/storage-domains">
    Serve email assets from your own custom domain.
  </Card>

  <Card title="Domains Overview" icon="globe" href="/learn/domains/introduction">
    Understand domain types and how they work in Lettr.
  </Card>

  <Card title="Domain Verification Failures" icon="circle-exclamation" href="/knowledge-base/troubleshooting/domain-verification">
    Troubleshoot common DNS configuration and propagation issues.
  </Card>
</CardGroup>
