← Back to all articles
October 15, 2026

HubSpot Workflows Guide 2026: Setup, Design & Governance

Hedrick logo
Hedrick
@hedrickagency

HubSpot's workflow builder is one of the most powerful features in the platform - and one of the easiest to let degrade into chaos. A HubSpot portal that has been running for two or more years without a governance process typically accumulates 80-150 workflows, of which 30-40% are inactive, 20% have no description or owner, and at least one is sending emails to contacts who should have been excluded from it months ago.

The antidote is not fewer workflows - it is a design discipline that starts with the goal rather than the trigger, a naming convention that makes the workflow list legible, and a quarterly cleanup process that prevents accumulation. This guide covers all three, alongside the technical fundamentals of workflow types, enrollment logic, actions, and testing.

For HubSpot Sequences - the sales-owned outreach counterpart to Workflows - see our HubSpot sequences guide 2026. For the marketing automation framework that contextualises individual workflow decisions, see our marketing automation workflow guide 2026.

‍

What HubSpot Workflows Are

HubSpot Workflows are automated sequences of actions - email sends, property updates, task creation, internal notifications, delays, branches, and webhook calls - that execute when one or more CRM objects meet defined enrollment criteria. Unlike Sequences (which are sales-owned, manually enrolled, and reply-aware), Workflows are system-executed, trigger-based, and scale to any contact volume. (Source: HubSpot Knowledge Base - Create workflows: knowledge.hubspot.com/workflows/create-workflows)

Workflows can be built for multiple object types - contacts, companies, deals, tickets, quotes, and conversations - each with its own enrollment trigger logic and action scope. Most teams begin with contact-based workflows and expand to deal and company workflows as their HubSpot usage matures.

The four components of every workflow:

  • Enrollment triggers: The conditions that cause an object to enter the workflow. A single trigger or a combination of triggers using AND/OR logic. Triggers can be event-based (form submitted, page visited, property changed) or membership-based (contact joins a list).
  • Actions: The steps executed when an object is enrolled. Actions can update properties, send emails, create tasks, add to lists, enrol in other workflows, send internal notifications, delay, or execute conditional branches based on object properties.
  • Goal: An optional property check that removes objects from the workflow when they have achieved the workflow's intended outcome - even if steps remain. A goal ensures that contacts who convert mid-workflow do not continue receiving emails that are no longer relevant.
  • Unenrollment criteria: Conditions under which an object is removed from the workflow regardless of goal completion. Used to handle exceptions: a contact who is marked as a customer should exit the lead-nurture workflow immediately, regardless of which step they are currently on.

‍

Choosing the Right Object Type

The object type determines what triggers the workflow, what data is available inside the workflow, and what actions can be taken. Choosing the wrong object type is the most common source of 'why isn't this working?' debugging sessions - a contact workflow cannot reliably update deal properties in the same way a deal workflow can, and a deal workflow cannot send marketing emails the way a contact workflow can.

Object Type Enrollment Trigger Source Best For Common Mistake
Contact[cite: 21] Contact property changes, form submissions, list membership, page views[cite: 21] Lead nurture, lifecycle stage updates, MQL routing, welcome sequences, re-engagement[cite: 21] Using a contact workflow to update deal properties - use a deal workflow instead; contact workflows cannot reliably write to associated deal records[cite: 21]
Company[cite: 21] Company property changes, associated contact activity[cite: 21] Account-level notifications, firmographic enrichment triggers, ABM programme enrollment[cite: 21] Trying to send emails from a company workflow - company workflows cannot send marketing emails; use contact workflows for email sends[cite: 21]
Deal[cite: 21] Deal property changes, pipeline stage changes, deal creation[cite: 21] Stage-change notifications to sales, deal hygiene alerts, pipeline automation[cite: 21] Not accounting for multiple associated contacts - deal workflow actions apply to the deal record; use 'Enroll associated contacts' to reach people[cite: 21]
Ticket[cite: 21] Ticket property changes, ticket creation, conversation activity[cite: 21] Support SLA alerts, ticket routing, customer satisfaction follow-up[cite: 21] Confusing ticket workflows with deal workflows - tickets are Service Hub objects; ensure Service Hub permissions are configured[cite: 21]
Quote[cite: 21] Quote status changes (draft, pending approval, approved)[cite: 21] Quote approval routing, contract follow-up, signed quote notifications[cite: 21] Not connecting to deal stage - quote workflows run on the quote record; update the parent deal via a cross-object action[cite: 21]
Conversation[cite: 21] Conversation status, channel, or AI classification[cite: 21] Chat routing, conversation close follow-up, CSAT send trigger[cite: 21] Using for high-volume segmentation - conversations are transactional objects; use contact workflows for marketing segmentation[cite: 21]

