# Clean risky addresses from your Mailchimp list before each campaign

> Every Monday at 7am, new subscribers get checked for spam traps, throwaway inboxes and dead addresses, so your campaign only goes to people who can receive it.

- Workflow type: agent
- Services: IPQualityScore, Mailchimp, Slack Bot
- Categories: Marketing, Operations
- Published: 2026-08-14

## What it does

- Checks only the subscribers who joined or changed since the last sweep, so you are not paying to re-check people who already passed.
- Sorts every address into three buckets (suppress, review, or clean) using spam trap, throwaway inbox, dead address, catch-all and risk signals.
- Stops the genuinely bad addresses from receiving your campaign, tags borderline ones for a human look, and marks clean ones as verified.
- Posts a Monday morning summary in Slack with the counts, the exact addresses it suppressed and why, and whether the list looks safe to send.

## What you'll need

- A Mailchimp account with the audience you send campaigns to.
- An IPQualityScore account with email validation credits available.
- A Slack workspace and the channel where your marketing team wants the summary.

## Prompt

Every Monday at 7am, before my weekly campaign goes out, sweep my Mailchimp audience for risky addresses using IPQualityScore, act on what you find, and report what you did in Slack.

Start by pulling subscribers with the Mailchimp "List Members" operation, but only those added or updated since the last run, using the date filters that operation supports, and page through the results. Do not pull the whole audience. Every IPQualityScore lookup consumes account credits, so never re-check anyone already carrying the verified tag from a previous run. If there is no previous run to compare against, use the last seven days as the window.

Run each address through the IPQualityScore "Email Validation" operation and capture deliverability, disposable or temporary detection, spam trap risk, catch-all status, and the 0-100 fraud score.

IPQualityScore returns HTTP 200 even when a lookup fails, with success set to false and a message explaining why, usually an invalid key or exhausted credits. Branch on the success field rather than the HTTP status. Never treat a failed lookup as a clean address: leave that member untouched in Mailchimp, count them as "could not check", and call them out in the Slack summary. If credits run out, stop making further lookups and report how far you got.

Decide per address rather than applying one blanket rule, weighing the signals against each other. There are three outcomes.

Suppress: confirmed spam traps, disposable or temporary addresses, and undeliverable addresses. Use the Mailchimp "Update Member" operation to change their status so they stop receiving campaigns.

Tag for review: catch-all addresses and borderline ones, meaning a fraud score of roughly 75 and above but still deliverable. Use the Mailchimp "Add or Remove Member Tags" operation to tag them for review and leave them subscribed.

Clean: everything else gets a verified tag through "Add or Remove Member Tags" so the next run skips them and no credits are wasted re-checking.

Suppressing a real subscriber by mistake is costly, so when the signals conflict, for example deliverable but catch-all, or valid but carrying a high fraud score, prefer the review tag over suppression. Only suppress when the evidence is unambiguous.

If the batch of members to update is large, use the Mailchimp "Batch Subscribe or Unsubscribe" operation, which handles up to 500 members per call, instead of a separate update call for every address.

Finish with a Slack "Send a Message" summary to my marketing channel containing the counts in each bucket (suppressed, tagged for review, verified clean, and could not check), the specific addresses that were suppressed with the reason for each, and a one-line note on whether the list looks healthy enough to send this week.

## How to customize

- Change the timing, for example run it Friday afternoon or the night before each send instead of Monday morning.
- Move the line for what counts as too risky, so more or fewer addresses get suppressed rather than flagged for review.
- Send the summary to a different channel or a direct message, and rename the tags to match the labels you already use.

## FAQ

### Will this delete subscribers from my Mailchimp audience?

No, nothing is deleted. Risky addresses have their subscription status changed so they stop receiving campaigns, and they stay in your audience along with a record of why they were suppressed.

### How much does checking the addresses cost?

Each address checked uses one IPQualityScore credit. Because the sweep only looks at new and recently updated subscribers, and skips anyone already cleared in a previous run, a weekly run usually costs a small fraction of your total audience size.

### What happens to addresses that look borderline?

They stay subscribed and get tagged for review so you can decide yourself. Addresses are only suppressed when the evidence is clear, such as a known spam trap or a throwaway inbox.

### Can I run this on more than one audience?

Yes. Point it at whichever audience you send campaigns from, or name several audiences and it will sweep each one in turn.

### What if my checking credits run out partway through?

It stops checking, leaves the remaining subscribers untouched rather than guessing, and tells you in the Slack summary how far it got so you know what still needs a look.

Use this prompt in General Input: https://www.generalinput.com/prompts/clean-risky-addresses-from-your-mailchimp-list-before-each-campaign