[ Email sender guides ]

FormAssembly SPF, DKIM and DMARC setup, step by step

By the EmailAuth research team · 10 min read

On this page

FormAssembly custom sender domains need SPF authorization using include:spf1.formassembly.com. For branded DKIM on Essentials plans and above, contact FormAssembly Support with your instance URL, sending domain and an alphanumeric selector name. Complete sender-address verification too, then test a real notification, auto-response and workflow email separately. A verified sender or published key alone does not prove DMARC alignment. FormAssembly authentication requirements

This guide reviews public documentation; no customer account, DNS change or delivery test was performed.

Choose the email route before editing DNS

This guide covers emails sent by FormAssembly. A connector that triggers Salesforce or another service to send mail has a different sending system; configure that system's authentication instead of assuming FormAssembly's include authorizes it.

Route Where to inspect the sender Test to retain
Internal response notification Form's Notifications page and customized template A completed test response delivered to the internal recipient
Auto-responder Auto-Responder sender and Reply-To settings The acknowledgement delivered to a controlled respondent inbox
Workflow Email Step Step's Configure tab Each distinct email step reached by a test workflow

Workflow settings are copied from a form only once. Later changes to the form notification do not update that workflow step, or vice versa. This explains why one route can use a corrected sender while another continues to fail. Workflow Email Step

Keep the respondent's address separate from your authenticated sender. Use an address on a domain you control as Sender Email; put the respondent address in Reply-To where appropriate. FormAssembly does not authorize you to impersonate Gmail, Yahoo or AOL senders. Reply-To does not determine DMARC alignment. Notification and auto-responder settings

If the form instead triggers a separate Microsoft 365 sender, use the Microsoft 365 authentication guide for that route. FormAssembly’s sender verification and provisioned DKIM do not configure a different service.

Prepare the domain and account

Before making changes, collect:

  • The exact instance, subscription, form and workflow owners.
  • A controlled Sender Email mailbox and the intended visible From domain.
  • Access to that domain's authoritative DNS, not simply the registrar account.
  • Existing SPF, DKIM selectors and applicable DMARC policy, including policy inherited from an ancestor domain.
  • A list of other legitimate senders and a DNS export for narrow rollback.
  • Controlled external test inboxes and permission to submit non-sensitive test responses.

Choose a new DKIM selector that will not collide with another service. A selector is a name used to locate the public key; it is not the private signing key. Never publish a private key in DNS or a support screenshot.

Add FormAssembly to SPF without breaking other senders

FormAssembly requires its authorization in the custom sender domain's SPF before that sender can be verified; otherwise mail can fall back to no-reply@formassembly.com. Add this mechanism to the existing SPF policy before its final all mechanism:

include:spf1.formassembly.com

This is a mechanism, not a second standalone SPF record. Preserve every still-required authorization and the existing final qualifier. Do not replace an organization's Microsoft 365, Google Workspace or transactional-service permissions with a FormAssembly-only example. The vendor allows up to 48 hours for DNS changes to become visible to verification. SPF requirements

Publish at the exact domain being verified. For forms.example.com, an SPF record at example.com does not automatically apply. Check whether the DNS editor expects forms or the full name, and avoid an accidental forms.example.com.example.com owner.

SPF checks the SMTP envelope sender, usually shown as smtp.mailfrom by the receiver, not the visible From field. FormAssembly's domain-verification requirement and the receiver's SPF result are different checks. An include in your From domain cannot change a provider-owned Return-Path into your domain. SPF identity and evaluation

There must be only one TXT record beginning v=spf1 at an owner. Several quoted strings in a single TXT record are not necessarily several records. Count DNS-query-causing SPF terms across the evaluated include/redirect path: the limit is 10, not 10 visible includes. Resolve duplicate policies, syntax faults or obsolete authorizations before adding more. Do not manually flatten provider hostnames into today's IP addresses; that creates a stale list when the service changes infrastructure. SPF limits

If an existing SPF policy uses redirect=, preserve its intended authorizations and final semantics through a reviewed merge. Any all mechanism causes redirect to be ignored, so appending a canned policy or an all without reviewing that dependency can change which senders are authorized. SPF redirect semantics.

Request DKIM, publish the issued record and confirm activation

Contact Support with the instance URL, domain and your chosen single alphanumeric selector. FormAssembly documents eligibility from Essentials upward and a typical setup time of one to two days. Review Support Email, Bounce Email, Default Notification Email and Default Notification Sender in the relevant Admin Dashboard settings. DKIM provisioning

Ask Support to confirm the record type, fully qualified owner, complete public value or target, signing domain and activation step for this instance. Use exactly the issued values. There is no universal FormAssembly public key to copy from an article.