The guiding principle: the object type should match the object the workflow is primarily acting on or reading from. If the goal is to update a contact's lifecycle stage, use a contact workflow. If the goal is to create a task when a deal moves to a specific stage, use a deal workflow. If the workflow needs to act on both, use the primary object type and add cross-object actions (such as 'Enroll associated contacts in workflow' or 'Update associated company').

‍

Goal-First Workflow Design

The most reliable way to build a workflow that performs as intended and does not create unwanted side effects is to design it goal-first - defining the intended outcome before configuring any triggers or actions.

The four questions to answer before opening the workflow builder:

  1. What is the goal? The specific outcome that marks the workflow as successful for an enrolled object. 'Contact books a demo,' 'Deal moves to Closed Won,' 'Rep receives an alert and takes action within 24 hours.' This becomes the workflow's goal property check.
  2. What object type is being acted on? The object that needs to change, be notified, or receive an email. This determines the workflow type.
  3. What event reliably indicates the object is ready for this workflow? The enrollment trigger. It should be specific enough that only the right objects enrol - broad triggers create over-enrollment and irrelevant executions.
  4. What should happen when the goal is met before the workflow completes? The exit behaviour. Configure the goal so that objects exit as soon as they achieve the outcome - even if steps remain.

Only after these four questions have answers should the workflow builder be opened. A workflow built from trigger-first thinking ('what event should start this?') tends to accumulate actions ad hoc - each one added for a specific edge case - until the workflow is a tangle of branches and delays that nobody fully understands.

‍

Enrollment Triggers: Precision Over Breadth

Enrollment triggers determine who enters a workflow. A trigger that is too broad - 'Contact is a known contact' - enrolls the entire database. A trigger that is too narrow - 'Contact submitted the Q3 2024 webinar registration form' - misses relevant future events. The right trigger is specific enough to enrol only the intended population and broad enough to capture all relevant variations.

The trigger logic options:

  • All of the following (AND logic): Every listed condition must be true. Use for workflows where multiple conditions must be met simultaneously - 'Contact Score is greater than 60 AND Lifecycle Stage is Lead AND Contact Owner is not set.'
  • Any of the following (OR logic): At least one condition must be true. Use for workflows that serve multiple entry points - 'Contact submitted Form A OR submitted Form B.'
  • Re-enrollment: By default, a contact who meets enrollment criteria after completing the workflow will not re-enrol. Enable re-enrollment only for workflows where repeated execution is appropriate - a property-update workflow that should fire every time the trigger condition is met, not once per contact lifetime.

Common trigger mistakes:

  • Triggering on a property that changes frequently without a stable anchor condition. 'Contact Score changes' as a sole trigger will re-fire the workflow every time any scoring rule adds or subtracts a point - potentially hundreds of times per day for an active contact. Add a threshold condition: 'Contact Score is greater than or equal to 60.'
  • Triggering on list membership without understanding list update frequency. If the list updates in batch mode (not real-time), the workflow will not fire immediately when a contact meets the list criteria - there is a delay of minutes to hours. For time-sensitive workflows, use property-based triggers instead of list-based triggers.

‍

Actions and Branching

Core Action Types

