What is a pct= tag?
Still have a question, spotted an error, or have a better explanation or a source we should cite?
The pct= tag in a DMARC record controls what percentage of failing messages your policy actually applies to. The default is 100, meaning all messages that fail DMARC get the full policy treatment. If you set it lower, only that percentage of failing messages get quarantined or rejected.
For example: v=DMARC1; p=reject; pct=25 means that 25% of DMARC-failing messages get rejected, and the other 75% get delivered as if the policy were p=none. Which 25%? The receiving server picks randomly.
When is pct= useful? It was originally designed as a way to roll out enforcement gradually: start at pct=25, watch for problems, increase to 50, then 75, then 100. The idea is a softer landing when moving from quarantine to reject.
Why most senders skip it: In practice, pct= is less commonly used now than it once was. The cleaner approach is to stay at p=none long enough to confirm all your legitimate sending sources are passing DMARC, then move to quarantine or reject at 100% once you're confident. Using pct= to "test the waters" at reject can create inconsistent results that are hard to interpret in your reports.
If you do want to use pct=, note that it only applies to quarantine and reject policies. At p=none, it has no effect (nothing is being enforced anyway).
The gradual rollout approach that works better for most senders: use the p=none monitoring phase properly first, fix any alignment failures, then move straight to reject at 100%. Check your aggregate reports throughout to catch problems before they become delivery issues.
Contributors
Who worked on this answer
Every name links to their profile. Every company links to their site. Real people, real accountability.