# Feedback Loops (FBL) — Setup + Wire in AcelleMail

> When a recipient clicks "Mark as Spam" on a Microsoft / Yahoo / AOL / Comcast mailbox, those ISPs send you the complaint via Feedback Loop. AcelleMail processes it automatically — unsubscribes the complainer, updates the complaint stats. This guide walks the setup.

- Canonical URL: https://acellesend.com/kb/articles/feedback-loops-fbl-setup
- Author: Lena Hart, Email Deliverability Editor
- Category: Sending & Deliverability — SMTP setup, bounce handling, sender reputation, IP warmup, throttling
- Content type: tutorial · Difficulty: intermediate
- Tags: Acellemail
- Published: 2026-07-04 · Last updated: 2026-08-15
- Reading time: 7 min
- Publisher: AcelleMail Knowledge Base, https://acellesend.com/kb

---

## What FBL does for you

When a recipient on a major ISP (Microsoft, Yahoo, AOL, Comcast) clicks "Mark as Spam," the ISP sends a feedback message to you describing the complaint. AcelleMail's Feedback Loop handler:

1. Receives + parses these messages from a dedicated address (e.g. `feedback@yourdomain.com`)
2. Identifies the complaining subscriber + the original campaign
3. Auto-unsubscribes them (prevents future sends)
4. Updates the campaign's complaint rate stat
5. (Optional) Webhook out to your CRM / Slack

Without FBL setup, you don't see these signals. Complaints pile up silently until your IP reputation drops.

## Setup overview

```
[ISP side]                          [AcelleMail side]
1. Sign up for each ISP's FBL program
   → ISP needs an address to send to
2. Set up a `feedback@yourdomain` mailbox
                                     3. Configure FBL handler in sending server
                                     4. Test + verify
```

## Phase 1: Sign up at each ISP

### Microsoft (JMRP)

URL: https://sendersupport.olc.protection.outlook.com/pm/junkmail.aspx

Provide:
- Each sending IP / IP range
- Your contact + verification address (e.g. `feedback@yourdomain.com`)
- Microsoft email account (free)

Approval: 24-48 hours.

### Yahoo

URL: https://senders.yahooinc.com/

Sign up for the Yahoo Feedback Loop service. Provides per-IP complaint forwarding to your verification address.

### AOL / Verizon

URL: https://postmaster.aol.com/

Similar process. Free.

### Comcast / Xfinity

URL: https://postmaster.comcast.net/

Form-based application.

### Apple iCloud / Yahoo Postmaster

iCloud doesn't have a public FBL program currently. The signals come via:
- Bounce log patterns (5.7.x codes for spam-policy blocks)
- iCloud's "Mail Privacy Protection" data via aggregate analytics

For iCloud, FBL isn't a setup task — accept that aggregate-level signals are all you get.

## Phase 2: Set up the receiving mailbox

Create a regular mailbox at `feedback@yourdomain.com` (any name; convention is `feedback@`). This is where ISP-generated FBL messages arrive.

