Skip to main content
Dec 15, 2025 Paul Sullivan

Customer.io + HubSpot Integration Strategy: A Complete Guide 2026

Most product-led B2B SaaS companies use two critical tools:

Customer.io for behavioural messaging and lifecycle campaigns
HubSpot for CRM, sales pipeline, and customer relationships

Both are excellent at what they do. But when they don't talk to each other, you get:

  • Marketing doesn't know which leads are in the sales pipeline
  • Sales can't see product engagement or campaign history
  • Attribution is broken (can't track campaigns to revenue)
  • Users get duplicate messages from both systems
  • Teams operate from different "versions of truth"

The solution: Proper integration.

We're both a Customer.io Certified Partner and a HubSpot Platinum Partner (top 2% globally). We've integrated these systems for dozens of PLG companies.

Here's how to do it right.


TL;DR:

  • Integrating Customer.io with HubSpot creates unified GTM architecture where campaign engagement flows to sales and deal stages coordinate with marketing
  • Three integration methods exist (native, Segment, custom API); most PLG companies benefit from a hybrid approach combining Segment and native integration
  • Proper integration enables campaign attribution to revenue, seamless PQL handoffs, and coordinated messaging that prevents duplicate outreach

 

Why This Integration Matters

The PLG Challenge

Product-led companies have a unique go-to-market motion:

Early stage: Product usage drives everything

  • Users sign up and try the product
  • Behavioural campaigns drive activation
  • Self-serve conversion to paid

Growth stage: Sales gets involved

  • High-intent users become sales opportunities
  • Product-qualified leads (PQLs) need a human touch
  • Account expansion requires coordination

The challenge: Marketing and sales need to coordinate without stepping on each other.

Customer.io alone can't do this. It's brilliant for behavioural messaging, but wasn't built for CRM.

HubSpot alone can't do this. It's excellent for the sales pipeline, but behavioural automation is clunky.

Together, properly integrated, they create a unified GTM architecture.


What Proper Integration Looks Like

Unified Customer View

Sales sees:

  • Which lifecycle campaigns the prospect engages with
  • Email open/click history from Customer.io
  • Product activation status and usage data
  • Last campaign interaction date
  • Engagement score from lifecycle campaigns

Marketing sees:

  • Which leads are in the sales pipeline (suppress campaigns)
  • Deal stage and sales owner
  • Last sales activity date
  • Lifecycle stage changes
  • Company/account information

Result: Both teams operate from the same customer data, no blind spots.


Seamless Handoffs

Product → Marketing:
User activates → Customer.io engagement campaigns

Marketing → Sales:
High engagement + usage signals → Create HubSpot deal, assign to rep

Sales → Marketing:
Deal enters pipeline → Pause automated campaigns
Deal goes cold → Trigger re-engagement content

No manual exports. No duplicate outreach. Just coordinated GTM.


Working Attribution

Track the whole journey:

  1. User signs up (product event)
  2. Receives activation campaign (Customer.io)
  3. Opens and clicks emails (engagement tracked)
  4. Activates product (synced to HubSpot)
  5. Becomes PQL (deal created)
  6. Sales engages (HubSpot activities)
  7. Converts to paid (closed-won)

Attribution report shows:

  • Which Customer.io campaigns influenced the deal
  • Which emails drove product engagement
  • ROI of lifecycle marketing
  • Marketing's contribution to revenue

Finally, you can prove lifecycle marketing ROI.


Integration Architecture

High-Level Data Flow

Your product generates behaviour data and sends events and attributes to either a Customer Data Platform (like Segment - optional) or directly to both Customer.io and HubSpot.

The Customer Data Platform (if used) collects events once and routes to multiple tools.

Customer.io and HubSpot have a bi-directional data sync between them.

Customer.io handles behavioural messaging, campaigns, events, and segments.

HubSpot handles CRM and sales, including contacts, companies, and deals.

Three data flows to configure:

  1. Product → both systems: User events and attributes
  2. Customer.io → HubSpot: Campaign engagement, conversions
  3. HubSpot → Customer.io: Deal stages, lifecycle stages, sales activity

Integration Method Options

Option 1: Native Customer.io ↔ HubSpot Integration

How it works:

  • Built into Customer.io
  • OAuth connection to HubSpot
  • Configure in Customer.io settings
  • Bi-directional sync

Setup:

  1. Go to Customer.io → Integrations → HubSpot
  2. Click "Connect HubSpot"
  3. Authorise via OAuth
  4. Select events to send to HubSpot
  5. Map Customer.io attributes → HubSpot properties
  6. Map HubSpot properties → Customer.io attributes
  7. Test with sample user

Pros:

  • Easiest to set up (no code)
  • Maintained by Customer.io
  • Free (included in subscriptions)
  • Good for standard use cases

Cons:

  • Limited customization
  • Can't transform data during sync
  • Basic field mapping only

Best for: Simple integrations, straightforward data flows


Option 2: Via Segment (Customer Data Platform)

How it works:

  • Segment sits between product and destinations
  • The product sends events to Segment once
  • Segment routes to both Customer.io and HubSpot
  • You control the data flow

Architecture:
Product → Segment → Customer.io
→ HubSpot
→ Analytics
→ Data Warehouse

Plus native integration for CRM-specific data between Customer.io ↔ HubSpot

Pros:

  • Maximum flexibility
  • Single tracking implementation in the product
  • Easy to add more tools later
  • Can transform data before routing
  • Event replay if something breaks

Cons:

  • Additional cost (approximately £120-350/month)
  • Another vendor to manage
  • More complex initial setup

Best for: Series A+ companies, 4+ tools in stack, need flexibility


Option 3: Custom API Integration

How it works:

  • Direct API calls to both platforms
  • Complete control over data flow
  • Build exactly what you need

Pros:

  • Complete control
  • No middleman costs
  • Optimised for your exact needs
  • Can handle complex transformation logic

Cons:

  • Most development work
  • You maintain it forever
  • Must handle rate limits, errors, and retries
  • Longer implementation time

Best for: Companies with strong dev resources, unique requirements


Recommended: Hybrid Approach

For most PLG companies:

Product → Segment → Customer.io (product events)
→ HubSpot (basic contact data)

Customer.io ↔ HubSpot (native integration for CRM sync)

Custom APIs for special cases only

Why this works:

  • Segment handles product events (flexible, maintainable)
  • Native integration handles CRM-specific sync (reliable)
  • Custom code only for unique edge cases
  • Best of all three approaches

Critical Data Flows

Flow 1: Product → Both Systems

What to sync:

User Identity:

  • User ID
  • Email
  • First name
  • Last name
  • Created timestamp

Key Attributes:

  • Plan type (free, trial, paid, enterprise)
  • Activated (boolean)
  • Activation date
  • Last login
  • Monthly recurring revenue
  • Team size
  • Company name

Core Events:

Signup:

  • Event: signed_up
  • Properties: signup_source, utm_campaign

Activation:

  • Event: activated
  • Properties: activation_milestone, days_to_activation

Upgrade:

  • Event: upgraded
  • Properties: from_plan, to_plan, mrr

Sync frequency: Real-time (under 1 minute)


Flow 2: Customer.io → HubSpot

What to sync:

Campaign Engagement Events:

Every time someone opens or clicks a Customer.io email, create a timeline event in HubSpot.

Email Opened:

  • Email address
  • Event name: Marketing Email Opened
  • Occurred timestamp
  • Properties: campaign_name, campaign_id, email_subject

Email Clicked:

  • Email address
  • Event name: Marketing Email Clicked
  • Occurred timestamp
  • Properties: campaign_name, link_url, link_text

Result: Sales reps see complete campaign engagement in the contact timeline.

Campaign Conversion Events:

When a lifecycle campaign drives conversion, record it:

  • Email address
  • Event name: Campaign Conversion
  • Occurred timestamp
  • Properties: campaign_name, conversion_action, attributed_email

Result: Attribution tracking that actually works.

Engagement Properties:

Update contact properties with aggregate data:

  • last_email_open_date
  • email_engagement_score (0-100)
  • campaigns_engaged (count)
  • lifecycle_campaign_stage

Sync frequency: Real-time for events, hourly for aggregate properties


Flow 3: HubSpot → Customer.io

What to sync:

CRM Stage Changes:

When a deal stage or lifecycle stage changes, sync to Customer.io:

  • hubspot_lifecycle_stage (lead, mql, sql, opportunity, customer)
  • hubspot_deal_stage (your deal stages)
  • hubspot_deal_value (deal amount)
  • hubspot_owner_email (sales rep)
  • hubspot_last_activity

Why this matters:

Suppression logic in Customer.io:

IF hubspot_lifecycle_stage = "opportunity"
AND hubspot_last_activity < 7 days ago
THEN suppress from automated campaigns

Result: Marketing doesn't spam prospects that sales is actively working.

Company/Account Data:

Enrich Customer.io with firmographic data:

  • company_name
  • company_size
  • company_industry
  • company_annual_revenue

Result: Better segmentation and personalisation in lifecycle campaigns.

Sync frequency: Real-time for deal/lifecycle changes, daily for company data


Field Mapping Strategy

Create Custom HubSpot Properties

Before integration, create these contact properties in HubSpot:

Product Data Properties:

product_activated

  • Type: Single checkbox (boolean)
  • Group: Product Information

product_plan

  • Type: Dropdown select
  • Options: free, trial, professional, enterprise
  • Group: Product Information

last_product_activity

  • Type: Date picker
  • Group: Product Information

mrr

  • Type: Number
  • Group: Product Information

usage_score

  • Type: Number
  • Description: 0-100 score based on product usage
  • Group: Product Information

Campaign Engagement Properties:

last_email_open_date

  • Type: Date picker
  • Group: Email Marketing

email_engagement_score

  • Type: Number (0-100)
  • Group: Email Marketing

campaigns_engaged

  • Type: Number
  • Group: Email Marketing

lifecycle_campaign_stage

  • Type: Dropdown
  • Options: onboarding, activated, engaged, at_risk
  • Group: Email Marketing

Field Mapping Table

Product → Both Systems:

  • plan_type (Customer.io) → product_plan (HubSpot)
  • activated (Customer.io) → product_activated (HubSpot)
  • last_login (Customer.io) → last_product_activity (HubSpot)
  • mrr (Customer.io) → mrr (HubSpot)

Customer.io → HubSpot:

  • email_opened event → last_email_open_date property
  • calculated score → email_engagement_score property

HubSpot → Customer.io:

  • lifecyclestage → hubspot_lifecycle_stage
  • dealstage → hubspot_deal_stage
  • hubspot_owner_id → hubspot_owner_email

Key principle: Prefix HubSpot data in Customer.io with "hubspot_" to show a clear source.


Campaign Coordination Patterns

Pattern 1: PQL Handoff

Scenario: User shows buying intent, hand off to sales

Implementation:

Step 1: User triggers PQL criteria in the product

  • activated = true
  • usage_score > 70
  • hit_plan_limit = true

Step 2: Event sent to both systems

  • Event name: product_qualified_lead

Step 3: Customer.io receives the event

  • Tag user as "PQL"
  • Pause nurture campaigns
  • Send "Sales will reach out" email

Step 4: HubSpot receives the event

  • Create a timeline event
  • Update lifecycle stage → "Sales Qualified Lead"
  • Create deal
  • Assign to sales rep
  • Create task: "PQL - High Intent"

Step 5: Sales rep receives

  • Email alert
  • HubSpot task
  • Full context (product usage + campaign engagement)

Result: Seamless handoff with context preserved.


Pattern 2: Trial Coordination

Throughout the trial, both systems coordinate:

Days 0-7 (Marketing-owned):

Customer.io: Activation campaign
HubSpot: Contact lifecycle = "Trial"

IF high_usage AND high_engagement:

  • Flag as PQL in HubSpot
  • Continue Customer.io campaigns

IF low_usage:

  • Customer.io sends help offers
  • HubSpot logs low engagement

Days 7-14 (Transition period):

IF PQL_signals:

  • HubSpot creates a deal
  • Sales begins outreach
  • Customer.io suppresses campaigns

IF normal_usage:

  • Customer.io continues education
  • HubSpot monitors for PQL signals

Day 14+ (Trial ending):

IF deal_exists:

  • Sales owns the conversation
  • NO Customer.io campaigns
  • HubSpot workflows only

IF no_deal:

  • Customer.io upgrade campaign
  • HubSpot monitors for PQL

Result: Marketing and sales coordinate, no duplicate outreach.


Pattern 3: Stalled Deal Re-engagement

Scenario: Sales deal goes cold, marketing helps re-engage

Implementation:

IF hubspot_deal_stage = "negotiation"
AND hubspot_last_activity > 14 days ago
THEN trigger Customer.io campaign:

  • Email 1: Relevant case study
  • Email 2: ROI calculator
  • Email 3: Decision-maker content

Track engagement, sync back to HubSpot

IF engagement_detected:

  • Create a HubSpot task for the sales rep
  • Note: "Prospect engaged with case study"

Result: Marketing assists sales with dormant opportunities.


Attribution Setup

Track Campaign → Revenue

Implementation:

Step 1: Tag conversions in Customer.io

When the user upgrades:

  • Event: upgraded
  • Properties:
    • attributed_campaign: "Activation Sequence"
    • attributed_email: "Day 3 - Feature Spotlight"
    • attribution_model: "last_touch"
    • conversion_value: 99

Step 2: Sync to the HubSpot timeline

Create timeline event:

  • Email address
  • Event name: Campaign Conversion
  • Occurred timestamp
  • Properties:
    • campaign_name: "Activation Sequence"
    • email_name: "Day 3 - Feature Spotlight"
    • conversion_value: 99

Step 3: Create a HubSpot custom report

Report: Campaign Attribution

  • Object: Deals
  • Filter: Has timeline event "Campaign Conversion"
  • Group by: campaign_name
  • Metrics:
    • Count of deals
    • Sum of deal amount
    • Average deal size
    • Win rate

Result: Clear view of which Customer.io campaigns drive revenue.


Testing Checklist

Before going live, test these scenarios:

Product → Customer.io:

  • Create a test user, verify the user appears in Customer.io within 1 min
  • Update user attributes, verify sync
  • Trigger test events, verify the events appear in the activity log
  • Check that the data types are correct

Product → HubSpot:

  • Create test user, verify contact created
  • Check all properties populated correctly
  • Trigger key events, verify timeline events appear
  • Check company creation (if applicable)

Customer.io → HubSpot:

  • Send a test campaign to the test user
  • Open email, verify opens on timeline
  • Click the link, verify clicks on the timeline
  • Check the engagement properties update

HubSpot → Customer.io:

  • Update deal stage, verify syncs to Customer.io
  • Update lifecycle stage, verify syncs
  • Check timing (should be under 15 minutes)

Coordination Logic:

  • Create a deal, verify campaigns, suppress
  • Close deal, verify customer campaigns trigger
  • Test PQL handoff end-to-end

Don't skip testing. Broken integrations cause duplicate messages and lost revenue.


Common Mistakes

Mistake 1: Not Prefixing HubSpot Data

Bad approach:
Customer.io attribute: lifecycle_stage

Problem: Conflicts with Customer.io's own logic

Good approach:
Customer.io attribute: hubspot_lifecycle_stage

Result: Clear data source, no conflicts


Mistake 2: Syncing Everything

Bad approach:
Sync all 200 HubSpot properties to Customer.io

Problem: Data overload, slow sync, costs money

Good approach:
Sync only 10-15 properties you actually use:

  • hubspot_lifecycle_stage
  • hubspot_deal_stage
  • hubspot_owner_email
  • company_name
  • company_size

Result: Clean data, fast sync, lower costs


Mistake 3: No Suppression Logic

Bad approach:
All campaigns are sent regardless of the HubSpot status

Problem: Marketing spams prospects that sales is working

Good approach:
Suppress campaigns if:

  • hubspot_lifecycle_stage = "opportunity"
  • hubspot_last_activity < 7 days

Result: Coordinated outreach, better experience


Mistake 4: Forgetting Attribution

Bad approach:
Run campaigns but never track which ones drive revenue

Problem: Can't prove ROI, don't know what works

Good approach:
Tag all conversions with campaign attribution. Sync to the HubSpot timeline. Build attribution reports.

Result: Prove marketing ROI, optimise effectively


Implementation Timeline

Week 1: Planning

  • Map data flows (what syncs where)
  • Create a field mapping document
  • Define suppression rules
  • Design attribution model

Week 2: HubSpot Setup

  • Create custom properties
  • Set up workflows for sync triggers
  • Configure timeline event templates
  • Build attribution reports

Week 3: Integration Configuration

  • Set up the chosen integration method
  • Configure field mappings
  • Set up bi-directional sync
  • Implement suppression logic

Week 4: Testing

  • Test all data flows
  • Verify suppression works
  • Check attribution tracking
  • Test coordination scenarios

Week 5: Launch

  • Enable for 10% of users
  • Monitor for 48 hours
  • Fix any issues
  • Full rollout

Total: 4-5 weeks for proper integration


When to Get Help

DIY if:

  • You have developer resources
  • Your use case is straightforward
  • You have 6-8 weeks to dedicate
  • The budget is limited

Hire an expert if:

  • You don't have technical resources
  • You need complex coordination logic
  • You want it done in 4 weeks (vs. 2-3 months DIY)
  • You need strategic guidance, not just technical setup

What professional integration includes:

  • Data architecture design
  • Field mapping strategy
  • Bi-directional sync setup
  • Campaign coordination logic
  • Attribution implementation
  • Testing and QA
  • Team training

Investment: £6,000-£12,000 for complete integration
Timeline: 4-6 weeks
ROI: If proper integration increases marketing efficiency by 20%, payback in 1-2 months


Free Resource

We've created a complete technical guide:

HubSpot + Customer.io Integration Architecture Guide

16-page technical guide covering:

  • Complete architecture diagrams
  • Field mapping templates
  • Code examples for each integration method
  • Campaign coordination patterns
  • Attribution setup
  • Testing checklists
  • Troubleshooting guide

Download the complete guide


Next Steps

If you're planning this integration:

  1. Download the Integration Architecture Guide
    Complete technical reference with code examples
  2. Map your data flows
    Document what data needs to go where
  3. Choose your integration method
    Native, Segment, or custom API
  4. Plan your coordination logic
    How will marketing and sales coordinate?
  5. Set up attribution tracking
    Design before implementing

If you want expert help:

Book a free 30-minute consultation

We'll review your current setup and design the right integration architecture for your company.

We're uniquely positioned for this integration:

  • Customer.io Certified Partner
  • HubSpot Platinum Partner (top 2%)
  • Only agency with both certifications
  • 50+ integrated implementations

Get in touch:
📧 enquiries@arisegtm.com
📞 020 3637 4426

Published by Paul Sullivan December 15, 2025
Paul Sullivan