How it works
From signup to first report in 24 hours.
Three steps in the dashboard, one TXT record in your DNS, and the receivers start emailing reports straight into DMARCify. Here's the whole pipeline.
- 1
Sign up with an email code
~10 secondsNo password to remember. Drop your email, we send a 6-digit code, you're in. GitHub and Google OAuth also work if your team prefers SSO. - 2
Add your first domain
~15 secondsType a domain (apex likeacme.com, or a subdomain likesend.acme.com). DMARCify generates a unique per-domain mailbox — that's the address you'll list as your DMARC aggregate-report URI. - 3
Publish one TXT record
~30 secondsCopy the value we show you and paste it into your DNS host as a TXT record at_dmarc.yourdomain.com. Cloudflare, Route 53, Namecheap, GoDaddy — wherever your DNS lives.TypeTXTName_dmarc.acme.comValuev=DMARC1; p=none; rua=mailto:r-01h8zk7tg9@dmarcify.dev - 4
Watch reports roll in
~24 hoursReceivers cache DNS for a few hours, then most major providers (Google, Microsoft, Yahoo, Apple) start sending daily aggregate reports. You'll typically see the first one within 24 hours of publishing the record. - 5
Read, ramp, repeat
~2 weeksOnce your reports show every legitimate sender aligning at ≥99%, tightenp=nonetop=quarantinewithpct=10. Ramp from there top=rejectover a couple of weeks. We track your current policy automatically so you can see progress.
app.dmarcify.dev/dashboard/domains/acme.com?tab=setup
DNS setup
Add this TXT record on acme.com's DNS.
| Type | TXT |
| Name | _dmarc.acme.com |
| Value | v=DMARC1; p=none; rua=mailto:r-01h8zk7tg9@dmarcify.dev |
Verified — first report arrived 4 minutes ago
Under the hood
What happens when a report arrives
The whole pipeline lives in Cloudflare's network. There are no servers to ssh into. Each domain's data is fully isolated.
- 1Receiver sends mail to r-XXX@dmarcify.devDaily aggregate report attached as an .xml.gz, .zip or raw .xml. Comes from noreply-dmarc-support@google.com and equivalents.
- 2Cloudflare Email Routing → WorkerMX records on dmarcify.dev point at Cloudflare. The Worker invokes our email handler in single-digit milliseconds — no queue, no cron.
- 3Parse + gunzip + validatepostal-mime decodes the message, fflate handles gunzip/unzip, fast-xml-parser turns the report into typed rows. Bad payloads are rejected with a structured error.
- 4Routed to the domain's Durable ObjectEach domain has its own SQLite-backed Durable Object. Rows are inserted there. One domain's traffic spike can never starve another's queries — there's no shared SQL plan.
- 5IP enrichment, asyncSource IPs are looked up against a global IP-resolution table — PTR, ASN, country. Results are cached so we don't re-resolve them on every report.
- 6Dashboard updatedYour next page load reads the rolled-up summary from the DO. No batch jobs, no nightly ETL — the data is live the moment the report finishes parsing.
Once you're set up
The dashboard does the rest.
From day one you get the overview table — every monitored domain, current policy, pass rate, last-seen timestamp. Click into a domain for the volume chart, source attribution, and recent reports.
- Sortable, searchable overview across all domains
- 30-day volume chart per domain, with pass/fail split
- Source IP table with provider, ASN, country, header-From
- Self-test button to send a synthetic report through the pipeline
- Weekly email digest, opt-in per user
app.dmarcify.dev/dashboard
Overview
Domains
5
4 verified · 1 pending
Reports (30d)
3,006
Records (30d)
58,844
Pass rate (30d)
98.7%
Domainsfilter · sort
| Domain | Status | Policy | Records | Pass rate | Last |
|---|---|---|---|---|---|
| acme.com | verified | reject 100% | 38,420 | 99% | today |
| send.acme.com | verified | quarantine 50% | 14,002 | 97% | today |
| newsletters.acme.com | verified | none | 5,210 | 88% | 1d ago |
| support.acme.com | verified | reject 100% | 1,212 | 100% | 2h ago |
| staging.acme.com | pending | none | 0 | — | — |
Already using another DMARC tool?
Add DMARCify's rua= alongside your existing one — receivers send to both. Compare what you see. Cut over when you're confident.
rua=mailto:r-XXX@dmarcify.dev,mailto:reports@yourcurrenttool.com
Ready in 60 seconds.
Add one DNS record and you're done. €3 per domain per month with a 14-day free trial — no card required to start.
No credit card · One DNS record · 60 seconds to set up