HubSpot workflows support the following action categories:

  • Send Email: Sends a marketing email (created in the email tool) to the enrolled contact. Available in contact workflows only. The email must be saved as an automated email, not a regular campaign email.
  • Set Property Value: Updates a CRM property on the enrolled object or an associated object. The most frequently used action in operations workflows - sets lifecycle stages, marks contact owner, flags properties for reporting.
  • Create Task: Creates a HubSpot task assigned to a specific user or the object's owner. Used for sales-alert and pipeline hygiene automations - the task appears in the rep's task queue.
  • Send Internal Email Notification: Sends an email to a HubSpot user (not to the contact). Used for alerts to sales reps, managers, or CS team members when a specific event occurs.
  • Enroll in Another Workflow: Adds the object to a second workflow mid-execution. Used to modularise workflow architecture - a master routing workflow hands off to a specific nurture workflow based on conditions.
  • Delay: Waits a defined period before executing the next action. Delays can be in minutes, hours, or days. Can be configured to wait until a specific time of day or day of week - use this to ensure emails do not send at 3am.
  • If/Then Branch: Evaluates a condition and routes the enrolled object down one of two paths based on whether the condition is true or false. The foundation of conditional logic in workflow automation.
  • Webhook: Sends a POST request to an external URL with CRM data in the payload. Used for integrations with external systems - Slack notifications, custom applications, data warehouse triggers.
  • Copy Property Value: Copies a value from one property to another on the same object or an associated object. Useful for data normalisation and for moving data between object types.

‍

Branch Logic: If/Then and Go to Action

The If/Then branch splits a workflow into two paths based on a condition evaluated at the moment the branch is reached. A contact in a lifecycle nurture workflow might branch based on company size - one path for SMB contacts, another for enterprise - each sending different content.

The 'Go to Action' feature allows the workflow to loop back to an earlier step or jump forward, enabling conditional logic that repeats until a condition is met. Use this carefully: a loop that does not have a reliable exit condition will run indefinitely, accumulating actions on the enrolled contact until the loop is manually interrupted.

Suppression lists in workflow settings prevent specific contacts from enrolling regardless of whether they meet the trigger criteria. Use suppression to exclude: existing customers from acquisition-focused nurture, contacts in active sales conversations from marketing sequences, opted-out contacts from any communication workflow, and competitors from any outbound sequence. Suppression lists must be reviewed quarterly - a suppression list that was accurate 12 months ago may no longer reflect the right exclusion criteria.

‍

Naming Conventions and Organisation

A workflow list that is not readable is a workflow list that will be duplicated, misused, and eventually abandoned. Naming conventions are the single most impactful governance decision for teams managing more than 20 workflows.

Component Format Example Why It Matters
Object type prefix[cite: 22] [CONTACT], [DEAL], [COMPANY], etc.[cite: 22] [CONTACT][cite: 22] Instantly identifies the workflow's data scope in the workflow list view[cite: 22]
Hub or team owner[cite: 22] [MKT], [SALES], [OPS], [SVC][cite: 22] [MKT][cite: 22] Identifies which team is responsible for the workflow and should be notified of issues[cite: 22]
Functional description[cite: 22] Plain language description of what the workflow does[cite: 22] MQL Routing - Assign to Rep + Alert[cite: 22] Prevents the 'what does this workflow do?' confusion that leads to duplicate workflows[cite: 22]
Version or date (for major revisions)[cite: 22] v2, v3, or YYYY-MM[cite: 22] v2[cite: 22] Tracks when significant changes were made; prevents confusion when both old and new versions briefly coexist[cite: 22]

The combined naming format: 

[OBJECT TYPE] [TEAM OWNER] - Functional Description - v2

Examples that follow this format:

  • [CONTACT] [MKT] - MQL Routing - Assign Rep + Alert
  • [CONTACT] [MKT] - Welcome - Form: Contact Us
  • [DEAL] [SALES OPS] - Stagnant Deal Alert - 14 Days No Activity
  • [CONTACT] [OPS] - Lifecycle Stage - Lead to Customer on Closed Won
  • [CONTACT] [MKT] - Re-Engagement - 90-Day Inactive v2

Apply the naming convention to all existing workflows during the next cleanup pass, not just new ones. An inconsistently named workflow list is harder to navigate than an unnamed one.

‍

Common Workflow Use Cases