Item supplied for your instance What to do
TXT public-key record Publish the full supplied public record at the issued selector owner; preserve all key characters
CNAME, if explicitly issued by Support Publish the supplied target without proxying or flattening; do not put TXT or another record at the same owner
Signing domain and selector Record them for comparison with the delivered message's d= and s=
Activation instructions Complete Support's confirmation; DNS publication alone does not start signing

The public document does not expose a universal DNS payload or self-service activation button. If the response lacks these details, obtain them before editing. Do not generate an unrelated key in a third-party tool and expect FormAssembly to use its private counterpart.

For an issued signing domain such as news.example.com, a full owner SELECTOR._domainkey.news.example.com is SELECTOR._domainkey.news relative to the parent example.com zone, or SELECTOR._domainkey in a separately delegated news.example.com zone. If _domainkey.news.example.com itself is delegated, the relative owner there is SELECTOR. Replace the selector placeholder with the issued value, preserve the account’s exact type and public value, and publish at the actual authority without removing the NS delegation. This example explains name placement, not automatic product eligibility for a new domain. DKIM owner construction, relative DNS names.

For Cloudflare-hosted DNS, an issued authentication CNAME should be DNS-only and remain visible as a CNAME, not flattened to an IP response. This conditional safeguard does not mean this provider necessarily issues CNAMEs. Cloudflare proxy status · CNAME flattening

These controls apply only if Support explicitly issues a CNAME, not to an issued TXT key. For authentication records that actually use CNAME, retain a literal CNAME answer to the issued target and use DNS-only rather than HTTP proxying. Turn the relevant per-record Flatten setting off where available, and ensure applicable whole-zone settings do not suppress the alias. On Cloudflare, flatten-all cannot be overridden per record; apex CNAMEs are flattened by default, and same-zone targets are flattened regardless of that setting. These are DNS-host behaviors, not assumed controls in the sending application. If mandatory behavior or shared settings cannot preserve the required CNAME answer, stop and coordinate a supported layout without breaking other services or removing shared NS delegations. Do not blindly disable features across the whole zone. Cloudflare verification guidance, flattening controls and limits.

Verify the sender address on each relevant route

Configure the auto-responder's Sender Email and complete its verification email. Links expire after 24 hours; verification is instance-specific. Until verification finishes, FormAssembly uses its fallback address. Trial and legacy-account restrictions differ, so check the account's actual sender controls rather than treating a display-name restriction as a DKIM fault. Sender verification and restrictions

For Workflow Email Steps, review Sender Email and Reply-To in the Configure tab. The workflow verification link also expires after 24 hours, while Reply-To does not require the same verification. Check every copied step rather than assuming a form-level change repaired the whole workflow. Workflow sender settings

Keep DMARC policy intact

DMARC passes when at least one authenticated identifier aligns with the visible From domain: a passing aligned SPF result or a passing aligned DKIM signature. Relaxed alignment compares organizational domains; strict alignment requires the same domain. A passing FormAssembly-domain signature is not branded alignment for example.com. Current DMARC standard, RFC 9989

Retain the existing applicable policy and reporting configuration. Do not change p=reject or p=quarantine to p=none just to complete FormAssembly setup. If no applicable direct or inherited policy exists, the domain owner can authorize a first monitored policy. Publish one TXT record at _dmarc for the chosen From domain, for example v=DMARC1; p=none, then add rua=mailto: only with an approved, operational reporting destination. The minimal record without reporting does not itself provide monitoring.

For a first policy at From example.com, the full TXT owner is _dmarc.example.com, entered as _dmarc relative to that zone. For From forms.example.com, use _dmarc.forms.example.com: _dmarc.forms in the parent zone or _dmarc in a separately delegated forms.example.com zone. Preserve existing inheritance and publish at the actual authority.

Use an approved report processor, satisfy external-destination authorization when needed, and review all legitimate senders before tightening policy. The pct tag is obsolete in RFC 9989; do not use it as a percentage-rollout control. Aggregate reporting is specified by RFC 9990; failure reports can disclose message information and need a separate privacy decision under RFC 9991.

Compare the Organizational Domain of the aggregate-report URI host with the Organizational Domain of the domain where the DMARC policy was found, not automatically the visible From domain. If they differ, the report-generating receiver must check the destination’s DNS authorization. A destination in the same Organizational Domain as that policy domain is excepted, even when its hostname differs. This protocol check does not replace the domain owner’s separate approval to share report data with that recipient. RFC 9990 section 4.

Validate DNS and delivered messages separately

These read-only commands use illustrative names. Replace the domain and selector with the issued ones; they are not records to publish.

dig +short NS example.com
dig +short TXT forms.example.com
dig +short TXT faforms1._domainkey.forms.example.com
dig +short CNAME faforms1._domainkey.forms.example.com
dig +short TXT _dmarc.forms.example.com

