Setup guide

From bare domain to working inbox, step by step.

Everything below happens in your browser and your registrar's control panel. No terminal, no server, no prior email experience needed.

≈ 10 minutes activeDifficulty: copy & pasteUpdated July 2026

Before you start, you need three things

A domain you own (e.g. acme.com) — any registrar works

Access to that domain's DNS settings — wherever you log in to manage the domain

A free Resend account — created in step 2, takes two minutes

Already receiving email on this domain? (Google Workspace, Zoho, etc.) Connecting Freemail replaces your MX records, which moves all incoming mail here. Read the migration note before continuing.

Create your Freemail account

~1 min

Sign up with your current email address (Gmail is fine — this is just for logging in). We send a verification link; click it and you're in.

Get a free Resend API key

~2 min

Why this step exists: Resend is the delivery service that carries your mail. On the Free plan you connect your own Resend account, so its free quota — 3,000 emails a month, up to 100 a day, one verified domain — belongs to you alone. No shared limits with other Freemail users.

  1. Go to resend.com/signup and sign up (free, no card).
  2. In the left sidebar choose API Keys, then Create API key.
  3. Name it freemail, set permission to Full accessnot "Sending access", which can't create the domain or the inbound webhook. Click Create.
  4. Copy the key — it starts with re_. You'll paste it in the next step.
Resend shows the key once. If you lose it, just create a new one — old keys can be deleted safely.

Connect your domain in Freemail

~1 min

In your inbox, open Domains → Connect your domain. Type your domain, paste the re_… key, and hit Next. Freemail registers the domain with your Resend account and shows the exact DNS records you'll copy in step 4 — each with its own copy button.

Add the DNS records at your registrar

~5 min

Open your registrar's DNS panel in another tab and add each record from your connect screen. The table below shows the shape — your screen has the exact values with one-click copy, so you never retype a DKIM key.

TypeNameValueWhat it does
MX@inbound.resend.comroutes incoming mail to your inbox
TXT@v=spf1 include:resend.com ~allauthorizes sending (SPF)
TXTresend._domainkeyp=MIGfMA0… (from your connect screen)signs your mail (DKIM)
MXsendfeedback-smtp… (from your connect screen)bounce handling
TXTsendv=spf1 include:amazonses.com ~allSPF for the send subdomain

Pick your registrar for the exact click-path:

Cloudflare: dashboard → select your domain → DNSRecordsAdd record. Create each row exactly as shown. Important: set the proxy-status cloud to DNS only (grey) — proxied records break mail routing.
Namecheap: Domain List → Manage next to your domain → Advanced DNSAdd New Record. For the MX rows, Namecheap keeps mail settings in the same tab under "Mail Settings" — choose Custom MX if prompted. Use @ for the root Name.
GoDaddy: My Products → your domain → DNSAdd New Record. Pick the record type, paste Name and Value. GoDaddy writes @ for the root automatically if you leave Name empty.
Porkbun: Domain Management → your domain → DNS Records. Porkbun pre-fills your domain in the Host field — leave it as-is for root records (@), or type send / resend._domainkey in front for the subdomain rows.
Any registrar: find the page called DNS settings, DNS management, or Zone editor. Add each record with the Type, Name and Value from your connect screen. If the panel rejects @ as a Name, try leaving the field blank — both mean "the domain itself".

Verify

usually minutes

Back in Freemail, click Verify DNS. Records usually propagate within minutes; occasionally DNS takes up to an hour (rarely, longer). Green means done. Not green? The troubleshooting section covers the mistakes that cause 90% of failures.

Add an address and send your first email

~1 min

Add hello (or your name) as an address — or flip on catch-all to receive mail sent to anything@your domain. Note: on the Free plan, inbound mail also counts against your Resend quota, so catch-all on a busy domain eats it faster.

Then send a test to your personal email and reply to it. Both directions working? You're running email on your own domain.

That's the whole setup.

No renewals to babysit, no server to patch. Add more addresses any time under Domains.

Open your inbox

Troubleshooting

Verify keeps failing after 30+ minutes

Check the Name column: most registrars want @ for the root — but some want it blank, and some want the full domain. Also confirm you didn't paste a trailing space into the DKIM value.

"You already have an SPF record"

A name may only carry one SPF TXT record. Merge them: keep one record and combine the include: parts, e.g. v=spf1 include:resend.com include:other-provider.com ~all.

Cloudflare users: the record shows an orange cloud

MX and TXT records must be DNS only (grey cloud). Proxied records break mail routing.

I had Google Workspace / Zoho mail on this domain

Your old MX records and Freemail's can't coexist — incoming mail follows MX. Export or forward anything you need from the old mailbox first, then switch. The old mailbox stops receiving new mail once the new records are live.

Want stricter spoofing protection? (optional DMARC)

Add a TXT record at _dmarc with value v=DMARC1; p=quarantine; — it tells inbox providers what to do with mail that fails SPF/DKIM. Optional, and safe to add after everything works.