FaeWorks sample  ·  a real deliverable, on a fictional portal faeworks.com
FaeWorks
Sample · fictional portal

Subscription & Marketing Status Sync — Build Handover

Northwind B2B · 24,300 contacts · built 12 Aug – 2 Sept 2026 · everything below was reviewed and approved by you before it ran

Most of what follows isn't a cleanup. It's a list of things your system was quietly telling you that weren't true — and the mechanics we changed so it stops drifting away from what you think it's doing.

What you thought · what was actually happening · what we did

Six assumptions your portal was operating on. None of them were unreasonable — all of them had stopped being true.

You thought

"We're marketing to about 24,300 people."

Actually

1,140 of them had hard-bounced or unsubscribed and were still flagged as marketing contacts. Undeliverable, uncontactable, and counting toward your Marketing Contacts bill every month.

What we did

Retired all 1,140 to non-marketing after your sign-off.

And it won't come back: the off-ramp workflow now retires a contact the day it bounces or unsubscribes. This number cannot silently rebuild.
You thought

"Inbound leads get followed up."

Actually

267 inbound leads from the last six months had never received a single marketing email. They arrived, sat outside marketing status, and aged quietly. Nobody knew, because nothing reports on a contact that doesn't get emailed.

What we did

Moved them into marketing status and activated them via campaign.

And it won't come back: the on-ramp workflow places new qualifying contacts on the right status and subscriptions on arrival. Nobody has to remember.
You thought

"We have subscription types set up."

Actually

You had 19, most created for individual campaigns. Consent had become unreadable — neither your team nor the recipient could tell what someone had actually agreed to receive, and the preference centre was unusable.

What we did

Five primary streams mapped to content you genuinely publish. The 19 legacy types were flagged for your archival decision and not deleted — consent history lives on them.

And it won't come back: types are tied to content streams rather than campaigns, so a new campaign no longer creates a new type.
You thought

"Vendors and test records are excluded from sends."

Actually

They were excluded per campaign — which means exclusion depended on whoever built the list remembering. They leaked back in every time someone was in a hurry.

What we did

Suppressed structurally at the status and segment level rather than at send time.

And it won't come back: exclusion no longer depends on anyone's memory. A rushed list build can't reach them.
You thought

"Our segments are ready to send to."

Actually

The segments were fine. The base underneath them wasn't — a send would have gone to 3,880 unverified addresses and taken your deliverability down with it, affecting every future send to everyone else.

What we did

Verified the risky cohorts and sequenced the cleanup before the first send, rather than discovering it afterwards.

And it won't come back: the automations keep the base clean continuously, so "is this list safe to send to" stops being a question you have to ask.
You thought

"Marketing status is how we segment."

Actually

Marketing status was doing two jobs at once — may we email this person at all and which audience are they in. That conflation is the mechanic behind almost every accidental send in HubSpot, and it degrades silently as more people build lists on top of it.

What we did

Separated them. Status is now purely an eligibility gate; segments answer audience and carry no eligibility logic of their own.

And it won't come back: the two can't be conflated by accident any more — the structure makes the mistake unavailable rather than discouraged.

The numbers

5subscription types, replacing 19
1,652contacts retired from marketing
361contacts activated who weren't being reached
−1,291net change to your marketing-contact count
14workflows were writing to subscriptions or status

The cleanup, in full

Your base was audited into six named lists, each with a count and a recommended action. You reviewed and signed off before any contact moved.

#CohortCountAction
1Hard-bounced or unsubscribed, still flagged as marketing1,140Retired to non-marketing
2Clean enough to email immediately94Activated into sends
3Risky cohort requiring verification3,880Verified before any contact
4Inbound leads, last 6 months, never emailed267Activated via campaign
5Inbound leads 6+ months old, no email in 6+ months2,940Held for staged re-engagement
6Stale marketing contacts512Retired to non-marketing

Cohort 5 has not been emailed, on purpose

2,940 contacts with no contact in six months is not a list you send to in one blast — it tanks deliverability and can trip spam filters for everyone else on your domain. They're verified and waiting for a staged re-engagement in three tranches, warming volume gradually. Worth considering an alternate channel first.

The workflows writing to subscriptions and status

Before any of the above holds, everything that writes to a subscription type or to marketing status has to agree with it. Fourteen workflows did. Here is every one, and who owns it now.

14workflows write to subscription types or marketing status
9touched nothing else — rebuilt or retired by us, live now
5also write to something outside this build — yours
3replacements built, drafted and switched off, waiting on you

Nothing is waiting on you to start

Where a workflow of yours conflicts with the new model, we did not stop and we did not leave a gap. We built the replacement, left it drafted and turned off, and handed it over. The day you retire the conflicting workflow, you switch ours on and it works — no return visit, no re-scope, no second invoice. The three below are in that state right now.

WorkflowAlso writes toOwnerStatus
Off-ramp — bounce or unsubscribe retires the contactUsRebuilt · live
On-ramp — qualifying contacts get status and streams on arrivalUsRebuilt · live
Preference-centre syncUsRebuilt · live
Vendor and test-record suppressionUsRebuilt · live
Legacy type assignment ×5 — one per retired campaign typeUsRetired · replaced by streams
MQL scoring & routingLead score, contact ownerYouOurs drafted, off. Theirs re-sets marketing status nightly and will undo the off-ramp.
Lifecycle stage promotionLifecycle stageYouOurs drafted, off. Theirs subscribes on promotion, bypassing consent.
CRM sync — contact tierAn external systemYouOurs drafted, off. Marketing status is being set from outside HubSpot.
Event registration follow-upEvent objectYouPoints at a retired type. Retire or repoint.
Webinar no-show nurtureEvent objectYouPoints at a retired type. Retire or repoint.

The five in the lower block are yours because they reach outside subscriptions and marketing status — into scoring, routing, lifecycle and an external system. Rebuilding those would mean changing systems you did not hire us to touch, and doing it without your sales and ops teams in the room. So we scoped them, wrote the replacement where one was needed, and stopped there.

What's now in your portal

ArtifactWhat it does
5 subscription typesIndustry News & Insight · Northwind Product Updates · One-to-One Messages · Customer Service · Partner Network
Auto-subscription workflowThe on-ramp — new qualifying contacts onto correct status and subscriptions, automatically
Auto non-marketing workflowThe off-ramp — bounces, unsubscribes and long-inactive contacts retired automatically
Six cleanup listsNamed, counted, with the executed action recorded against each for your audit trail
Email Marketing segment folderGoverned audience tree, below
Email Marketing/ ├── All Valid Email Prospects │ ├── By Market Type │ │ ├── Enterprise │ │ ├── Mid-Market │ │ ├── SMB │ │ └── No company association │ └── By Title Seniority │ ├── Executive │ ├── Director / Manager │ └── Practitioner

What's left with you