The mailbox needs:
- IMAP or POP3 access (so AcelleMail can read it)
- Always-accessible (don't delete messages immediately — AcelleMail polls and acts)

Configure at your usual mail host (Google Workspace, Microsoft 365, Mailtrap, anywhere with IMAP).

## Phase 3: Configure AcelleMail's FBL handler
### Open the sending-server detail

In AcelleMail's sidebar, click **Sending → Sending servers**. The list shows every server connected to this account with its status chip, sending limit, and last activity:

![Customer sending-server list](https://acellesend.com/plugins/acelle/landing/images/help/kb/sending-servers/01-customer-server-list.png)

Click into the row you want to configure. The detail page surfaces Connection settings (host / credentials), Configuration (server name, default from, sending limit, bounce + FBL handler), and the **Test connection** / **Send test email** buttons in the toolbar:

![Server detail — Connection + Configuration](https://acellesend.com/plugins/acelle/landing/images/help/kb/sending-servers/02-server-detail-full.png)

In the server detail's Configuration section (visible in the full-page server detail above), find the **Feedback loop handler** dropdown. The handlers themselves are managed as a reusable list at **Admin → Sending → Feedback loop handlers**:

![Admin Feedback loop handlers list](https://acellesend.com/plugins/acelle/landing/images/help/kb/sending-servers/15-admin-fbl-handlers.png)

Each handler is a named IMAP mailbox config — reusable across multiple sending servers. Define once, attach where needed. Click **+ New feedback loop handler** to add a fresh one, OR edit the Default FBL Handler to point at your `feedback@yourdomain.com` IMAP credentials.

Back in the sending-server's Configuration field, the FBL handler dropdown lets you pick:

- **None** — FBL processing disabled (default)
- **IMAP** — AcelleMail polls an IMAP mailbox, parses FBL messages, processes them
- **POP3** — Same via POP3 protocol

Pick **IMAP** (most modern). The expanded form asks for:

```
IMAP server:    imap.gmail.com (or your provider)
Port:           993 (TLS)
Username:       feedback@yourdomain.com
Password:       app-specific password
Poll interval:  5 minutes
```

Save. AcelleMail starts polling the mailbox.

## Phase 4: Verify it's working

Send yourself a test campaign. On a Microsoft / Yahoo account you control, click "Mark as Spam."

Wait 24-48 hours (FBL has delay). Then check:

1. The feedback message arrived in `feedback@yourdomain.com`
2. AcelleMail polled it (check the server's FBL processing log)
3. Your test address is now marked `unsubscribed` in the original list
4. Campaign feedback log shows the complaint:

![Campaign feedback log](https://acellesend.com/plugins/acelle/landing/images/help/kb/campaign-delivery/03-campaign-feedback-log.png)

If steps 1-2 work but 3-4 don't: check AcelleMail's FBL parser is recognizing the ISP's specific FBL format. Some ISPs use ARF (Abuse Reporting Format); others have custom headers.

## Common FBL signals + actions

| Signal | Action |
|---|---|
| Steady 0.05-0.1% complaint rate | Healthy baseline; no action |
| Spike to 0.3% on one campaign | Pause; audit content + list; investigate consent |
| Spike concentrated to one segment | That segment's consent is unclear — audit signup flow |
| 0 complaints (suspicious for any volume) | FBL handler not working — check IMAP polling logs |
| Complaints from subscribers who never opted in | Bot signups or imported list — audit acquisition |
| Yahoo complaints high, Microsoft normal | Yahoo-specific list source issue; investigate Yahoo signups specifically |

## Common UI signals + fixes

| Symptom | Likely cause | UI fix |
|---|---|---|
| FBL configured but `unsubscribed` count from FBL = 0 after a week | Either FBL handler broken OR you're not sending to FBL-eligible ISPs | Check IMAP credentials + recent campaign log |
| `feedback@yourdomain` mailbox grows but AcelleMail doesn't process | IMAP polling broken or FBL message format unrecognized | Re-check IMAP creds; check AcelleMail's FBL parser config |
| ISP sends bounce messages that look like FBL but get marked as bounces | Bounce handler conflicting with FBL handler | Use different mailboxes for each (bounce@ and feedback@) |
| Complaint rate looks too good (0% on high-volume sends) | FBL probably not wired up or wired to wrong mailbox | Check end-to-end with test send-and-complain |
| Complaints showing in AcelleMail but subscribers not auto-unsubscribed | FBL handler set to log-only, not auto-action | Server config → FBL → set "Auto-unsubscribe complainers" |

<details>
<summary><strong>Advanced: ARF parsing, multi-ISP routing, and complaint-rate-driven server disable</strong></summary>

The Abuse Reporting Format (ARF) is RFC 5965 — the standard FBL message format. Microsoft, Yahoo, AOL use it. Others have custom formats.

**ARF format key fields:**

```
Message-ID: <...>
Feedback-Type: abuse
User-Agent: ARF/1.0
Reported-Domain: ...
Original-Mail-From: ...
Original-Rcpt-To: ...
Source-IP: ...
Reported-URI: ...
```

AcelleMail's parser identifies the `Reported-Rcpt-To` to find the subscriber, looks up the campaign via `Original-Mail-From` headers, and processes the complaint.

For non-ARF formats (some legacy AOL formats), AcelleMail has format-specific parsers. If a particular ISP's format isn't recognized, check the AcelleMail FBL parser config.

**Multi-mailbox routing** — if you have multiple sending servers, each can have its own FBL mailbox:

```
Server A:  feedback-a@yourdomain.com
Server B:  feedback-b@yourdomain.com
```

Each server's FBL handler points to its own mailbox. Allows per-server complaint-rate isolation in the panels.

**Complaint-rate-driven server disable:**

```bash
# Daily cron — disable any server with complaint rate >0.3% yesterday
for server in $SERVER_UIDS; do
  cr=$(curl -sH "Authorization: Bearer $TOKEN" \
    "https://acellemail.com/api/v1/admin/sending-servers/$server/stats?day=yesterday" \
    | jq '.complaint_rate')
  if (( $(echo "$cr > 0.003" | bc -l) )); then
    # Disable + alert
    curl -X POST -H "Authorization: Bearer $TOKEN" \
      -d "{\"server_uid\": \"$server\"}" \
      "https://acellemail.com/api/v1/admin/sending-servers/disable"
    notify_slack "Server $server auto-disabled — complaint rate $cr"
  fi
done
```

**FBL message inspection** — periodically open the `feedback@` mailbox + read messages directly. Useful for:

- Confirming ISPs are still sending FBL (drop = something broke)
- Understanding WHY complaints happen (content, frequency, consent issues — sometimes in the FBL body)
- Verifying complaining subscriber matches what AcelleMail processed

**Suppression list export** — after AcelleMail processes FBL complaints, the suppression list is the cumulative pool of all-time complainers + bounced + manually-suppressed.

```bash
curl -sH "Authorization: Bearer $TOKEN" \
  "https://acellemail.com/api/v1/admin/suppression?format=csv" \
  > suppression-snapshot-$(date +%Y%m%d).csv
```

Backup periodically. If you ever migrate AcelleMail installs, the suppression list MUST come too.

**ISP-specific quirks:**

- **Microsoft JMRP**: also need SNDS for full picture
- **Yahoo**: some delays; complaints can arrive 5-7 days after sending
- **AOL**: very low volume; expect 5-20 complaints/month from large lists
- **Comcast/Xfinity**: form-based; AcelleMail FBL parser handles it

**Privacy / GDPR notes:**

FBL messages contain the complaining subscriber's email. Treat them as personal data:

- Don't share or export externally
- Retain only as long as needed for unsubscribe + statistics
- Honor GDPR right-to-erasure if the complainer later requests

</details>

## Related articles

- [Sender reputation monitoring](https://acellesend.com/kb/articles/sender-reputation-monitoring)
- [Microsoft SNDS walkthrough](https://acellesend.com/kb/articles/microsoft-snds-walkthrough)
- [Email list hygiene](https://acellesend.com/kb/articles/email-list-hygiene-clean-your-list-for-better-deliverability)
- [Deliverability incident runbook](https://acellesend.com/kb/articles/deliverability-incident-runbook)

---

## Related articles

- [How to Set Up Amazon SES with AcelleMail](https://acellesend.com/kb/articles/configuring-amazon-ses-with-acellemail): Create an IAM user and access key in AWS, connect Amazon SES to AcelleMail, share your verified domains with users, and let them verify their own.
- [Amazon SES Sending Limits — Cookbook for AcelleMail Operators](https://acellesend.com/kb/articles/ses-sending-limits-cookbook): SES starts at 200/day sandbox, scales to 50k+/day in production, $0.10 per 1,000 emails. This guide is the practical cookbook: how to grow from sandbox to scale, region-by-region orchestration, what AcelleMail does at each tier.
- [Multiple Sending Servers in AcelleMail — Add, Mix, Route](https://acellesend.com/kb/articles/configuring-multiple-sending-servers): Spread your volume across several SMTP and API senders for failover, reputation isolation, and headroom past any single vendor's cap. This guide walks the real screens: the type picker, the connect form, the per-campaign "Use all servers" toggle, and the admin pool view.
- [Hard Bounce vs Soft Bounce — Reading the Bounce Log](https://acellesend.com/kb/articles/understanding-email-bounce-types): A hard bounce is permanent; a soft bounce is temporary. AcelleMail records them in the campaign bounce log and treats them differently — hard bounces blacklist the address, soft bounces are left alone for the receiving server to retry. This guide walks the bounce log, the DSN codes, and what each type means for your list.
- [IP Warmup Schedule — Ramping a New Sending Server in AcelleMail](https://acellesend.com/kb/articles/ip-warmup-schedule-for-new-sending-servers): A fresh sending IP has zero reputation. Send 50,000 emails on day one and every major mailbox provider routes you to spam. AcelleMail's Warmup Strategies grow your volume gradually using one of three presets. This guide walks the admin UI plus a realistic ramp plan.