Use Case Object Type Enrollment Trigger Key Actions Team Owner
MQL routing - assign contact to rep and notify[cite: 23] Contact[cite: 23] Contact Score ≥ MQL threshold AND Lifecycle Stage is not MQL or beyond[cite: 23] Set Lifecycle Stage = MQL; Rotate Contact Owner; Create task for rep; Send internal email alert[cite: 23] RevOps / Marketing Ops[cite: 23]
Welcome email after form submission[cite: 23] Contact[cite: 23] Form submitted - specific form name[cite: 23] Send email (welcome template); Set Lifecycle Stage = Lead; Set Lead Source property[cite: 23] Marketing[cite: 23]
Deal stage change - notify assigned rep[cite: 23] Deal[cite: 23] Deal Stage changed to Proposal Sent[cite: 23] Create task: 'Follow up on proposal - [Deal Name]'; Send internal Slack or email notification to deal owner[cite: 23] Sales Ops / RevOps[cite: 23]
Stagnant deal alert[cite: 23] Deal[cite: 23] Deal has no activity in 14 days AND Stage is not Closed Won/Lost[cite: 23] Create task for deal owner: 'Deal stagnant - log activity or update stage'; Notify sales manager if no action in 48 hours[cite: 23] Sales Ops[cite: 23]
Lifecycle stage update - lead to customer[cite: 23] Contact[cite: 23] Deal associated with contact moves to Closed Won[cite: 23] Set Lifecycle Stage = Customer; Add to customer list; Enrol in onboarding sequence; Remove from marketing nurture[cite: 23] RevOps[cite: 23]
Re-engagement of inactive contacts[cite: 23] Contact[cite: 23] Last Email Activity is more than 90 days ago AND Lifecycle Stage is Lead or MQL[cite: 23] Send re-engagement email 1; Wait 5 days; If no engagement, send re-engagement email 2; If still no engagement, set Lifecycle Stage = Subscriber[cite: 23] Marketing[cite: 23]
New customer onboarding notification to CS[cite: 23] Contact[cite: 23] Lifecycle Stage changes to Customer[cite: 23] Create task for CS owner: 'New customer - initiate onboarding call'; Send internal notification with deal value and close date[cite: 23] Customer Success / RevOps[cite: 23]
Data enrichment - set Company Industry from form[cite: 23] Contact[cite: 23] Form submitted - industry field populated[cite: 23] Copy industry value to Company Industry property on associated company record[cite: 23] Marketing Ops / RevOps[cite: 23]

Testing Before Going Live

Testing workflows before activating them is not optional - an untested workflow that fires incorrectly in production can update thousands of contact records with wrong data or send thousands of emails that were not intended to be sent. HubSpot provides two testing mechanisms: (Source: HubSpot Knowledge Base - Test a workflow: knowledge.hubspot.com/workflows/test-a-workflow)

Test mode (available in the workflow editor) simulates the workflow running on a test contact without executing any actions. It shows which actions would fire, which branches would be taken, and which goal checks would exit the contact. Test mode is the right first step for any workflow.

Enrolling a test contact is the second step - after test mode shows correct logic. Manually enrol yourself or a colleague as a test contact with the real trigger condition met. Verify that actions execute correctly: emails send from the expected address, tasks appear in the right rep's queue, properties update correctly, and the workflow exits as expected.

Before activating a high-impact workflow (one that will affect lifecycle stages, send emails to a large segment, or create tasks for the sales team), get a second reviewer to check the trigger logic, the branch conditions, and the suppression list. A fresh pair of eyes catches misconfigurations that the builder is too close to see.

‍

Unenrollment and the AI Workflow Builder

Unenrollment Triggers

Contacts should exit a workflow when they are no longer an appropriate recipient - not when they reach the last step. Unenrollment triggers are the mechanism for this:

  • Goal-based exit: Configure a goal property check that fires when the contact achieves the intended outcome. A demo-request nurture workflow should exit any contact who books a demo - regardless of which step they are on.
  • Explicit unenrollment conditions: Add unenrollment triggers for states that make continued workflow execution inappropriate: 'Lifecycle Stage is Customer', 'Deal Stage is Closed Won', 'Contact is unsubscribed'.
  • Suppression list update: Adding a contact to a suppression list does not unenroll them from active workflows - it only prevents future enrollment. Use an unenrollment trigger to remove contacts already in the workflow.

