All guides

12 min read

How to automatically set departed contacts to Non-Marketing in HubSpot

Written by the ReplyCircuit team · Last verified September 2026

Marketing contacts are what HubSpot bills you for. Every person who has left their company and still shows as a marketing contact is a paid slot spent on someone who will never open anything again — and they keep receiving marketing email at an address that bounces or, worse, has been turned into a spam trap. The obvious fix is to have your integration flip them to non-marketing. HubSpot does not allow it: marketing contact status is a billing field, and no app can write it.

The short answer

  • No integration can set a contact to non-marketing — HubSpot keeps that field out of reach of the API because it drives your bill.
  • The reliable route is two fields: something writes a normal CRM property when a departure is detected, and a HubSpot workflow watches that property and flips the marketing status.
  • The workflow action needs Marketing Hub Professional or Enterprise. On Starter there is a manual bulk route that takes a few minutes a month.
  • The status changes on the record immediately, but your billed marketing-contact count only drops at your next update date.

The manual workaround

  • Read the reply and work out that the person has left.
  • Open the contact record and change the marketing contact status by hand.
  • Remember to do it before your update date, or you pay for them another term.
  • Repeat for every departure, every week, forever.

With ReplyCircuit

  • ReplyCircuit reads the reply and sets Lead Status to "No Longer With Company".
  • A one-time HubSpot workflow watches that field and sets those contacts to Non-Marketing.
  • The marketing contact count frees up at your next update date, with no manual step.

First, check this applies to you

Marketing contacts only exist on accounts using HubSpot's marketing contacts pricing. If your account has it, every contact carries a Marketing contact status property and your bill is based on how many are marked as marketing. If your account does not have it, there is no such property, nothing on this page applies, and departed contacts cost you nothing beyond the deliverability damage.

Worth being precise about what the status actually does, because it is widely misunderstood. Setting someone to non-marketing stops HubSpot marketing email from going to them and takes them out of the billed count. It does not stop one-to-one sales email, and it does not stop sequences — those still send. It is a marketing-send and billing change, not a suppression list. If you need the person to stop being contacted at all, that is a different action.

The workflow is the easy half. Detecting the departure in the first place is the part that eats your week.

Start a free trial

Why an app cannot do this directly

The restriction is one-directional, and the asymmetry is the part worth knowing. HubSpot documents several ways to set a contact *as* marketing — including through an integration — because that direction only ever increases what you are billed for. Going the other way is fenced off: HubSpot's own guidance lists the contacts index, an active list, a workflow and an import as the routes for setting contacts as non-marketing, and an app writing the property is not among them.

There is a second, nastier version of the problem that we hit while building against the API: sending a marketing-status change in an ordinary contact update can come back as a clean success while the value on the record does not move. That is our own observation rather than documented behaviour, and it is the reason ReplyCircuit does not attempt the write. A green tick that changed nothing is worse than no tick at all — you would stop checking, and keep paying.

So the working pattern is two-step, and it is the same pattern HubSpot itself points people to: write a normal CRM property you are allowed to write, and let HubSpot's own automation act on it.

One-way

Contacts can be set as marketing through an integration; setting them back to non-marketing is limited to the UI, lists, workflows and imports

Source: HubSpot — Set contacts as non-marketing

Next update date

The record shows as non-marketing straight away, but the billed count only changes at your next update date

Source: HubSpot — Understand marketing contacts

Pro / Enterprise

The "Set marketing contact status" workflow action requires Marketing Hub Professional or Enterprise

Source: HubSpot — Set contacts as non-marketing

No public study puts a number on how much of a marketing contact tier is spent on people who have left. Every figure above is a HubSpot mechanic you can verify in their own documentation, not an estimate of ours.

The workflow is free. Finding the departures is the expensive part.

Set the workflow up once and it runs forever — but only when something reliably marks the departure. ReplyCircuit reads every reply and writes that marker the day the message arrives.

Start your 14-day trial

No credit card · Cancel any time

The one-time workflow (how teams do it today)

Confirm you can do this: the "Set marketing contact status" action lives in workflows, which need Marketing Hub Professional or Enterprise. On Starter, skip to the next section.

In HubSpot, go to Automation and create a contact-based workflow. Give it a name you will recognise in a year — something like "Departed contacts to non-marketing".

For the enrolment trigger, choose Lead Status is equal to "No Longer With Company". That is exactly the value ReplyCircuit writes when a reply says the person has gone; if you set departures some other way, point the trigger at whatever property you actually use. Leave re-enrolment off — a contact only needs to leave once.

Add a single action: "Set marketing contact status", and choose Non-marketing contact. Do not add an email or task step here. Keep this workflow doing one thing so that when it misfires, you know exactly why.

Turn it on and choose to enrol existing contacts that already meet the trigger, so the departures already sitting in your database get cleared out too, not just the future ones.

