nintact
Common wall

Your form's mailis not arriving.

Almost always the problem is not your code — it is the domain's mail configuration. Here is how to tell which one it is, and the two ways out.

What is usually wrong

01

The domain has no SPF or DKIM

Gmail and Yahoo stopped accepting unauthenticated mail. If you are sending through a shared host's mail() or a bare SMTP relay, this is usually what is missing. It fails silently: the sender sees success, nobody receives anything.

02

No DMARC, or the From domain is not aligned

Bulk senders need DMARC. Even with SPF and DKIM in place, mail fails when the From domain does not align with what was authenticated. Forms that send 'from' the visitor's own address fail here almost every time.

03

A static site with nothing to send with

Next.js exported statically, Astro, Nuxt, Cloudflare Pages, GitHub Pages — there is no server to send from. You end up signing up for a mail API, storing a key, and writing a function just to deliver one message.

04

Using the visitor's address as the sender

Setting From to the person who filled in the form means claiming someone else's domain. That is spoofing, and it is treated as such. The sender should be you (or a sending service), with the visitor in Reply-To.

Two ways out

Authenticate your own domain

Publish SPF, DKIM and DMARC, and set up a sending domain. The right answer long term, and days rather than minutes once you count key generation, propagation and checking alignment. It also assumes you can edit the DNS.

Send over a domain that is already authenticated

Hand the sending itself to infrastructure that has already done this. No DNS work on your side, and Reply-To carries your address, so answers land in your normal mailbox. That is what nintact is.

Start free

One line to install. If you would rather not rebuild the form you have, point its action at the endpoint and keep your markup. Submissions come back sorted, with a reply already drafted.

<script src="https://nintact.com/embed.js"
        data-nintact="YOUR_FORM_ID" async></script>

Questions

The code looks right and mail still does not arrive. What should I check?

Start with your domain's SPF, DKIM and DMARC rather than the form. The deliverability check resolves them live and tells you what is missing. The domain is the cause far more often than the implementation.

It lands in spam rather than vanishing. Same problem?

Usually yes. Spam placement comes from missing authentication, or authentication that does not align with the From domain. Fixing the records, or sending over an authenticated domain, resolves both.

Can I fix this without touching DNS?

For form mail, yes. If the message leaves over an already-authenticated sending domain, nothing on your domain changes. Setup is confirming one email address and takes about a minute.

Do I have to rebuild my existing form?

No. Point its action at the endpoint and everything stays — same fields, same markup, same CSS.