Klaviyo list health and sunset workbench for deliverability
Clean your email list from one screen: see every audience, review who is in it, and suppress unengaged people in batches a human approves first.
Build me a list health and sunset workbench for Klaviyo. The person who owns email deliverability should have one screen for list cleaning instead of clicking through profiles and suppression menus. Browsing audiences, reviewing who is in them, and applying suppression or list changes in bulk all happen in the app.
The landing view is an audience table listing every list from Get Lists and every segment from Get Segments together, with a type column so lists and segments sit side by side. Each row shows the audience name, its current profile count, and how that count has moved since the app last looked. Store a snapshot of each audience size whenever the landing view loads or an audit runs, so the movement column has something to compare against, and show the change as a number with a direction. On first load there is no history yet, so show a neutral placeholder rather than a misleading zero.
Clicking any row opens a profile table for that audience. For a segment, pull members with Get Profiles for Segment. For a list, use Get Profiles for List. Each row shows the person's email, when the profile was created and last updated, and their current email marketing subscription state and suppression state as clear labels such as Subscribed, Unsubscribed or Suppressed, including the suppression reason when Klaviyo provides one. Page through large audiences using the cursor Klaviyo returns rather than loading everything at once, and let the viewer filter the table by subscription and suppression state and search by email. Use Get Profiles when the viewer wants to search the whole account instead of a single audience, and Get Segments for Profile on an individual row to show which other segments that person sits in.
Every row has a checkbox, with a select all control for the current page. With rows selected, the viewer can run Suppress Profiles (Bulk), Unsubscribe Profiles (Bulk), Add Profiles to List and Remove Profiles from List. Unsuppress Profiles (Bulk) is there to reverse a mistake, and Subscribe Profiles (Bulk) to put someone back on. A Create List button uses Create List to spin up a fresh sunset audience, so a batch can be parked somewhere before anything is suppressed.
Put a confirmation step in front of every bulk action. Suppression is hard to undo at scale, so before anything runs, show a dialog with the exact count of profiles affected, the action name, the audience they came from, and a sample of the addresses, and require the viewer to confirm. Nothing fires straight from a toolbar button.
Add a "Run a list health audit" button that starts a background agent. The agent walks the account segments with Get Segments and Get Profiles for Segment to size up the engagement cohorts the marketer has already defined, pulls campaign engagement with Query Campaign Values and automation performance with Query Flow Values over a recent window, and works out which cohorts are dragging inbox placement down. It writes a plain language recommendation back into the app covering what it found, which cohorts look unengaged and why, and a specific proposed suppression batch with the profiles named and a reason attached. Important for the build: Klaviyo has no documented per-profile event read operation, so the agent should reason from segment membership plus aggregate campaign and flow analytics rather than trying to reconstruct per-person open and click history.
The agent only ever proposes. Nothing is suppressed automatically. Its recommendation lands in a proposals view where a human reads it, ticks the batch or edits which profiles are included, and confirms through the same count-first dialog before anything is applied. An unreviewed proposal simply sits there until someone acts on it.
Every applied action is written to an in-app log recording the action, the audience, the profile count, the addresses involved, who did it, when, and whether it came from an agent proposal or a manual selection. The log is a view in the app filterable by date and action. Each applied action is also appended to a Google Sheet with Append Values, one row per action carrying the same fields, so there is an audit trail outside the tool. Make the spreadsheet and tab configurable in the app.
Two practical notes. Klaviyo rate limits its reporting endpoints far more tightly than its list and profile endpoints, so the agent should pull campaign and flow analytics sparingly and reuse what it fetched within a run. Bulk profile jobs are processed asynchronously by Klaviyo, so reflect that in the interface: show the action as submitted and let the viewer refresh the audience rather than promising an instant change.
What does this prompt do?
- Shows every list and segment in your Klaviyo account with its current size and how it has moved since last time, so stale audiences are obvious at a glance.
- Opens any audience into a searchable table of people with their subscription and suppression status, plus checkboxes and bulk buttons to suppress, unsubscribe, move people onto a fresh sunset list, or reverse a suppression made in error.
- A "Run a list health audit" button sends a background assistant through your audiences, campaign results and automation performance to propose a specific suppression batch in plain language. Nothing is suppressed until a person ticks it and confirms.
- Every bulk action shows the exact count before it runs, and every applied action is logged in the app with who did it and when, then copied to a Google Sheet as an audit trail outside the tool.
What do I need to use this?
- A Klaviyo account with permission to create an API key (owner, admin or manager role).
- A Google account and a spreadsheet where the audit trail rows should land.
- Segments you already use in Klaviyo to describe engagement, such as a never engaged or unengaged in 90 days audience. The health audit leans on the segments your team has defined.
How can I customize it?
- Change the engagement window the audit reviews, for example the last 90 days instead of the last 30.
- Point the audit trail at a different spreadsheet or tab, or add columns such as a reason code for each batch.
- Adjust which bulk buttons appear, for example hiding unsubscribe if your team only ever suppresses.
FAQs
Will this suppress anyone automatically?
Can I undo a suppression if a batch went too far?
Does it work with the segments I already have?
What happens with very large lists?
Do I have to use the Google Sheet?
Related templates
Plan every email and SMS send on one calendar, see how past campaigns performed inline, and let an assistant write and file the next draft in Klaviyo.
Pick any date range and see gross revenue, orders, refunds, and average order value for every Kajabi offer, then drill into the exact sales behind each number.
See duplicate Keap contacts side by side with their orders and tags in view, merge the right record on purpose, and retire the tags nobody uses.
Compare every WhatsApp campaign side by side, launch a new one from a spreadsheet audience, and stop a bad send in one click.
Every morning your reps open one queue of people publicly asking for alternatives, complaining about a renewal, or shopping your category.
Open one board before every planning meeting to see how many roles each competitor has open, what changed since the last check, and what it means.
Stop suppressing addresses one at a time.
Bring list cleaning into a single screen where every batch is counted, reviewed and logged before it runs.