Check one thing before you walk away: if you have an existing workflow that sets Lead Status back to something like "Connected" whenever a contact replies, add an exclusion for "No Longer With Company" so it cannot undo the departure.

If you are on Starter: the bulk route

No workflows does not mean no fix — it means the same job, batched. Build a saved contact view filtered to your departure marker: Lead Status is "No Longer With Company", or whatever value you use. Add "Email hard bounced is true" as a second view; hard bounces and departures overlap heavily.

Once a month, open that view, select all, and use the bulk action to set the selected contacts as non-marketing. It is a few clicks for as many records as you have, and it is the same underlying change the workflow makes.

Do it before your update date rather than after. A contact set to non-marketing the day after your renewal has still been paid for the whole of the coming term.

What to expect afterwards

HubSpot does not remove the contact from your marketing tier the instant the workflow runs. The record shows as non-marketing straight away, and the billed count updates at your next update date. That is normal HubSpot behaviour, not a delay in the workflow — so measure this quarterly against your renewal, not daily against the record.

If you do not know when that date falls, it is shown in your account's marketing contacts usage — Settings, then Account Management and Account Defaults, under the marketing contacts section, alongside your current count against your tier. Put it in a calendar reminder a week early; that week is the whole difference between clearing departures now and paying for them for another term.

The contact stays in your CRM, fully searchable, with its whole history intact. That matters more than it sounds: the departed person's record is what tells you the account had a relationship, who owned it, and which deal it belonged to. Deleting them to save a slot destroys that. Setting them non-marketing keeps every bit of it and costs nothing.

ReplyCircuit re-reads Lead Status a few seconds after writing it and flags it on the review card if something in your portal changed the value back. That is the failure mode that would otherwise be invisible: the workflow never fires, nobody notices, and the contacts stay billable for another term.

The reply that should trigger all of this

From: mailer-daemon / auto-reply · j.okafor@northbank-group.com

Subject: Re: Q4 scheduling rollout

Thank you for your email.

Joseph Okafor is no longer with Northbank Group. This mailbox is not monitored and will be closed at the end of the month.

For anything relating to operations, please contact Ruth Bello at r.bello@northbank-group.com.

  • The departure

    Joseph Okafor has left Northbank Group — the marketing slot he occupies is dead spend.

  • The deadline

    The mailbox closes at month end, so every send until then is a bounce waiting to happen.

  • The replacement

    Ruth Bello, named in the message, with a working address.

What ReplyCircuit does with it

The same message, after ReplyCircuit has read it. Nothing here needs a person to open HubSpot.

Departure · replacement named · marketing status handed to workflow

Lead Status
No Longer With Company (written to the contact)
Marketing status
Left to your HubSpot workflow — no app can write this field
Verification
Value re-read after writing; flagged if your portal changed it back
New contact
Ruth Bello · r.bello@northbank-group.com, associated to Northbank Group
Task
Introduce yourself to Ruth before the old mailbox closes

Copy-paste: the two messages this reply creates

One goes out to the person who has taken the work over, before the old mailbox closes. The other goes to whoever owns HubSpot automation in your company — because most people reading this are not the admin who can build the workflow, and that is the real reason it never gets built.

Intro to the named successor

Subject: Ruth — Joseph pointed me your way before he left

Hi Ruth,

I'd been working with Joseph Okafor on [specific thing]. His auto-reply says he's left and that operations now sits with you.

Where we got to: [one line on the problem and what was agreed]. You don't need to start from scratch — I can send the summary over so you have it in one place.

Is this still on your list, or has the priority moved since Joseph left?

Best,
[Your name]

Asking your HubSpot admin for the workflow

Subject: One-time workflow: departed contacts to non-marketing

Hi [name],

We're paying marketing-contact slots for people who've left their companies, and no integration is allowed to change that field — HubSpot restricts it to the UI, lists, workflows and imports.

Could you set up one contact-based workflow?

- Enrolment trigger: Lead Status is "No Longer With Company"
- Single action: Set marketing contact status → Non-marketing contact
- Re-enrolment off, and enrol existing contacts that already match

One thing to check: if we have a workflow that sets Lead Status to "Connected" when someone replies, it needs an exclusion for "No Longer With Company" or it will undo this.

Ideally before [your next marketing contacts update date] — after that we've paid for them for another term.

Thanks,
[Your name]

Common questions

Not in the direction you want. Contacts can be set as marketing through an integration, but going back to non-marketing is limited to the contacts index, active lists, workflows and imports — an app writing the property is not one of HubSpot's documented routes. We have also seen updates come back as a clean success without the value changing, which is why we do not attempt the write and tell you plainly that a workflow has to finish the job.

Stop paying for contacts who left last year

ReplyCircuit classifies every reply and keeps HubSpot accurate automatically.

Start your 14-day trial

14-day free trial · No credit card · Cancel any time