Monthly Mailjet list cleanup desk with a running audit trail

Open one screen before every big send to see which Mailjet lists are risky, clean them in bulk with a confirmation step, and keep a hygiene history that outlasts Mailjet's reporting.

App
MailjetGoogle SheetsMarketingOperationsData SyncAI Reports
PromptCreate

Build me a contact list health workbench for Mailjet that I open once a month to decide which lists need cleaning before the next big send. This is a working surface, not a report: I browse, I select, I act, and I keep a record. Nothing runs on a schedule.

Home view: a scorecard of every contact list. Use Mailjet List and retrieve contact lists for the lists and their subscriber counts, Get aggregated statistics counters scoped to each contact list for delivered, bounce, hard bounce, spam complaint, unsubscribe and open rates, and List and retrieve list-recipient statistics for the per-recipient engagement rollup behind each list. Show one row per list with subscriber count and those rates side by side, color coded against configurable thresholds. Compute a simple risk score from bounce rate, complaint rate, unsubscribe rate and open rate, and sort so the riskiest lists float to the top. Remember that Mailjet list endpoints page with Limit and Offset, so page through until you have every list rather than showing the first ten.

Drill into a list and show its members with engagement detail, using List and retrieve list recipients paged with Limit and Offset. Bucket the members into four tabs: hard bounced, complained, never opened, and dormant. Dormant means no opens in the last N days, defaulting to 180 but adjustable from a settings panel and overridable for the list I am looking at. Each tab is a table with checkboxes, a select all, and the contact's email, subscription status, last activity date and open and click counts in view so I can sanity check before acting.

From a selection I can act. Unsubscribe the selected contacts from that list, or remove them from that list entirely, both through Bulk manage many contacts in a list. Always require a confirmation step first: a dialog that names the list, the action, and the exact number of contacts, which I have to confirm before anything is sent. Mailjet's bulk contact endpoints are asynchronous, so the handler should take the JobID the POST returns, poll for status, show progress in the UI, and report the final result rather than claiming success immediately.

I also want to turn the dormant bucket into a re-engagement segment. A Build re-engagement list button takes the current dormant selection, calls Create a contact list with a suggested name I can edit, such as reengage-<list name>-<year-month>, then loads those contacts into the new list with Bulk manage many contacts in a list. The app should not send anything: it just hands me a real Mailjet list I can campaign to myself.

Every completed cleanup action appends an audit row to a Google Sheet using Google Sheets Append Values: date, list name, list ID, action taken, contact count, the dormant threshold used, and the resulting subscriber count. Read prior rows back with Google Sheets Get Values so the app can show a history panel per list and a diff of this month against the last audit, since that history outlives Mailjet's own reporting window. Let me set the spreadsheet ID and tab name in settings.

Add an Audit this list button that kicks off a background agent for the selected list. The agent pulls that list's Get aggregated statistics counters, plus Get geographical statistics, Get user-agent statistics and Get link-click statistics, and reads the prior audit rows for that list from the Sheet with Google Sheets Get Values to see what changed since last time. It then writes a prioritized cleanup plan back into the app, stored against the list and rendered in a panel next to the scorecard row: which specific segments to suppress and roughly how many contacts each is, what moved since the last audit, and a clear verdict on whether the list is safe to send to. Show the run status while it works so I know it is still going.

Settings should cover the dormant threshold, the bounce, complaint and unsubscribe rates that mark a list as risky, and the audit spreadsheet. The confirmation step before any removal or unsubscribe is not optional and cannot be turned off.

What does this prompt do?

  • See every contact list in one scorecard, with subscriber count next to its bounce, spam complaint, unsubscribe and open rates, sorted so the riskiest lists float to the top.
  • Open any list to see its members grouped into hard bounced, complained, never opened and dormant, then select rows and unsubscribe or remove them after a confirmation step that names the count.
  • Spin the dormant group into a brand new re-engagement list in one click, so you can try to win people back before you suppress them.
  • Hit Audit this list and an assistant reads the full picture for that list plus your past cleanups, then writes a prioritized plan naming what to suppress and whether the list is safe to send to.

What do I need to use this?

  • A Mailjet account with contact lists and some sending history behind them
  • A Google account and a spreadsheet where the cleanup history should live
  • A rough view of what counts as dormant for your audience, which we start at no opens in 180 days

How can I customize it?

  • Change the dormant window from 180 days to whatever matches how often you actually send
  • Adjust the bounce and complaint rates that mark a list as risky so the scorecard matches your own standards
  • Choose whether a cleanup unsubscribes people or removes them from the list entirely, and point the audit log at any spreadsheet you like

FAQs

Will it remove contacts without asking me first?
No. Every removal or unsubscribe goes through a confirmation step that spells out the list, the action and exactly how many contacts are affected before anything happens.
What counts as a dormant contact?
By default, anyone who has not opened an email from you in 180 days. That matches the common guidance to sunset unengaged subscribers around the six month mark, and you can move the threshold up or down at any time.
Does this send the re-engagement campaign for me?
No. It builds the dormant group into a real contact list in your Mailjet account, so you can send to it from Mailjet with whatever campaign and template you want.
Why keep the cleanup history in a spreadsheet?
Mailjet only keeps reporting for a limited window. A spreadsheet gives you a permanent record of every cleanup, which is what lets the app show you how a list changed since your last pass.
Does anything run on a schedule?
No. This is a screen you open when you want it, typically once a month or right before an unusually large send. Nothing is cleaned unless you sit down and approve it.

Related templates

Call overdue Xero customers with an AI collections agent

Every weekday at 10am, an AI voice agent phones your most overdue Xero accounts, logs what each customer promised, and reports back to finance in Slack.

LiveKit
Xero
Deepgram
+2
Agentic Task
Local listing health board for every location you manage

See every Google Maps listing you manage on one screen, ranked worst first, with an audit button that writes the fix list for you.

Local Business Data
Google Sheets
App
Let support send one-off Loops emails without an engineer

Your team picks a template, finds the customer, checks they are safe to email, then sends it, with every send logged where the whole team can see it.

Loops.so
Stripe
Google Sheets
App
Turn Mailjet email clicks into ranked HubSpot follow-ups

Twice a day we spot the people clicking your pricing and demo pages, create a follow-up task for their owner, and post a ranked recap to Slack.

Mailjet
HubSpot
Slack Bot
Agentic Task
Stop cold emails to anyone with a live deal in Pipedrive

Every night at 2am, pull the contacts on your open and won deals and block them from your cold outreach before the next send goes out.

Mailshake
Pipedrive
Google Sheets
Deterministic Code
iMessage campaign console with pre-flight checks and delivery board

Build every text campaign in one screen: check who is actually reachable, see a realistic send plan, then watch delivery land row by row.

LoopMessage
Google Sheets
HubSpot
App

Stop guessing which lists are safe to send to.

Open one screen before your next big send, clean only the lists that need it, and keep a record of every change you made.