Skip to content

How do I opt contacts out with a HubSpot workflow (GDPR)?

23 specsNeeds Professional or higher (per-hub plans: Marketing Hub)3 need Data Hub Professional on per-hub plans

Short answer

Mostly you do not, and that is the point. Consent lives in subscription types, ... and the one-click unsubscribe already suppresses future sends for that type without any workflow.

What a workflow adds is the rest: one unified suppression list, a cascade that unenrolls the contact from nurtures already running, a legal basis captured at the form, and the flip to non-marketing that stops you paying for someone nobody may email. Marketing Hub Professional, around thirty minutes per spec.

Read the whole answerShow less

What a spec looks like

Free Lead to MQL lifecycle stage promotion on lead score threshold Contact6 steps Read it in full
The nine sections, and the files

Every spec follows the same nine sections, so a team reads one and knows how to read all of them.

  • Outcome, when to use it and when not to
  • Prerequisites: properties, lists, tiers, with the JSON to create them
  • Enrollment and re-enrollment, then every step with its parameters
  • Known pitfalls, a test plan, variants, and the YAML build spec

PDF, Markdown, properties JSON, workflow JSON, custom code where used. Test plan and known pitfalls in every spec.

Each spec states its minimum tier. The 12 free ones open in full, the others show their public preview.

The 23 specs, in build order

Capture the basis at the door

Routes a submission by region, records why you are allowed to market to this person, and confirms it where confirmation is expected.

What each spec doesHide

Consent lives in subscription types

Reads the per-type opt-outs the contact actually set, gates every nurture on them, and gives the whole thing one audit trail.

What each spec doesHide
Unsubscribe / subscription type suppression sync across marketing sendsContact10 stepsA contact who unsubscribes from any single subscription type, or asks to stop all marketing contact through another channel, is fully tracked and suppressed in one unified place, not left as a scattered record of separate opt-outs.Subscription status per channel (email, SMS, WhatsApp) from one preference formContact10 stepsA contact manages email, SMS, and WhatsApp opt-in status from one preference form, and the workflow catches the cases the form alone cannot: a channel opt-in with no usable phone number behind it, and a single audit trail across all three channels.List-based nurture eligibility gate (marketing contact + subscription check)Contact4 stepsA contact only continues through a nurture sequence while they are both a marketing contact and subscribed to the relevant subscription type, so nurture workflows stop wasting sends and enrollment slots on people who cannot legally or practically receive them.Consent withdrawal cascades to suppress from active lists and stop nurtureContact7 stepsThe moment a contact withdraws consent, whether through a subscription unsubscribe or a manual request, the withdrawal cascades to a shared suppression list and force-unenrolls them from the specific nurture workflows named here, instead of leaving them mid-flight in a sequence that a single opt-out never touched.Re-subscribed contact welcome-back nurtureContact4 stepsA contact who opts back into marketing email after previously unsubscribing gets a short two-email welcome-back sequence instead of dropping straight back into the regular send cadence with no acknowledgment.

Keep the basis alive, or stop using it

Consent and legitimate interest both go stale. These put a date on that and act before it passes.

What each spec doesHide

Marketing contact status is a line on the invoice

Flips contacts nobody may email to non-marketing, gates the reactivations that put them back, and warns before the tier is breached.

What each spec doesHide
Show the 2 other specs in this groupShow fewer

Stop sending to people who will not answer

One last honest attempt, then suppression, so sender reputation and the contact count both stop paying for silence.

What each spec doesHide

The 3 things that break this, and how the specs stop them

Consent lives in subscription types, not in a property

A custom Consent given checkbox feels like the right place to store it, and it controls nothing.

Sends are suppressed per subscription type, so a contact who unsubscribed from one type still receives every other type they never opted out of. If unsubscribe is meant to mean everything, every marketing email needs a type your all-types branch actually covers. And the direction back is not symmetrical: the Manage communication subscriptions action cannot resubscribe a contact who opted out themselves, so clearing a property never undoes an opt-out.

How the specs stop itShow less

Marketing contact status is a bill, not a consent record

Setting a contact to non-marketing removes them from marketing sends and ads audience sync.

It does not delete the record, it does not stop internal automation such as tasks and deal workflows, and it is not a substitute for suppression on a legal basis. It is a billing flag. It is a useful one, which is why six specs here work on it, but treating it as a consent decision gets both halves wrong. Reactivation counts against the tier immediately, so a bulk reactivation can create an overage the same afternoon.

How the specs stop itShow less

An opt-out does not stop a workflow already running

Adding a contact to a global suppression list prevents future enrollment into workflows configured to respect that list.

It does not pull someone out of a nurture they are already mid-flight in. There is no native mechanism that extends the cascade for you either, so each nurture has to be named in an explicit unenroll step and that list has to be updated every time a new nurture launches. A nurture that checks subscription status only at enrollment will still deliver one more email.

How the specs stop itShow less

What this bundle builds

Two questions that look unrelated and share one answer. The first is asked by whoever holds the compliance file: can we prove why we are allowed to email this person, and can we stop within a day when they ask us to. The second is asked by whoever reads the invoice: why are we paying for forty thousand marketing contacts when half of them have opted out of everything.

