Monthly Mailjet list cleanup desk with a running audit trail

By General Input

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.

Integrations

  • Mailjet
  • Google Sheets

Type

App

Categories

  • Marketing
  • Operations

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.

Related prompts

Explore more prompts
Call overdue Xero customers with an AI collections agentLocal listing health board for every location you manageLet support send one-off Loops emails without an engineerTurn Mailjet email clicks into ranked HubSpot follow-upsStop cold emails to anyone with a live deal in PipedriveiMessage campaign console with pre-flight checks and delivery boardLinkedIn Ads budget pacing dashboard for every client accountFront desk appointment confirmation board for the next 3 daysGive your team Looker numbers without buying more seatsBuild audience segments from product usage and push to Loops