Compare authoritative answers with an independent recursive resolver. Expect one SPF policy at its correct owner and the exact issued public key or CNAME. An empty CNAME answer is normal for a TXT-only setup. If the direct DMARC answer is empty, inspect the applicable ancestor policy rather than assuming the domain is unprotected.

After Support confirms signing, submit a test response without personal or sensitive data. Save full headers from each internal notification, auto-responder and workflow step. In the receiving system's trusted Authentication-Results, inspect:

  • header.from: your intended domain, not an unnoticed fallback.
  • spf and smtp.mailfrom: authorization result and actual envelope identity.
  • dkim=pass with header.d aligned to your From domain; compare the selector with the provisioned one.
  • dmarc=pass for that From domain under its current alignment settings.

For this branded-DKIM implementation, require an aligned DKIM pass even if aligned SPF already makes DMARC pass. Record which route, instance, timestamp and recipient produced the evidence. A vendor badge cannot substitute for receiver authentication, and successful authentication cannot guarantee inbox placement.

Use only authentication results from the receiving system’s trusted boundary; an arbitrary sender-supplied header is not proof. Authentication-Results trust model, RFC 8601

Use receiver-controlled diagnostic output, or have the receiving administrator establish which fields were generated inside its known processing boundary and document how externally supplied Authentication-Results are removed or distinguished. A familiar authserv-id string or header position alone does not establish provenance. Ignore attacker-inserted or otherwise untrusted results, including a forged field naming the expected receiver. Operational receiving-boundary requirements.

Investigate an actual SPF fail, permerror or temperror even when aligned DKIM makes DMARC pass. DKIM success does not repair a broken SPF policy. First distinguish that error from an ordinary SPF pass on an unaligned provider envelope domain, then apply the corresponding diagnostic below.

Troubleshoot the failed layer

Observation Likely distinction Next check
Mail uses no-reply@formassembly.com Sender verification or SPF prerequisite remains incomplete Verify the actual Sender Email, instance and DNS owner; renew an expired verification link
SPF permerror Invalid policy, duplicate records or lookup-term overflow Read the complete TXT answer and trace the evaluation path; merging strings blindly is not a fix
SPF fail Actual sending IP is not authorized for the evaluated envelope domain Compare smtp.mailfrom, route and sending IP with the right policy; do not merely add another include at the root
SPF temperror Temporary DNS failure Check resolver errors and authoritative availability; retry after the fault is fixed
SPF passes, DMARC fails Authenticated domain does not align, and no aligned DKIM pass Inspect exact From, envelope domain and all DKIM signatures
DKIM key resolves but signing is absent Instance activation or route coverage is incomplete Ask Support to check the instance, domain and tested route
Form notification passes, workflow fails Workflow retained earlier copied settings Inspect that specific Email Step and retest it
Authentication passes, message is in spam Content, reputation or receiving policy remains relevant Retain headers and delivery evidence; do not weaken DMARC

For escalation, share the instance, route, redacted headers, DNS owner/type and timestamps through an approved support channel. Avoid sending full form responses or private keys. If rollback is necessary, reverse only the failed change and preserve other senders' records and the established DMARC policy.

[ FAQs ]

Frequently asked questions

Can I use a respondent's Gmail address as Sender Email?

Use a verified address on your own domain instead. Route replies through Reply-To where appropriate; you cannot authorize FormAssembly through DNS for someone else's Gmail domain.

Is DKIM included on Basic?

The current authentication document states Essentials and above. Ask FormAssembly about your specific plan or legacy contract rather than assuming an older Enterprise-only guide or a Basic account has the same entitlement.

Why does a DNS checker pass while the workflow fails?

The checker sees records, not the sender chosen by the workflow or whether the service signed that message. Confirm the copied Email Step settings and inspect a newly delivered message.

Should I enable DMARC failure reports for form responses?

Not by default. Reports can expose message information. Start with approved aggregate reporting and involve the privacy owner before enabling failure reporting.

[ Sources ]

Sources

  1. FormAssembly authentication requirements
  2. Workflow Email Step
  3. Notification and auto-responder settings
  4. SPF identity and evaluation
  5. SPF limits
  6. Cloudflare proxy status
  7. CNAME flattening
  8. Current DMARC standard, RFC 9989
  9. RFC 9990
  10. RFC 9991
  11. Authentication-Results trust model, RFC 8601

Enterprise provenance

Why top financial institutions and governments retired their email security dashboards.

Traditional email authentication platforms sell you a dashboard and ask your engineers to do the labour. In high-stakes environments, manual oversight means delayed enforcement, configuration drift and unmonitored shadow domains.

EmailAuth is the agentic email provenance platform. Our agents enforce p=reject, keep third-party senders aligned and move your domains to full RFC 9989 compliance, the new DMARC standard, with human-in-the-loop auditability.

Governments Large enterprises Tier-1 financial institutions

SaaS · Dedicated tenancy · Air-gapped on-prem · BYOK encryption

Knowledge Base