HubSpot Workflows for PLG: 7 Automation Recipes for Revenue
Copy-paste HubSpot workflow blueprints for PLG teams: onboarding sequences, PQL scoring, upsell triggers, and churn prevention, powered by product usage data.
Quick answer: PLG teams need workflows that trigger on product usage, not form fills. The key is syncing product data into HubSpot contact properties so workflows can enroll users based on activation, feature adoption, or usage drops.
- Activation sequences - Send onboarding emails when a user completes their first key action
- PQL scoring - Auto-score contacts when they hit usage thresholds and notify sales
- Upsell triggers - Flag accounts that adopt features tied to paid plans
- Churn prevention - Alert CSMs when active users go dormant
- Sales handoff - Route high-intent free users to sales when they hit activation milestones
All seven workflows below assume product usage properties already exist on your HubSpot contacts. Without that data flowing in, these workflows can't trigger.
Why Product-Led Growth Breaks Traditional HubSpot Workflows
Traditional HubSpot workflows were built for marketing-led funnels. They trigger on form submissions, email opens, page views, and list membership changes. That works fine when you're nurturing MQLs through a content-to-demo pipeline.
PLG breaks that model. The user's journey happens inside your product, not on your website. You need to know when someone activates their account, adopts a core feature, invites teammates, or stops logging in. HubSpot has no native way to track those events because they happen in your app, not in HubSpot.
The Product Data Gap in HubSpot
HubSpot workflows can only trigger on data that exists in HubSpot. Out of the box, that's marketing activity (email, forms, ads) and sales activity (deals, calls, meetings). Product activity lives in your app's database or your analytics tool (Mixpanel, Amplitude, PostHog), not in HubSpot contact records.
Most PLG companies handle this one of three ways:
- Custom API integrations - engineering builds scripts that POST product events to the HubSpot API. Brittle, hard to maintain, requires dev time for every new event.
- Reverse ETL pipelines - warehouse your product data (Snowflake, BigQuery), then use a tool like Hightouch (a reverse ETL platform that syncs warehouse data to SaaS apps) or Census to sync computed metrics to HubSpot. Expensive, complex, requires data engineering resources.
- HubSpot Operations Hub custom code workflows - write JavaScript inside HubSpot to fetch external API data. Limited execution time, complex error handling, still requires engineering to write and maintain the code.
None of these are no-code solutions RevOps can ship independently.
What PLG Workflows Actually Need
PLG workflows trigger on product behavior, not marketing behavior. The enrollment criteria look like this:
- Contact property "Activation Status" changes to "Activated"
- Contact property "Last Active Date" is more than 14 days ago
- Contact property "Feature Usage Count" is greater than 10
- Company property "Team Members Invited" is greater than 3
To build those workflows, you first need those properties populated in HubSpot with real-time product data. Zoody syncs product events directly into HubSpot contact and company properties without a warehouse or custom code. RevOps teams configure the event mappings in the Zoody UI, and product usage flows into HubSpot in real time. Once the properties exist, the workflows below become copy-paste implementations.
For a broader overview of how product usage data drives product-led growth workflows, see our pillar guide on PLG.
7 HubSpot Workflow Recipes for Product-Led Growth
Each workflow below includes the exact enrollment trigger, the actions to take, and if/then branch logic. You can copy these into HubSpot and adjust the property names and thresholds to match your product.
Recipe #1: Activation-Triggered Onboarding Sequence
When to use: Send targeted onboarding emails after a user completes their first key action (created a project, invited a teammate, completed setup, etc.).
Enrollment trigger:
- Contact property "Activation Status" is equal to "Activated"
Actions:
- Send email: "You're activated - here's what to do next"
- Delay 2 days
- If/then branch: Has contact property "Feature X Used" = true?
- Yes: Send email "Advanced tips for Feature X"
- No: Send email "Getting started with Feature X"
- Delay 3 days
- Create task for sales rep (if contact score > 50)
Why it works: Users get contextual help based on what they've actually done in your product, not a generic drip sequence everyone receives.
Recipe #2: PQL Scoring & Auto-Notification
When to use: Auto-score contacts when they hit usage thresholds that signal buying intent, then notify sales immediately. This is the core workflow for tracking product qualified leads in HubSpot.
Enrollment trigger:
- Contact property "PQL Score" is greater than or equal to 70 (or your threshold)
Actions:
- Set contact property "Lifecycle Stage" to "Product Qualified Lead"
- Create deal in pipeline "PLG Inbound", stage "New PQL"
- Send internal notification to contact owner via Slack or email
- Create task: "Review PQL - usage data shows high intent"
Why it works: Sales gets notified the moment a free user crosses the intent threshold, not days later when someone manually reviews a report. For a deeper dive into building PQL scoring models in HubSpot, see our setup guide.
Recipe #3: Usage-Based Upsell Triggers
When to use: Flag accounts that adopt features only available on paid plans or exceed free-tier limits.
Enrollment trigger:
- Contact property "Free Tier Limit Reached" is equal to "Yes"
- OR Company property "Paid Feature Adopted" is equal to "Yes"
Actions:
- Send email: "You've hit your free plan limit - here's what upgrading unlocks"
- Set contact property "Upsell Opportunity" to "Yes"
- Create deal in pipeline "Expansion", stage "Upsell Identified"
- If contact owner exists: create task "Reach out about upgrade"
- If no contact owner: assign round-robin to sales team
Why it works: You reach out when the user has already demonstrated they want more, not when you arbitrarily decide to pitch them.
Recipe #4: Dormant User Re-Engagement
When to use: Re-engage users who were active but haven't logged in recently.
Enrollment trigger:
- Contact property "Last Active Date" is more than 14 days ago
- AND Contact property "Activation Status" is equal to "Activated" (filters out users who never started)
Actions:
- Send email: "We noticed you haven't logged in - need help?"
- Delay 5 days
- If/then branch: Has contact property "Last Active Date" updated in last 5 days?
- Yes: Unenroll from workflow (they came back)
- No: Send second email with case study or win-back offer
- Delay 7 days
- If still inactive: create task for CSM to call
Re-enrollment settings: Allow contacts to re-enroll after 30 days (some users cycle in and out of active usage).
Why it works: You intervene before churn, when the user might just need a nudge or help unblocking a setup issue.
Recipe #5: Churn Risk Alert & Intervention
When to use: Alert CSMs when active paying customers show usage drops that predict churn.
Enrollment trigger:
- Contact property "User Type" is equal to "Paying Customer"
- AND Contact property "30-Day Active Days" is less than 3 (or your threshold)
Actions:
- Set contact property "Churn Risk" to "High"
- Send internal Slack alert to CSM with usage summary
- Create high-priority task: "Churn risk - usage dropped below threshold"
- If/then branch: Does contact have an open support ticket?
- Yes: Add note to ticket "User showing low engagement"
- No: Create task "Reach out to check in"
Why it works: CSMs get early warning based on behavioral signals, not after the customer emails to cancel.
Recipe #6: Sales Handoff Automation (Free-to-Paid)
When to use: Automatically route high-intent free users to sales when they hit activation milestones. For more on automating PLG sales handoff, see our workflow examples guide.
Enrollment trigger:
- Contact property "Activation Status" is equal to "Activated"
- AND Contact property "Team Size" is greater than or equal to 5
- AND Contact property "Feature Usage Count" is greater than 10
Actions:
- Set lifecycle stage to "Product Qualified Lead"
- Create deal, pipeline "PLG", stage "New PQL"
- Assign contact owner via round-robin (sales team)
- Send internal email to assigned rep with usage summary
- Wait 2 days
- If deal stage has not changed: send reminder task to rep
Why it works: Sales only talks to free users who've shown real product engagement, not every signup.
Recipe #7: Expansion Opportunity Flagging
When to use: Identify existing customers who are good candidates for upsell or cross-sell based on usage patterns.
Enrollment trigger:
- Contact property "User Type" is equal to "Paying Customer"
- AND Company property "Seats Used" is greater than or equal to Company property "Seats Purchased" (at capacity)
Actions:
- Set company property "Expansion Opportunity" to "Yes"
- Create deal in pipeline "Expansion", stage "Seats at Capacity"
- Create task for account owner: "Customer at seat capacity, likely to expand"
- Send email to contact: "Your team is growing - here's how to add seats"
Why it works: You reach out when the customer has already hit the limit, not when you guess they might need more.
How to Build These Workflows (Step-by-Step Setup)
Before you can build any of these workflows, you need product usage data flowing into HubSpot contact and company properties. Here's how to set that up.
Setting Up Product Usage Properties in HubSpot
- Create custom contact properties for the usage metrics your workflows need:
activation_status(single checkbox or dropdown: "Not Started", "In Progress", "Activated")last_active_date(date picker)feature_usage_count(number)pql_score(number, 0-100)free_tier_limit_reached(single checkbox, Yes/No)30_day_active_days(number)
- Create custom company properties for account-level metrics:
team_members_invited(number)paid_feature_adopted(single checkbox)seats_used(number)seats_purchased(number)
- Sync product events to these properties. Zoody maps your product events (user activated account, feature X used, team member invited) to HubSpot properties. Every time an event fires in your app, Zoody updates the corresponding property in HubSpot in real time. No warehouse, no custom API code.
Configuring Enrollment Triggers
In HubSpot, go to Automation > Workflows > Create workflow > Contact-based (or Company-based if the trigger is company-level).
Set enrollment triggers to the property filters from the recipes above. Example for the PQL workflow:
- Filter type: Contact properties
- Property: PQL Score
- Condition: is greater than or equal to
- Value: 70
Re-enrollment settings: For workflows where users might cycle through states (dormant user re-engagement, churn risk), check "Re-enroll contacts when they meet the trigger criteria again" and set a time delay between re-enrollments (usually 30-90 days).
Building If/Then Logic for PLG Segments
Use if/then branches to customize actions based on usage patterns or contact attributes. Example from the activation onboarding workflow:
- Add an if/then branch after the first email
- Branch logic: Contact property "Feature X Used" is equal to "Yes"
- Yes path: Send advanced tips email
- No path: Send getting-started email
You can nest branches (if contact score > 50 AND contact owner exists, do X) to handle complex logic without creating dozens of separate workflows.
Getting Product Data Into HubSpot (Without Engineering)
All seven workflows above assume product usage properties are already populated in HubSpot. That's the hard part. Here's how PLG teams solve it.
Traditional approach: Build a data pipeline. Warehouse your product data in Snowflake or BigQuery, write SQL to compute usage metrics, use a reverse ETL tool (Hightouch starts at $350/mo, Census at similar pricing) to sync computed properties to HubSpot. This works, but it requires data engineering resources and adds days of latency between product events and HubSpot updates.
Zoody approach: Connect your product event tracking (Segment, RudderStack, custom events) directly to HubSpot via Zoody. Map product events to HubSpot properties in the Zoody UI. Events flow into HubSpot in real time. No warehouse, no SQL, no reverse ETL subscription. RevOps teams can set this up in an afternoon without engineering support.
Zoody is HubSpot-only and doesn't replace your product analytics tool (you still need Mixpanel or Amplitude for in-depth analysis). But if your RevOps stack is built on HubSpot and you need product data in HubSpot to power workflows, Zoody gets you there without the warehouse tax.
For more on setting up HubSpot for PLG companies, see our complete CRM setup guide.
Common HubSpot Workflow Limitations for PLG (And Workarounds)
Workflow execution limits: HubSpot Professional has a 1,000 workflow actions per day limit (Marketing Hub Pro). Enterprise removes this cap. If you're enrolling hundreds of free signups per day, you'll hit this ceiling fast. Workaround: batch low-priority workflows to run once per day instead of in real time, or upgrade to Enterprise.
Re-enrollment logic: By default, contacts enroll once. If a user goes dormant, re-engages, then goes dormant again, they won't re-enroll in your dormant user workflow. Enable re-enrollment and set a delay (30 days) so workflows can trigger multiple times for the same user.
Property update delays: If product data syncs to HubSpot with lag (hours or days), workflows trigger late. Sales gets notified about a PQL after the user has already moved on. Use real-time sync (Zoody, or well-configured API webhooks) to minimize this delay.
Complex scoring models: HubSpot workflows can increment scores, but building time-decay scoring or multi-factor PQL models gets messy. Workaround: compute the score outside HubSpot (in your app, or in a tool like Zoody) and sync the final score as a single number property. The workflow just reads the score and triggers at the threshold.
FAQ
Does HubSpot have workflows?
Yes. HubSpot workflows are automation tools that trigger actions based on contact, company, deal, or ticket property changes. They're included in Marketing Hub Professional and above, Sales Hub Professional and above, and Service Hub Professional and above. You can also access workflows in Operations Hub.
Can you provide some examples of HubSpot workflows?
Standard HubSpot workflows include lead nurturing email sequences (trigger: form submission), deal stage automation (trigger: deal stage changes to "Closed Won"), and task creation for sales reps (trigger: contact becomes an MQL). For PLG companies, workflows trigger on product usage properties like activation status, feature adoption, or usage frequency
Compare alternatives
- Zoody vs Hightouch- without the warehouse layer
- Zoody vs Census- skip the dbt models
- Zoody vs HubSpot Operations Hub- $7,800/yr cheaper for the one feature
Explore use cases
- PQL scoring in HubSpot- score on real behavior
- Free trial conversion- time-decay + triggers
- PLG sales handoff- AE Slack alerts in under a minute
Try it on your own HubSpot
Zoody is in beta, so every feature is free right now. Connect your HubSpot, put real product signals on your records, and work directly with the founder.