⟨ BLOGPLAYBOOKSAUDIENCES & AD TARGETING

Suppress existing customers before the audience push

Current customers, open opportunities, partners and competitors removed from a list before any audience is built, saved as a clean list with the counts removed at each step.

PlaybookListsHubSpotCSVScoringRUN BY THE AUDIENCE AGENT →

The problem this solves

Every audience push without a suppression step pays to reach the wrong people. Current customers see acquisition ad copy and wonder whether they are still valued. Open opportunities get a discount message while a rep is mid-negotiation. Competitors study your positioning for free, and partners get confused about whether you are selling to them or with them.

The suppression sets live in different places: customers and open deals in HubSpot, competitors and partners in a spreadsheet someone maintains. Matching them against a list by hand means lookups on email and domain across three files, and the moment anyone edits the list the work has to be redone. Most teams do it once, roughly, and hope.

This playbook makes suppression a first-class step that runs before anything is built from list <name>: pull the four sets, remove them in order, show the count removed at each step, and save the survivors as <name> - clean, a list that keeps its suppression rules for the next refresh.

How the mission runs

  1. Pull customers and open opportunities from HubSpot. The Audience Agent reads companies and contacts with a customer lifecycle stage, and every company and contact attached to a deal that is open in any pipeline. Both sets are resolved to domains and emails so they can be matched against the list without relying on company names alone.
  2. Load the competitor and partner CSV. The attached CSV is read for domains, with company names as a fallback where a row has no domain. Domain aliases, such as a regional site for the same company, are grouped so a competitor is matched under every domain it uses.
  3. Match against list <name> in a fixed order. Suppression runs in four passes: customers, open opportunities, competitors, partners. A row is removed on the first pass that hits it and is credited to that pass, so the counts add up to the total removed. Matching happens on email and on company domain, and a subsidiary domain that only partially matches is flagged for review rather than removed.
  4. Show the counts removed at each step. The summary lists the starting size, the number removed by each pass, the rows flagged for review, and the final size. The removed rows are kept in a side list, so a rep can check that a familiar company was suppressed for the right reason.
  5. Save <name> - clean with its rules attached. The survivors are saved as a persistent list named <name> - clean. The suppression sources and the order they ran in are stored with it, so a refresh next month reapplies the same rules against the CRM as it stands then, and any audience built from the clean list inherits the protection.

The prompt

This is the exact objective the agent receives. Swap the obvious placeholders for your own domain, segment or channel and run it as-is from the console, Slack, or the API.

⟨ THE MISSION PROMPT · PASTE AND RUN ⟩

Before building audiences from list <name>, remove every current customer and open opportunity from HubSpot, remove the competitors and partners in the attached CSV, save the cleaned list as <name> - clean, and show me the counts removed at each step.

What comes back

A persistent list named <name> - clean containing only the rows that survived all four suppression passes, plus a ledger showing the starting count, the count removed by customers, by open opportunities, by competitors and by partners, the rows flagged for review, and the final count. The removed rows sit in a side list with the reason on each, and the rules stay attached to the clean list for every later refresh.

Make it yours

  • Add a fit-score floor so rows below your threshold are removed as a fifth pass, with its own count.
  • Suppress anyone contacted by outreach in the last 30 days, using the connected outreach tool as a fifth source.
  • Keep open opportunities in the list but tag them, when paid and sales have agreed to run air cover on active deals.
  • Run it as the first step of every audience playbook by naming <name> - clean as the input to the next mission.

Frequently asked questions

What counts as a current customer?

By default, a company or contact carrying the customer lifecycle stage in HubSpot, and any company with a closed-won deal. If your team uses a custom property or a specific pipeline for renewals, name it and the agent reads that instead.

What happens to a contact at a subsidiary of a customer?

Exact domain matches are removed. A domain that shares a parent with a customer domain is flagged rather than removed, and the flagged rows are listed so you can decide account by account.

Do the removed rows disappear?

No. They move to a side list with the pass that removed them, so nothing is lost and a wrongly removed row can be restored with one instruction.

Can I add partners and competitors from HubSpot instead of a CSV?

Yes. If they are marked with a company type or a property in HubSpot, the agent reads that field and skips the CSV.

Does the clean list follow HubSpot as it changes?

On every refresh, yes. The rules are re-run against HubSpot as it stands that day, so a prospect who became a customer since the last run drops out of <name> - clean and out of any audience refreshed from it.

Go deeper

⟨ RUN IT INSTEAD OF READING IT ⟩

This mission runs minutes after signup.

Open a workspace, paste the prompt, and the Audience Agent carries it end to end on your plan's monthly credits - evidence attached.

⟨ RELATED PLAYBOOKS ⟩