What are email feedback loops and how do you set them up?
A feedback loop (FBL) sends you a report when a recipient marks your message as spam. Yahoo's Complaint Feedback Loop and Microsoft's JMRP send one report per complaint, Yahoo's in Abuse Reporting Format (RFC 5965). Gmail's loop only gives aggregate spam rates per Feedback-ID header. Enroll, then suppress every complainer automatically.
On this page 6 sections
When someone clicks "Report spam" or "Junk" on your message, their mailbox provider counts it against you. A feedback loop is how you find out. Set them up and process them properly, and you remove unhappy recipients before their complaints damage your delivery. Ignore them, and the provider eventually stops accepting your mail.
This guide explains how feedback loops work, what each major provider offers at the time of writing (October 2026), and how to build the process that acts on them. For the complaint rate thresholds themselves, see spam complaint rate explained.
What is a complaint feedback loop?
RFC 6449, which records industry practice and was adapted from a MAAWG document, describes a complaint feedback loop as a way to "provide Feedback Consumers with information necessary to mitigate Spam." A recipient complains. The mailbox provider (the feedback provider) automatically forwards a report to the sender or network that sent the message (the feedback consumer).
Feedback loops are separate from DMARC reports. DMARC aggregate reports tell you who sent mail using your domain and whether it authenticated. Feedback loops tell you who complained about mail you sent.
What does a feedback report look like?
Most per-complaint loops use the Abuse Reporting Format (ARF), defined in RFC 5965. A report is a MIME multipart/report message with report-type=feedback-report and three parts:
- A human-readable description. RFC 5965 says it "MUST be included."
- A machine-readable part of type
message/feedback-report. - The original message, as
message/rfc822, or only its headers astext/rfc822-headers.
The machine-readable part has three required fields: Feedback-Type, User-Agent and Version (currently 1). Optional fields include Original-Mail-From, Original-Rcpt-To, Arrival-Date, Source-IP, Reported-Domain and Authentication-Results.
Feedback-Type tells you what kind of report it is. RFC 5965 registered abuse, fraud, other and virus, and later RFCs added auth-failure (RFC 6591) and not-spam (RFC 6430) to the IANA registry. A spam complaint is abuse.
A trimmed example of the second part:
Feedback-Type: abuse
User-Agent: ExampleFBL/1.0
Version: 1
Original-Mail-From: <bounces+12345@mail.example.com>
Arrival-Date: Thu, 8 Oct 2026 14:02:11 +0000
Source-IP: 192.0.2.25
Reported-Domain: example.com
Why the recipient address may be missing
RFC 6449 warns that some providers remove private data, such as the recipient's address, before forwarding a report. You need your own way to identify who complained. Its advice is to embed an identifier in a part of the message providers are unlikely to strip: the Message-ID, the envelope sender (return path) or the unsubscribe link. Then map it back to the recipient through a database key or encryption.
Which providers offer feedback loops?
| Provider | Program | Per-complaint reports? | Keyed on | Where to enroll |
|---|---|---|---|---|
| Yahoo (also AOL) | Complaint Feedback Loop (CFL) | Yes, ARF | DKIM d= domain |
Yahoo Sender Hub |
| Outlook.com, Hotmail | Junk Mail Reporting Program (JMRP) | Yes, full message with headers | Sending IP | Inside SNDS |
| Gmail | Feedback Loop | No, aggregate spam rates | Feedback-ID header plus DKIM domain |
Google Postmaster Tools |
Yahoo Complaint Feedback Loop
Yahoo's CFL "only supports DKIM-signed email and is a domain based service." Reports go out when mail signed with an enrolled DKIM domain (the d= value) is marked as spam. Yahoo's FAQ adds:
- "Yahoo no longer offers IP or CIDR-based CFL reporting."
- Reports are ARF and "include the full email headers and some additional machine readable meta-data."
- You'll get reports for AOL too: "we will send ARF reports for any of the thousands of domains we host and support."
- The reporting address can be any address you control. It doesn't need to match your DKIM domain, but you verify it with a code.
- Reports come from
feedback@arf.mail.yahoo.comand are DKIM-signed byarf.mail.yahoo.com.
To enroll, create a Sender Hub profile, add and verify your domain, then enroll it under Manage Services > Complaint Feedback Loop. Enrollments from Yahoo's old form stopped working after August 1, 2024, so re-enroll if you signed up years ago.
Microsoft JMRP
Microsoft's Junk Mail Reporting Program "returns the full message with headers of any email marked as 'junk' or 'phishing'" by Outlook.com users. You enroll through Smart Network Data Services, and feedback typically starts "within as little as 72 hours" (Outlook.com Postmaster). JMRP is tied to sending IPs, so you need IPs you can prove you own. Our Outlook.com deliverability guide covers SNDS and JMRP setup step by step.
Gmail Feedback Loop
Gmail's Feedback Loop is for "large volume" senders and covers only @gmail.com recipients. You add a header:
Feedback-ID: CampaignID:CustomerID:MailType:SenderId
The first three fields are optional identifiers you choose. SenderId is required, 5 to 15 characters, and "should be consistent across the mail stream." Google's rules:
- The mail must be DKIM-signed, after the header is added, by a domain you own and have verified in Google Postmaster Tools.
- Use only one such header per message.
- Your sending IPs must be in the signing domain's SPF record and have valid PTR records.
- Don't use a value that's unique to every message, such as the Message-ID.
- Reports appear only when an identifier reaches a certain volume and enough distinct spam reports on a day.
The result is a spam rate per identifier in the Postmaster Tools Feedback Loop dashboard. It tells you which campaign, customer or mail type is drawing complaints, not who complained.
The CFBL-Address header
RFC 9477 (September 2023) defines a CFBL-Address header that lets a sender name its feedback address inside the message, so it doesn't have to register with every provider. For example, CFBL-Address: fbl@example.com; report=arf. The header must be covered by a valid DKIM signature that matches the rules in the RFC, or the provider "SHALL NOT send a report message." It's an Experimental RFC. Adding it does no harm, but don't rely on it in place of the enrollments above.
How do you set up feedback loops?
- Sign with DKIM using your own domain. Yahoo and Gmail key their loops on the DKIM domain. If a platform signs with its own domain, complaints go to it, not you. Check your selector with the DKIM Checker.
- Create a dedicated reporting address, such as
fbl@on a subdomain. RFC 6449 suggests a unique address per feedback loop, so you can tell which provider sent each report. - Enroll at Yahoo Sender Hub for every DKIM domain you sign with.
- Enroll in JMRP through SNDS if you send from your own IPs.
- Add a
Feedback-IDheader and verify your DKIM domain in Postmaster Tools if you send bulk mail to Gmail. - Embed a recipient identifier in the return path, Message-ID or unsubscribe link, so redacted reports still map to a person.
- Automate processing: parse the ARF, find the recipient, suppress them.
- Watch the volume. Track complaints per campaign and per source, and alert on spikes.
What should you do with each complaint?
RFC 6449 is direct: senders "should treat the Feedback Message similar to an unsubscribe request" and assume the recipient doesn't want more email.
- Suppress immediately for that list, brand or customer. RFC 6449 says suppressing across a whole email service provider "is likely too broad", but suppressing across all of one sender's segmented lists "is probably a good idea."
- Never email the complainer to ask why or to confirm.
- Look for patterns. One campaign or one signup source with high complaints usually means a consent problem, not bad luck.
- Make leaving easier. Many complaints come from people who couldn't find the unsubscribe link. Add one-click unsubscribe.
- Keep watching. RFC 6449 warns that if a feedback consumer ignores its feedback stream, the provider "may block or otherwise filter" its mail, treating the reports as sufficient notice.
Common mistakes
- Enrolling the wrong domain. Yahoo matches the DKIM
d=domain, not the From address. If your platform signs asmail.example.com, enroll that domain. - Signing up with a personal address. RFC 6449 says administrative messages about a feedback loop should go to a role account, not an individual, because they "may be lost if that person is on vacation, changes position within the company, or leaves the company."
- Parsing only the recipient field. Providers may redact it. Fall back to the identifier you embedded.
- Forgetting new IPs or domains. Every new sending IP needs adding to JMRP, and every new DKIM domain to the CFL.
What if you don't send bulk mail?
Everyday staff mail sent through Microsoft 365 or Google Workspace leaves from the provider's shared IPs, so JMRP isn't available to you for it. Yahoo's CFL works on your DKIM domain instead, so enrolling it costs little. Enroll in everything above if you run your own mail server or send newsletters from your own domain. A sudden stream of complaints about mail you didn't send can mean a compromised account or someone spoofing your domain. Check your SPF, DKIM and DMARC with the DMARC Checker.
Next steps
- List every platform that sends mail as your domain and check each one signs with your DKIM domain.
- Enroll your DKIM domains in Yahoo's CFL, your own IPs in JMRP, and add
Feedback-IDfor bulk mail to Gmail. - Route all reports to one parser that suppresses complainers automatically.
- Track your rate against the published limits in spam complaint rate explained, and test new campaigns with the Deliverability Test.
- For the wider picture, work through the email deliverability checklist.
Browse more guides on running email day to day.
Frequently asked questions
What is an email feedback loop?
A feedback loop is a service run by a mailbox provider that tells a sender when recipients mark its mail as spam. RFC 6449 describes it as forwarding a recipient's complaint to the party associated with the message, without human review, so the sender can stop mailing people who don't want its mail.
What is ARF?
ARF, the Abuse Reporting Format, is the standard format for feedback reports, defined in RFC 5965. Each report is a multipart/report message with three parts: a human-readable description, a machine-readable section with fields such as Feedback-Type, and a copy of the original message or its headers.
Does Gmail send a report for each spam complaint?
No. Gmail's Feedback Loop is aggregate. You add a Feedback-ID header to DKIM-signed mail, and Postmaster Tools shows spam rates for identifiers that have unusual complaint levels. It never tells you which recipient complained, so pair it with one-click unsubscribe and engagement-based list cleaning.
Do I need feedback loops if I use an email service provider?
Usually your provider enrolls and processes them for you, because it controls the sending IPs and often the DKIM domain. Yahoo's FAQ says ESPs generally enroll domains on their customers' behalf. Ask your provider which loops it processes and whether complainers are suppressed across all your lists.
Should a complaint be treated as an unsubscribe?
Yes. RFC 6449 says senders should treat a feedback message similar to an unsubscribe request and assume the recipient doesn't want more email. Suppress the address for that list or brand right away. Don't email the complainer to ask why, and don't add them back later.
Sources
- RFC 5965: An Extensible Format for Email Feedback Reports
- RFC 6449: Complaint Feedback Loop Operational Recommendations
- RFC 9477: Complaint Feedback Loop Address Header
- Yahoo Sender Hub: Complaint Feedback Loop
- Yahoo Sender Hub: FAQs
- Gmail Help: Feedback Loop
- Outlook.com Postmaster: Services for Senders and ISPs
See how your domain measures up
Run a free Email Health Check: MX, SPF, DKIM, DMARC and transport security in one scan, with the raw records shown. No sign-up.
Keep reading
One-click unsubscribe (RFC 8058): how to set it up and test it
How RFC 8058 one-click unsubscribe works: the List-Unsubscribe and List-Unsubscribe-Post headers, Gmail and Yahoo rules, DKIM coverage and how to test it.
9 min read Running email day to daySpam complaint rate explained: what it is and how to lower it
What a spam complaint rate is, Gmail's 0.1% and 0.3% limits, Yahoo's 0.3%, how to measure it with Postmaster Tools and feedback loops, and how to bring it down.
9 min read Running email day to dayEmail deliverability checklist: how to reach the inbox in 2026
A sender checklist for reaching the inbox in 2026: aligned SPF, DKIM and DMARC, reverse DNS, TLS, one-click unsubscribe, spam rates, warming and monitoring.
9 min read