Email-sending domain

By default, every email the portal sends to your clients goes out from no-reply@contractorcodex.com. Clients see the platform domain, not yours. Configuring your own sending domain replaces that with you@yourdomain.com for every outgoing email — quote notifications, invoice receipts, contract reminders, the lot.

Why bother

  • Deliverability. Emails from a verified domain you own land in inboxes. Emails from the platform default land in spam more often, especially for clients with strict corporate gateways.
  • Trust. Clients open emails from a domain they recognize. They flag emails from a domain they don't.
  • Reply-to. Replies route to your domain's mail server. The platform's no-reply inbox can't receive replies at all.

Setting it up

Go to Settings → Email Domain.

Add the domain

Type the domain you want to send from (e.g., acmeplumbing.com, or a subdomain like mail.acmeplumbing.com). The form accepts common variations and sanitizes them:

  • https://acmeplumbing.com becomes acmeplumbing.com
  • acmeplumbing.com/ becomes acmeplumbing.com
  • user@acmeplumbing.com becomes acmeplumbing.com

The portal trims protocols, trailing slashes, paths, ports, and email-style prefixes before saving. Whatever you paste, you'll get the bare domain back.

If you've previously registered this domain in Resend under a different account (common when an old setup got abandoned), the portal will detect that and adopt the existing Resend record instead of creating a duplicate. You'll see a green confirmation that says the domain was reattached.

Add the DNS records

Once you've saved the domain, the portal generates four DNS records you need to add at your registrar:

  1. DKIM TXT at resend._domainkey.<your-domain> — proves outbound messages are signed by you.
  2. SPF MX at send.<your-domain> — points at feedback-smtp.us-east-1.amazonses.com with priority 10.
  3. SPF TXT at send.<your-domain> with value v=spf1 include:amazonses.com ~all — authorizes the sending service.
  4. DMARC TXT at _dmarc.<your-domain> (optional but recommended).

Open your DNS host's control panel (Cloudflare, Namecheap, Route 53, GoDaddy, etc.) and add each record exactly as the page shows. Keep TTL at "Auto" if your provider supports it; otherwise 3600 seconds is fine.

Verify

Click Verify in the portal. The portal calls Resend's verification API which checks all the records you added.

DNS propagation can take a few minutes to a few hours depending on your registrar. If verify fails on first try, wait 5-10 minutes and try again. If it still fails after an hour, double-check the record values exactly match what the portal showed.

Once verified, the page shows a green "Verified" badge and saves the verification timestamp.

What the From address looks like

The full From header is "<your-brand-name>" <fromuser@yourdomain.com>. The brand name is always your business name (set on Settings), even when the email is going out under the platform's shared sender. That way the client sees your business in their inbox preview pane, not a generic platform name.

You control two parts:

  • fromName — what's in quotes in the From header. Defaults to your business name. Override on the email-domain settings page if you want a different display name (e.g., "Acme Plumbing Support" instead of just "Acme Plumbing").
  • fromUser — the local part of the email address (the bit before the @). Defaults to portal. Change it to hello, support, billing, or whatever fits your brand.

When something goes wrong

The email-domain page surfaces errors as banners at the top, not as dropped form data. Common issues:

  • "Domain already verified by another account." Resend allows one domain across all accounts. If you used the domain previously in a different Resend account, the portal will offer to adopt it for you (single click). If the domain belongs to someone else entirely, you'll need to free it on the other account first.
  • "DNS records not found." Your record values don't match what Resend expects. Double-check spelling, especially the DKIM record (it's a long string and one character off invalidates the whole thing).
  • "Verification in progress." Resend is still checking. Wait 5-10 minutes and refresh.

When you re-submit the form after an error, the field stays filled in with whatever you typed — you don't lose your work to the banner.

Without a verified domain

You can use the portal without configuring a sending domain at all. Emails go out from the shared platform sender no-reply@contractorcodex.com but the From header still shows your business name in quotes. Deliverability is fine for most use cases, but inbox placement is unpredictable and your clients will see the platform's domain in the reply field.

We recommend setting up your own domain before sending any production volume. It's a one-time setup that takes 20 minutes including DNS propagation wait time.