HubSpot’s CRM combined with Shopify creates a complete view of your customer relationships. This guide covers setup, use cases, and optimization strategies for the integration.
HubSpot CRM
HubSpot 2025 Quick Stats
Related: Shopify Salesforce Integration: Sync Ecommerce and CRM Data (2025), find related content.
| Metric | Data |
|---|---|
| Customer base | Nearly 279,000 customers |
| Global footprint | 135+ countries |
| What most teams automate | Lead → customer sync, abandoned cart, lifecycle stages |
Sources: HubSpot Investor Relations, HubSpot annual reports.
Why Integrate Shopify with HubSpot?
Most Shopify stores face a common problem: customer data lives in silos.
| Data Location | Information | Problem |
|---|---|---|
| Shopify | Orders, transactions | Limited customer insights |
| Email tool | Campaigns, opens | No purchase context |
| Support tool | Tickets, chats | No revenue data |
| Spreadsheets | Manual analysis | Always outdated |
HubSpot integration solves this by creating unified customer records that combine:
- Purchase history from Shopify
- Email engagement from HubSpot
- Support interactions
- Website behavior
- Sales team notes
Integration Options
Option 1: Official HubSpot Integration (Recommended)
HubSpot offers a native Shopify integration built and maintained by HubSpot.
Pros:
- Free to use
- Direct support from HubSpot
- Real-time sync
- Regularly updated
Cons:
- Some features require paid HubSpot plans
- Less customizable than third-party options
Option 2: Third-Party Connectors
| App | Best For | Price |
|---|---|---|
| Unific | Advanced sync, historical data | $99-399/month |
| Zapier | Custom workflows | $20+/month |
| Make | Complex automation | $9+/month |
Option 3: Custom API Integration
For unique requirements, use Shopify and HubSpot APIs directly.
// Example: Sync Shopify order to HubSpot deal
const syncOrderToDeal = async (order) => {
const hubspotDeal = {
properties: {
dealname: `Order #${order.order_number}`,
amount: order.total_price,
dealstage: 'closedwon',
closedate: new Date(order.created_at).getTime(),
pipeline: 'default'
},
associations: [{
to: { id: customerId },
types: [{ associationCategory: 'HUBSPOT_DEFINED', associationTypeId: 3 }]
}]
};
return await hubspotClient.crm.deals.basicApi.create(hubspotDeal);
};
Step-by-Step Setup (Official Integration)
Step 1: Install from Shopify App Store
- Go to apps.shopify.com and search “HubSpot”
- Click the official HubSpot app in the Shopify App Store
- Click Add app and authorize permissions
Step 2: Connect HubSpot Account
- Sign in to your HubSpot account (or create one free)
- Select the HubSpot portal to connect
- Authorize Shopify access to HubSpot
Step 3: Configure Sync Settings
In HubSpot’s integration settings:
| Setting | Recommended Value | Purpose |
|---|---|---|
| Sync contacts | Enabled | Create HubSpot contacts from Shopify customers |
| Sync products | Enabled | Product data for deal line items |
| Sync orders | Enabled | Create deals from orders |
| Historical sync | Enabled | Import past customers/orders |
Step 4: Map Custom Properties
Create HubSpot properties for Shopify data:
Contact Properties:
- Total Lifetime Value
- Order Count
- First Order Date
- Last Order Date
- Average Order Value
Deal Properties:
- Shopify Order Number
- Fulfillment Status
- Discount Codes Used
Step 5: Verify Data Sync
After setup:
- Create a test order in Shopify
- Check HubSpot for new contact and deal
- Verify property values are correct
- Test historical import completed
Key Use Cases
1. Abandoned Cart Recovery
Set up automated emails for cart abandonment:
Trigger: Shopify cart abandoned (no order within 1 hour)
├── Wait 1 hour
├── Send Email 1: "You left something behind"
├── Wait 24 hours
├── If no purchase: Send Email 2: "Still interested?"
├── Wait 48 hours
└── If no purchase: Send Email 3: "Last chance + 10% off"
HubSpot advantage: Include customer service history, past purchases, and support ticket status in personalization.
2. Customer Segmentation
Create smart lists based on purchase behavior:
| Segment | Criteria | Marketing Use |
|---|---|---|
| VIPs | Lifetime value > $1000 | Exclusive offers, early access |
| At-Risk | Last order > 90 days, was regular buyer | Win-back campaigns |
| New Customers | First order in last 30 days | Onboarding sequence |
| High Potential | 2+ orders, AOV > average | Upsell campaigns |
3. Post-Purchase Automation
Trigger: Shopify order placed
├── Immediate: Update contact record with purchase data
├── Day 1: Order confirmation (Shopify handles)
├── Day 3: Request product review
├── Day 14: Cross-sell related products
├── Day 30: Satisfaction survey
└── Day 60: Replenishment reminder (if consumable)
4. Sales Team Enablement (B2B)
For wholesale or B2B Shopify stores:
- Sales reps see customer order history in HubSpot
- Deals created automatically from large orders
- Tasks triggered for high-value customer actions
- Quotes generated with Shopify pricing
Property Mapping Reference
Standard Mappings (Automatic)
| Shopify Field | HubSpot Property | Object |
|---|---|---|
| Customer email | Contact | |
| First name | First name | Contact |
| Last name | Last name | Contact |
| Order total | Deal amount | Deal |
| Order date | Close date | Deal |
| Products | Line items | Deal |
Recommended Custom Mappings
Create these properties for better segmentation:
Contact Level:
shopify_total_spent (Currency)
shopify_order_count (Number)
shopify_first_order_date (Date)
shopify_last_order_date (Date)
shopify_average_order_value (Currency)
shopify_accepts_marketing (Boolean)
shopify_tags (Text)
Deal Level:
shopify_order_number (Text)
shopify_fulfillment_status (Dropdown)
shopify_payment_status (Dropdown)
shopify_discount_code (Text)
shopify_shipping_method (Text)
Workflows and Automation
Abandoned Cart Workflow
- In HubSpot, go to Automation > Workflows
- Create new workflow, trigger: “Cart abandoned”
- Add delay: 1 hour
- Add email action: abandoned cart template
- Add if/then branch: check if order placed
- Continue sequence or exit based on conversion
Customer Lifecycle Workflow
New Customer Journey:
Trigger: First order placed
Day 0: Welcome email + set lifecycle stage to "Customer"
Day 3: Product tips/how-to content
Day 7: Review request
Day 14: Related product recommendations
Day 30: Loyalty program invitation (if criteria met)
Win-Back Workflow
Trigger: Contact property "Days since last order" > 90
AND "Lifetime value" > $200
Day 0: "We miss you" email
Day 7: Personalized product recommendations
Day 14: Exclusive offer (10-15% off)
Day 21: Final reminder with urgency
Day 28: Exit workflow (mark as churned if no action)
Reporting and Analytics
Essential Reports
Create these reports in HubSpot:
Customer Acquisition by Source
- Group by original traffic source
- Metric: Customer count, total revenue
Customer Lifetime Value Cohort
- Group by first order month
- Metric: Total revenue over time
Email Campaign Revenue Attribution
- Group by email campaign
- Metric: Orders and revenue influenced
Sales Pipeline from Ecommerce
- Filter deals by source = Shopify
- Track deal stages and close rates
Attribution Setup
For accurate revenue attribution:
- Enable HubSpot tracking code on Shopify
- Configure UTM parameters for campaigns
- Set up revenue attribution reporting
- Use HubSpot’s multi-touch attribution models
Common Issues and Solutions
Issue: Duplicate Contacts
Cause: Customer exists in both systems with slightly different data
Solution:
- HubSpot deduplicates by email address
- Run manual deduplication review monthly
- Set up import rules to merge on email match
Issue: Missing Historical Orders
Cause: Integration only syncs data after connection
Solution:
- Use historical sync option during setup
- If missing, disconnect and reconnect with historical enabled
- For very old data, use CSV import
Issue: Cart Abandonment Not Triggering
Cause: Timing or configuration issues
Solution:
- Verify checkout tracking is enabled
- Check workflow enrollment criteria
- Ensure email addresses are captured at cart stage
HubSpot vs. Klaviyo for Shopify
| Feature | HubSpot | Klaviyo |
|---|---|---|
| Best for | Full CRM + marketing | Ecommerce email/SMS |
| Free tier | Yes (generous) | Yes (limited) |
| Shopify integration | Good | Excellent (deeper) |
| Email automation | Strong | Strongest for ecommerce |
| CRM features | Full CRM platform | Basic contact management |
| Sales tools | Yes (deals, pipeline) | No |
| B2B features | Strong | Weak |
| Price (1,000 contacts) | Free - $50/mo | Free - $30/mo |
| Price (50,000 contacts) | $800+/mo | $350+/mo |
Choose HubSpot if: You need sales team tools, B2B features, or a unified CRM platform.
Choose Klaviyo if: Ecommerce email/SMS is your primary focus and you want the deepest Shopify integration.
2025 Snapshot
Quick benchmarks for the HubSpot workflow. Use these as planning ranges, then validate against your own data.
| Data point | 2024 | 2025 | Why it matters |
|---|---|---|---|
| Data sync validation time | 30–60 min | 30–60 min | Prevents duplicate contacts and broken pipelines |
| Lifecycle segmentation setup | 1–2 hours | 1–2 hours | Improves conversion targeting |
| Sales/marketing alignment cadence | Weekly | Weekly | Keeps pipelines and campaigns consistent |
| Time-to-first-report (typical) | 1 day | Same-day | Measures integration success quickly |
Next Steps
After setting up Shopify-HubSpot integration:
- Build your first workflow - Start with abandoned cart recovery
- Create customer segments - VIP, at-risk, new customers
- Set up reporting - Track email campaign revenue
- Train your team - Ensure everyone uses the unified data
Shopify + HubSpot implementation checklist (2025)
This section adds practical “make it stable” steps you can use after you install the app/connector. It’s intentionally lightweight: the goal is fewer sync surprises, cleaner reporting, and easier troubleshooting.
1) Quick setup checklist
- Permissions first: grant only the scopes you need (orders/customers/products as required) and document who owns the admin credentials.
- Data mapping: confirm how email, phone, currency, and SKU are mapped between Shopify and HubSpot.
- Historical import: decide how far back to import orders/customers (avoid importing years of data if you don’t need it).
- Deduplication rules: pick one unique identifier per object (usually email for customers, order ID for orders) to prevent doubles.
- Alerts: set a lightweight alert path (email/Slack) for failed syncs, auth expiry, and API rate limits.
2) Data you should verify after connecting
Most integration issues show up in the first hour if you test the right things. Use the table below as a QA checklist (create a test order if needed).
| Data object | What to check | Why it matters |
|---|---|---|
| Customers | Email/phone format, marketing consent fields, duplicates | Prevents double messaging and broken segmentation |
| Orders | Order total, tax, discount, shipping, currency | Keeps revenue reporting and automation triggers accurate |
| Line items | SKU, variant ID, quantity, refunds/returns behavior | Avoids inventory and attribution mismatches |
| Fulfillment | Status changes + timestamps, tracking numbers, carrier fields | Drives customer notifications and post-purchase flows |
| Catalog | Product titles, handles, images, collections/tags | Ensures personalization and reporting match your storefront |
3) Automation ideas for CRM
- Lead capture: new customer/signup → create/update contact in HubSpot with consent fields.
- Lifecycle stages: first purchase → move contact to customer stage and start onboarding tasks in HubSpot.
- Support handoff: high-value order → create a task/notification so reps can follow up in HubSpot.
- Deal signals: repeat purchase or high cart value → trigger sales outreach for B2B accounts.
- Dedupe rules: standardize email/phone formatting to prevent duplicate records across systems.
API sanity check (Shopify Admin API)
If your integration UI says “connected” but data isn’t flowing, a quick API call helps confirm whether the store is accessible and returning the objects you expect.
# List the 5 most recent orders (GraphQL)
curl -X POST "https://your-store.myshopify.com/admin/api/2025-01/graphql.json" \
-H "X-Shopify-Access-Token: $SHOPIFY_ADMIN_TOKEN" \
-H "Content-Type: application/json" \
-d "{\"query\":\"{ orders(first: 5, sortKey: CREATED_AT, reverse: true) { edges { node { id name createdAt totalPriceSet { shopMoney { amount currencyCode } } customer { email } } } } }\"}"Tip: keep tokens/keys in environment variables, and test in a staging store/site before rolling changes to production.
4) KPIs to monitor (so you catch problems early)
- Sync freshness: how long it takes for a new order/customer event to appear in HubSpot.
- Error rate: failed syncs per day (and which object types fail most).
- Duplicates: number of merged/duplicate contacts or orders created by mapping mistakes.
- Revenue parity: weekly spot-check that Shopify totals match downstream reporting (especially after refunds).
- Attribution sanity: confirm that key events (purchase, refund, subscription) are tracked consistently.
5) A simple 30-day optimization plan
- Week 1: connect + map fields, then validate with 5–10 real orders/customers.
- Week 2: enable 1–2 automations and measure baseline KPIs (conversion, AOV, repeat rate).
- Week 3: tighten segmentation/rules (exclude recent buyers, add VIP thresholds, handle edge cases).
- Week 4: document the setup, create an “owner” checklist, and set a recurring monthly audit.
Related integration guides
CRM and support integrations: Shopify Gorgias Integration: Customer Support Helpdesk Guide (2025), Shopify Freshdesk Integration: Helpdesk Setup Guide (2025).