‍

HubSpot's AI Workflow Builder

HubSpot introduced an AI workflow builder (Breeze AI) that allows users to describe a workflow in plain language and have HubSpot generate the trigger, actions, and branch logic. The feature is available in the workflow builder and is useful for generating a first draft of standard workflows - MQL routing, lifecycle stage updates, deal stage notifications - that can then be reviewed and refined. (Source: HubSpot Knowledge Base - Use AI to build a workflow: knowledge.hubspot.com/workflows/use-ai-to-build-a-workflow)

The AI workflow builder is a starting point, not a finished product. Review every AI-generated workflow carefully:

  • Verify that the enrollment trigger is specific enough - AI-generated triggers are sometimes broader than needed
  • Check that suppression logic is present - AI-generated workflows often omit suppression
  • Confirm that goal exits are configured - AI may generate a complete action sequence without an exit goal
  • Run the workflow through test mode before activating - AI-generated workflows should be tested with the same rigour as manually built ones

‍

Cleanup and Governance: The Quarterly Audit

A HubSpot portal without a regular workflow audit will accumulate broken, redundant, and outdated workflows faster than new value is created. The quarterly audit is the governance mechanism that prevents this accumulation.

The audit covers the following categories:

Audit Category What to Check Action if Issue Found
Inactive workflows[cite: 24] Workflows that are OFF and have had zero enrollments in 90+ days[cite: 24] Archive unless there is a documented reason to keep on standby[cite: 24]
Missing descriptions[cite: 24] Workflows with no internal notes explaining purpose, owner, or last change date[cite: 24] Add a description and owner note before the next audit period[cite: 24]
Duplicate workflows[cite: 24] Two or more workflows that trigger on similar conditions and perform similar actions[cite: 24] Merge into one; archive the redundant copy[cite: 24]
Workflows without goals[cite: 24] Active workflows running contacts through steps with no defined goal or exit event[cite: 24] Add a goal property check; review whether the workflow is still needed[cite: 24]
High unenrollment rates[cite: 24] Workflows where more than 20% of enrolled contacts exit before completing all steps[cite: 24] Investigate exit reason - trigger too broad, content mismatch, or goal being reached early (which is fine)[cite: 24]
Workflows suppressing the wrong contacts[cite: 24] Workflows with suppression lists that exclude contacts who should be enrolled[cite: 24] Review suppression list membership quarterly; ensure suppression logic is still accurate[cite: 24]
Broken actions[cite: 24] Workflows with action failures logged in the history tab[cite: 24] Review error log; fix broken integrations, missing properties, or deleted email templates[cite: 24]
Workflows referencing deleted content[cite: 24] Email templates, lists, or forms that no longer exist but are referenced in workflow actions[cite: 24] Update workflow actions to reference current assets; remove broken references[cite: 24]

The audit process:

  1. Export the workflow list. HubSpot does not provide a direct export, but the workflow list can be reviewed in the tool filtered by status (ON, OFF, Needs Review). Sort by last enrollment date to identify inactive workflows quickly.
  2. Flag workflows in each audit category. One team member reviews each workflow against the checklist above. Flag, do not immediately archive - the original creator (if still at the company) should confirm before archiving.
  3. Archive with a note. When archiving a workflow, add an internal note explaining why it was archived and who authorised it. If the workflow needs to be restored later, this note provides context.
  4. Update descriptions for surviving workflows. Every active workflow should have an internal description explaining its purpose, owner, the date it was last reviewed, and any known limitations or edge cases.
  5. Document the post-audit state. A simple spreadsheet listing all active workflows - name, object type, owner, last review date, and purpose - is more useful than relying on HubSpot's workflow list as the source of truth, because it can be shared across teams and filtered without requiring HubSpot access.

For the governance framework that connects workflow design to broader marketing automation programme management, see our marketing automation best practices 2026.

‍

Work with Belt Creative

Belt Creative implements HubSpot for B2B teams - including workflow architecture design, naming conventions, testing protocols, and the quarterly governance process that keeps automation programmes clean and effective. If you are building a new workflow programme or auditing an existing one that has grown beyond your team's ability to maintain, we can help.