Twenty three specs handle both. At the form, a submission routes by region into the right consent path, the legal basis gets written to the native property rather than a homemade one, and imports land in a backfill queue instead of an assumption. Through the life of the contact, per-type subscriptions are read as the real state, every nurture is gated on them, and a withdrawal cascades into a suppression list plus explicit unenrolments from the sequences already running. Before a basis goes stale, a legitimate interest review and a re-permission campaign fire on a date rather than on someone's memory. On the billing side, contacts nobody may email flip to non-marketing, reactivations pass an approval gate, and two alerts warn before the tier is breached.

Nothing here is legal advice. It is what the automation layer can and cannot enforce, written down.

Read the restShow less
How the pieces fit together

The legal basis property first, because most of what follows branches on it and because it is a settings question, not a workflow one. With data privacy settings on, the native property is available and a mirrored custom property is only needed if you deliberately keep those settings off.

Then the capture path: region segmentation on the form, the source based routing, and the double opt-in confirmation for the cases that need one. Build the import backfill queue in the same pass, since that is where the awkward records live.

The subscription layer third. The eligibility gate is the piece everything else leans on, so decide early whether it is one reusable workflow or a block copied into each nurture, and write that down. The withdrawal cascade comes after it, since the cascade names the nurtures it unenrolls from and those need to exist first.

Billing last, and wired together on purpose. The all-types opt-out spec flips contacts to non-marketing, and the approval gate is what lets one of them come back when they opt into a single type again. Build only one of the two and you will quietly suppress a willing subscriber.

What you get
  • 23 specs, from a 20 minute acknowledgment property to a 55 minute re-permission campaign, roughly 13 hours of build with testing
  • Each spec as PDF and Markdown, with enrollment criteria, the step list, a diagram, a test plan and the known pitfalls written out
  • Properties JSON: 34 contact property definitions, including the consent status, legal basis review and non-marketing reason fields the exports depend on
  • Workflow JSON in Automation API format, switched off on import
  • Custom coded actions in 3 specs only, all on the billing side: the quota count, the cost projection and the monthly consent change export
  • Tier stated per spec: 20 Marketing Hub Professional, 3 Data Hub Professional
  • Test plans that cover the case people skip, the contact opted out of every type, the import with no basis, the approval that nobody answers
  • Install in one click for Full and Agency buyers
Who it is for, and who should skip it

For marketing ops in a European portal, or in any portal that markets into Europe, where the compliance question and the contact count question land on the same desk. Also for a consultant who has to explain, in a workshop, why the custom consent checkbox somebody built three years ago has never suppressed a single send.

Skip it if your portal has no subscription types configured, because the whole bundle reads them and there is nothing to read yet. Skip the two projection specs if you are nowhere near your tier limit. And if you want a lawyer's answer rather than an operations answer, this is the wrong document. It tells you what the automation enforces, which is a smaller thing than compliance and a necessary part of it.

Questions admins ask

How do I opt a contact out of marketing email with a HubSpot workflow?

The suppression itself is not the workflow's job. The one-click unsubscribe already stops future sends for that subscription type. The workflow around it does four things the unsubscribe does not: it records a unified opt-out status you can filter on, adds the contact to a shared suppression list, unenrolls them from each named nurture they are currently inside, and notifies whoever needs to know. Around twenty five minutes on Marketing Hub Professional.

What is the difference between a marketing contact and a subscription opt-out?

They are two separate systems that people constantly merge. Marketing contact status decides whether a contact counts against your paid tier and whether any marketing send can reach them at all. A subscription opt-out is the contact's own preference about one channel or one type of email. A marketing contact can be opted out of the type you are about to send. A non-marketing contact receives nothing regardless of what they are subscribed to. Any eligibility gate has to check both.

Can a workflow delete a contact for a right to erasure request?

No. A workflow cannot perform the deletion, so the spec here builds the queue instead: log the request the moment it arrives, set a status, create a task with a deadline reminder, and escalate if the deadline approaches untouched. The deletion is done by a person with the right permissions, through the interface or the API. The value of the workflow is that no request is lost between an inbox and a spreadsheet.

Can a workflow resubscribe someone who unsubscribed?

Not one who opted out themselves. HubSpot blocks that path in the Manage communication subscriptions action, and in most European frameworks resubscription is expected to come from a contact-initiated action anyway. What the bundle does cover is the case where a contact opts back in through your preference centre or a form: a short welcome-back sequence, so they do not drop straight into whatever send was already queued. This is not legal advice, and the boundary is worth confirming with your own counsel.

Does setting contacts to non-marketing reduce the bill straight away?

It reduces the count your tier is measured against, so it changes the next billing cycle rather than the invoice you already have. Two specs give you the numbers before the decision: one alerts when the active marketing contact count approaches the plan limit, and one projects the count at the next billing date from the trailing growth trend and estimates the overage in currency. Both need Data Hub Professional, because the count is a custom coded query.

Read 12 complete specs before you pay.

One per category, same format as the paid ones. Email only, no card.

We email the link, then a short note when specs change. Nothing else.

49 EUR69

This bundle
Get this bundle