DMARCify
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. 1

    Sign up with an email code

    ~10 seconds
    No 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. 2

    Add your first domain

    ~15 seconds
    Type a domain (apex like acme.com, or a subdomain like send.acme.com). DMARCify generates a unique per-domain mailbox — that's the address you'll list as your DMARC aggregate-report URI.
  3. 3

    Publish one TXT record

    ~30 seconds
    Copy 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.
    Type
    TXT
    Name
    _dmarc.acme.com
    Value
    v=DMARC1; p=none; rua=mailto:r-01h8zk7tg9@dmarcify.dev
  4. 4

    Watch reports roll in

    ~24 hours
    Receivers 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. 5

    Read, ramp, repeat

    ~2 weeks
    Once your reports show every legitimate sender aligning at ≥99%, tighten p=none to p=quarantine with pct=10. Ramp from there to p=reject over 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.

TypeTXT
Name_dmarc.acme.com
Valuev=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.

  1. 1
    Receiver sends mail to r-XXX@dmarcify.dev
    Daily aggregate report attached as an .xml.gz, .zip or raw .xml. Comes from noreply-dmarc-support@google.com and equivalents.
  2. 2
    Cloudflare Email Routing → Worker
    MX records on dmarcify.dev point at Cloudflare. The Worker invokes our email handler in single-digit milliseconds — no queue, no cron.
  3. 3
    Parse + gunzip + validate
    postal-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.
  4. 4
    Routed to the domain's Durable Object
    Each 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.
  5. 5
    IP enrichment, async
    Source 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.
  6. 6
    Dashboard updated
    Your 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
DomainStatusPolicyRecordsPass rateLast
acme.comverifiedreject 100%38,42099%today
send.acme.comverifiedquarantine 50%14,00297%today
newsletters.acme.comverifiednone5,21088%1d ago
support.acme.comverifiedreject 100%1,212100%2h ago
staging.acme.compendingnone0

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