See our work for examples of HubSpot implementations, or get in touch to discuss your workflow and automation requirements.

‍

A Note on Sources

HubSpot Knowledge Base - Create workflows: knowledge.hubspot.com/workflows/create-workflows. HubSpot Knowledge Base - Test a workflow: knowledge.hubspot.com/workflows/test-a-workflow. HubSpot Knowledge Base - AI workflow builder: knowledge.hubspot.com/workflows/use-ai-to-build-a-workflow. All HubSpot feature and configuration guidance verified against official documentation, mid-2026. Verify current feature availability at knowledge.hubspot.com before implementation.

‍

Frequently Asked Questions

What Is the Difference Between a Contact Workflow and a Deal Workflow?

A contact workflow enrolls contact records and executes actions on or from those contacts - sending emails, updating contact properties, creating tasks assigned to the contact owner. A deal workflow enrolls deal records and executes actions on or from those deals - updating deal stages, creating tasks tied to the deal, sending internal notifications when deal properties change. The object type determines what data is available as trigger criteria and what actions can be taken.

How Do I Prevent Workflow Loops?

Workflow loops occur when a workflow's action triggers its own enrollment criteria - a workflow that sets a property value fires, which changes the property, which re-triggers the workflow. Prevent loops by: using a goal-based exit that fires before the re-trigger condition is met, setting re-enrollment to 'off' for workflows where repeated execution is not intended, and adding a guard condition to the trigger that explicitly checks the contact has not already been processed ('Property X has not been set').

Can I Use the AI Workflow Builder for Complex Workflows?

The AI workflow builder is most effective for standard, well-defined workflows - MQL routing, lifecycle stage updates, welcome sequences, deal stage notifications. For complex workflows with multi-level branching, cross-object actions, webhook integrations, or intricate suppression logic, use the AI builder to generate a first draft and then manually refine it. Review every AI-generated workflow through test mode before activating, regardless of complexity.

How Many Workflows Should a HubSpot Portal Have?

There is no correct number - the right number is the minimum needed to automate the team's actual workflows reliably. A portal with 30 well-designed, documented, actively maintained workflows is healthier than one with 200 workflows where 60% are inactive or redundant. Run a quarterly audit to identify and archive workflows that are no longer performing a useful function.

What Is a Suppression List and When Should I Use One?

A suppression list is a contact list added to a workflow's settings that prevents anyone on that list from enrolling in the workflow - even if they meet the trigger criteria. Use suppression lists to exclude: existing customers from acquisition nurture, contacts in active sales conversations from marketing sequences, contacts who have opted out from any communication workflows, and specific segment exceptions that the trigger logic alone cannot capture.

How Do I Test a Workflow Without Sending Real Emails?

Use HubSpot's built-in test mode (available in the workflow editor via the Test button) to simulate the workflow running on a specific contact without executing actions. Test mode shows which branches would be taken, which actions would fire, and whether the goal check would exit the contact. After confirming logic in test mode, enrol yourself or a test contact with real trigger conditions to verify that actions execute correctly in the live environment before activating the workflow for the full audience.

What Should Be in a Workflow's Internal Description?

Every workflow should have an internal description (added via the workflow settings or the Notes field) that includes: the workflow's purpose in one sentence, the owner (name and team), the date it was created and last reviewed, any known limitations or edge cases, and the conditions under which the workflow should be turned off or archived. This documentation is the audit trail that prevents another team member from accidentally breaking or duplicating a workflow they do not understand.

‍

Sources: knowledge.hubspot.com/workflows. All HubSpot feature and configuration information verified mid-2026.

Hedrick logo
Cole Ryan
Founder, Hedrick
Hedrick logo
Hey, here's a tip from Hedrick!

Related articles

Hourly Webflow development

Hire Hedrick, Your Webflow Sidekick

Whether it's developing new websites and landing pages, building complex animations, integrating apps, or adding some custom code – if it's related to your Webflow site, we can help!

Book a 1-on-1 call with a Webflow Expert on our team to fix a bug, find a solution, or help you build something in Webflow!

Our hourly pricing has been sent to your inbox.
Oops! Something went wrong while submitting the form.
Free

The Webflow Toolkit