Section 1 — Orientation
The core objects
HubSpot organises everything around a few core objects. In PN3's world:
- Contacts: the people PN3 works with and reaches, including legislators, agency staff, state advocates, academics, practitioners, and national partners and funders. The central record everything else attaches to.
- Companies: the organisations those contacts belong to, such as state legislatures, agencies, partner organisations, and funders.
- Deals (Engagements): a single piece of work PN3 delivers for a state leader, such as a presentation, testimony, BCA, info request, citation, data support, consult, or guest blog. Each engagement is its own Deal, tagged with State, Issue Area, Tier and Source. One contact can sit behind many.
- Leads (Outreach): a record of proactive or cold outreach to a legislator, advocate, or funder, much like a sales touch. Think of a Lead as an outreach record attached to the contact. A qualified Lead converts into an Engagement / Deal.
- Campaigns: a way to group related activity, such as an event and its follow-through, or a push on a priority policy, so reach and results can be reported together.
- Marketing Events: an event PN3 runs or takes part in, such as the Summit, EC Luncheon, or a Policy Academy. Used to capture attendance and tie contacts and engagements back to the event. Marketing Events can now be linked directly to Deals.
How the objects relate to each other
The visual flow charts are the one-page mental model: how an Outreach Lead converts into an Engagement / Deal, and how Marketing Events, Campaigns, Contacts and Companies interlink around the work.
Requesting a new property or list
New properties, values or lists go through Kate and Sydne (see Governance). When you ask, explain the intention, purpose, intended outcome, and why, so it can be weighed against how the rest of the system is set up.
Section 2 — Data Dictionary
How properties are managed
- Create properties from Settings, not from inside a form, so they can be reused and you avoid duplicates.
- One or two people own the property list (Kate and Sydne) so it stays consistent and does not sprawl.
- Choose the field type with reporting and future edits in mind. It matters: a dropdown versus a multiple-checkbox changes how a report counts (see Outreach topic below).
- You cannot change a property's internal name or field type once it is in use. Check where it is used (forms, reports, workflows) before changing anything.
- To retire or rename an option without losing data, merge the old value into the new one. Deleting an in-use option means moving or clearing its data and updating every form and workflow that uses it.
- Use clear labels, descriptions and property groups so the team can find the right field.
Key deal (engagement) properties
- State: tracked on the deal, because a national organisation's engagement can be for a different state than the company's.
- Issue Area(s): the topic or topics the engagement is about.
- Engagement tier: set on the deal, based on the collective audience in that engagement, not just one contact's tier. A Tier 1 contact can sit in a Tier 2 engagement.
- Deal source: where the engagement came from (existing relationship, client or research partnership, referral, funder connection, an event, or a marketing source). Custom dropdown; options can be added.
- Referrer: when deal source is referral, a follow-on field captures the referrer (contact or company). Kept as a simple field rather than association labels, since the volume is low.
- Bucket (3/4/5): the state's priority bucket for a policy area. Optional, because only some issue areas have buckets and one engagement can span several.
- Outcome / lesson: optional. Consider a simple yes/no "would we do it again" for easy reporting, with room for a note on the ones worth flagging.
Key lead (outreach) properties
- Outreach topic: use a dropdown, one topic per outreach, not a multiple-checkbox. One outreach about two topics becomes two Lead records, so reports count outreaches correctly and each topic can carry its own outcome.
- Naming: give Leads a naming convention (for example "Outreach - issue topic") so a contact's Leads are distinguishable at a glance.
Section 3 — Pipelines & Lifecycles
Two separate systems
Outreach and Engagements run on two separate pipelines. An Outreach Lead moves through the Lead pipeline; when it qualifies it converts into an Engagement / Deal, which runs on its own Deal pipeline. They are not the same track.
Outreach lifecycle (Leads)
The Lead pipeline, with each stage's HubSpot status:
- New (Not started)
- Attempting (In progress)
- Connected (In progress)
- Qualified (Qualified): converts into an Engagement / Deal
- Disqualified (Disqualified): closed, no engagement
Qualified and Disqualified are lead outcomes, not deal stages.
Engagement pipeline (Deals)
Once a Lead converts, the Engagement / Deal runs through: New, Connected, External Information, PN3 Info / Feedback Provided, In Progress, then Engagement Completed or Engagement Cancelled, with On Hold as a pause that can resume to In Progress.
"Completed" and "Cancelled" are the engagement outcomes, the equivalent of won and lost, not a sale.
Reusing leads over time
A contact can have several Leads over time. If an outreach goes cold, move that Lead to disqualified with the reason (went cold, ignored), and create a new Lead when you reach out again later. This keeps a record of each outreach and when it happened, separate from when the contact was first created.
Lead to Deal conversion
When a Lead qualifies and produces work, it becomes an Engagement / Deal. You can create the Deal manually or auto-create it on qualify. The Lead stays (marked successful) and links to the Deal, so you can see the outreach that led to each engagement. The context entered on the Lead (State, Issue Area, Tier, Source, Owner) carries across to the Deal, so nothing is re-keyed. One legislator (Contact) can sit behind many Engagements / Deals, each logged as its own Deal.
Section 4 — Governance
Users and teams
Who sits where, and how record visibility maps to teams. (To be documented.)
Access levels
Access is set at three levels:
- Super admin: full control of the account and its settings, and the only level that runs imports. Kate and Sydne only.
- Edit access: the general access for the team. View and edit all records, create contacts, companies and deals, and communicate with everyone. The difference that matters here is delete: the core team can delete records, the wider team cannot.
- View-only access: can see records but not create, edit or delete them.
On setup and changes, IT creates the user and assigns the seat, and Kate or Sydne (the super admins) decide each person's access level. Imports stay with Kate and Sydne. The full step-by-step is in the Onboarding & Offboarding checklist (Section 5).
Ownership and change requests
Kate and Sydne own the CRM. Any change to it (a new property, a new value, a new list or a workflow tweak) goes through them first. To request a change, explain the intention, the purpose, the intended outcome, and why it is needed, so they can weigh it against how the rest of the system is set up before it goes in.
Section 5 — Team Onboarding & Offboarding
The repeatable, tick-box steps to add or remove a team member without leaving data orphaned live as a checklist in the CRM Data Dictionary workbook: Onboarding & Offboarding checklist.
- Onboarding: IT creates the user and seat; Kate or Sydne set the permission set (Core team or Wider team); confirm import rights stay with Kate/Sydne; add to the right team; set default views, dashboards and any dashboard automated emails; share training pointers.
- Offboarding (shared across the main team): reassign their tasks, contacts, companies and deals; remove them from automated report recipients; update workflows and emails that reference them; then delete the HubSpot user last.
Section 6 — Workflows
Before you build
- Decide which object the workflow is for first (contact, company, deal, or marketing event). That drives the trigger.
- Know what you want to build before you build it. Write it in plain English first.
- Build from scratch rather than the AI builder for anything specific.
- Avoid the "create branches automatically" shortcut when branching by a property value. It is quick to set up but cannot be edited later. Build branches manually.
- Prefer updating CRM properties over building new lists. Buckets and properties let you filter and segment later without a pile of lists to maintain.
What workflows can do
A menu of common automations, for reference:
- Create a Deal or record from a form submission, with a consistent name, auto-assignment and a starting stage.
- Notify an owner by task or email at a stage change. Do not over-notify; use reports for summaries.
- Move a Deal to closed lost after it sits in a stage for a set time.
- Auto-tag a tier (for example, certain contacts or states become Tier 1).
- Copy a value from one field to another, or bulk-rename records.
- Add a contact to an ad audience.
- Associate contacts, companies or deals to a Campaign (newly possible in HubSpot).
- Run event automations: reminders, thank-yous and post-event surveys. For a triggered survey, load the final approved attendee list so it only reaches people who attended.
Call-to-actions and slide-in forms (for example a newsletter sign-up prompt) are a separate tool, not a workflow, and can be set to skip people who are already subscribed.
Section 7 — Lists That Matter
The active lists to keep
These are the most important active lists for now. Kate can update this section over time as the logic and her plan develop.
Core marketing and governance
- [Important] Email Exclusion List · open list
- [Important] Marketing - Email List: PN3 News · open list
- [Important] Marketing - Email List: PN3 Careers · open list
- [Important] Additional older contacts to re-engage · open list
5 Year Event
- 5 year event waitlist · open list
- Applied to 5 Year Event · open list
- 5 Year Event_State Team Members · open list
Keep it lean
There is no need to keep saving imports as static lists. It just clogs up this section. You can always build a list when you actually need one.
Section 8 — Exclusion List
What it is
The Email Exclusion List is an active list of contacts who should be held out of marketing sends. It currently holds around 12,864 contacts. Marketing uses it to build lists and to exclude these people from emails.
List: Email Exclusion List
What lands a contact on it
A contact is on the list if they meet any one of these (the same signals the non-marketing workflow uses today):
- Invalid email address is equal to True
- Unsubscribed from all email is equal to True
- Email hard bounce reason is known
- Email is unknown
- NeverBounce Validation Result is any of invalid, disposable, or unknown
Who can add to it
Only Kate and Sydne add contacts to the exclusion list. Keeping it to those two owners means the list stays deliberate and doesn't get widened by accident.
Rule
Every marketing send checks against this list first, so an excluded contact never receives marketing email.
How it relates to non-marketing contacts
Right now the exclusion list and the ADMIN: Set Non-Marketing Contact workflow run on the same criteria, so they overlap heavily. They are not the same thing, though, and over time they may diverge. PN3 may want to keep certain contacts and mark them non-marketing while still excluding them from marketing email, or hold someone out of sends for a reason beyond deliverability. Keeping the exclusion list as its own asset leaves room for that.
Why we keep these contacts rather than delete
We do not delete contacts just because they are excluded, though PN3 can if they choose. A contact who has unsubscribed from marketing email can still be reached one-to-one by sales (1:1 email, a sequence, or a call), and may carry notes, history, or associations that are worth keeping. Deleting loses all of that.
The exception is contacts with no data or activity at all. Those can be cleared out at some point without losing anything.
Section 9 — Email Subscription vs Opt-In
Subscription types (email categories)
A subscription type is simply the category an email belongs to: general news, events, newsletters, careers, and so on. It is the unit HubSpot uses for consent. A contact opts in or out at the subscription-type level, not per individual email. Unsubscribe from "General News" and you stop getting every email sent under that type.
Keep the list short on purpose. Every marketing email you build has to be assigned a subscription type, so the fewer types you run, the less there is to manage and the cleaner the choice is for contacts setting their preferences. More types means more upkeep and more ways to send to the wrong group.
PN3's active subscription types:
- General News: monthly newsletter, events, news releases
- Legislative Trends: the latest state policy developments affecting infants, toddlers, and their families
- Careers: staff and student opportunities
- Operational only (HubSpot default): infrequent operational communications only; contacts keep this even if they unsubscribe from everything else
Settings: Email subscription types
How opt-in works (form → subscription type)
Contacts choose their own preferences. On the form they select what they want via the Sign up preferences property. Behind the scenes, based on what they ticked, we opt them into the matching email subscription type.
So the form is the front door (plain-language choices the contact understands), and the subscription types are what HubSpot actually records as opt in / opt out. The two are kept in sync automatically, so no one has to set subscriptions by hand.
Property: Sign up preferences
The main marketing email list
The main marketing audience is the active list [Important] Marketing - Email List: PN3 News · open list.
It is built off the Sign up preferences property, not off email subscription types. That is the payoff of keeping things simple: the list filters on the single form-facing property that contacts actually set, so there is one clean source to build from and it stays in step with what people chose on the form. Email subscription types are deliberately not used in the list criteria.
Marketing vs Non-Marketing Contacts
HubSpot bills by marketing contacts. Only contacts marked as Marketing count toward your paid marketing-contacts tier, and only they can be sent marketing emails or used in marketing tools and ads.
Non-marketing contacts still live in the CRM in full. You can store them, view them, associate them to Companies and Deals, and email them one-to-one from a sales/CRM context. What they cannot do is receive marketing emails, and they do not count toward the marketing-contacts limit, so they do not add to the bill.
The goal is simple: only genuinely reachable people should sit as marketing contacts. Everyone else stays non-marketing, so the database stays clean and the bill reflects real, contactable audience.
How a contact becomes a marketing contact (PN3's current setup)
Per the marketable-contacts settings, integrations are not set to auto-mark contacts as marketing. So a contact only becomes a marketing contact in three ways:
- Form submission: someone submits a HubSpot form.
- Import: the importer ticks the "set as marketing contact" box during upload.
- Manual: a user sets the contact to marketing by hand.
Everything else stays non-marketing by default. That keeps accidental cost creep from integrations off the table.
Settings reference: Marketable contacts settings
Workflow: ADMIN: Set Non-Marketing Contact
This workflow automatically flips unusable contacts back to non-marketing, so you are not paying to keep dead or unreachable emails as marketing contacts, and so they drop out of marketing sends.
Link: ADMIN: Set Non-Marketing Contact
A contact enrols if it meets any one of these:
- Unsubscribed from all email is equal to True
- Email hard bounce reason is known
- Invalid email address is equal to True
- Email is unknown (no email on record)
- NeverBounce Validation Result is any of invalid, disposable, or unknown
Any one of these is enough. The through-line is the same: if the email is unsubscribed, bounced, invalid, missing, or failed validation, the contact should not be marketing.
Recommended: NeverBounce clean-up every 6 to 12 months
We suggest re-running a NeverBounce validation across the database every 6 to 12 months. Emails decay over time (people leave roles, addresses go dead), and a periodic re-validation catches that, keeps the marketing-contact count tied to genuinely reachable people, and keeps the bill honest. The workflow above already reacts to NeverBounce results, so each re-validation feeds straight back into it.
Section 10 — Events SOP
Creating and linking an event
- Create the event as a Marketing Event and mark it internal or external depending on who hosted it.
- Marketing Events can now be linked to Deals (a recent HubSpot change). Link each engagement to the event it came from. For example, a BCA requested at a Policy Academy links to that event. From the event you can then see every Deal it produced.
Attendance
- Sometimes attendance is just a number (bodies in the room); sometimes you have names. Where you have names, import them and link them to the event as contacts. Keep a count field for the number of attendees even when names are not known.
- For external events, you can capture the event after the fact so it is still tracked.
Engagements from an event
- Each engagement from an event is its own Deal, with the type set (testimony, BCA, presentation, and so on).
One-off forms
- For a one-off event, you do not need a Google Sheet feed. Just export the form submissions.
Section 11 — Playbooks
What a playbook is for
- A playbook collects, in one place on the record, the fields the team needs to fill in (Tier, Issue Area, State, Source, Bucket, and so on) and prompts for them at the right stage.
- It also holds the definitions (what a Tier is, what a Bucket is) and can link to SOPs, so it doubles as training for anyone new to the team.
PN3's playbook
- One engagement and outreach logging playbook, built in HubSpot by GNG, prompting Tier, Issue Area, State and Source every time.
Section 12 — Reporting Reference
Dashboards and reports
- A dashboard is a collection of reports. Build the reports first, then place them on a dashboard.
- Prefer custom reports over single-object reports. Single-object is simpler but inflexible; a custom report lets you add another object later without rebuilding.
- The primary data source matters and can change the numbers. Building an activity report off the Activities source is not the same as off Contacts, because some activities are not linked to a contact. Pick the source that matches what you are counting.
- Filters: "all" is AND, "any" is OR; you can also group them into a custom formula.
- Fields are the columns you see when you drill into a report. Set them so a drill-down makes sense without extra clicks.
- Schedule or share a dashboard as a recurring snapshot (daily, weekly, monthly), with an optional PDF.
Tracking outreach in reports
- Define what counts as outreach first. Tag call and meeting types as outreach so they can be filtered. Emails are harder because of the back-and-forth, so count outreached contacts (via a flag) rather than raw emails.
- HubSpot has pre-made reports, and some of them cannot be recreated as custom reports, so check the library first.
Section 13 — Visual Flow Charts
Two visual flow charts capture how the system fits together. They are delivered as a branded page that can live in the portal and be saved to PDF.
- Outreach Lead to Engagement / Deal: the Outreach Lead pipeline, and how a qualified Lead converts into an Engagement / Deal that then runs through the Deal pipeline. (This is the same flow whether you call it "outreach to engagement" or "lead to deal conversion".)
- Events, Campaigns and the objects: how a Marketing Event, Campaign, Contact, Company and Engagement / Deal link together.