DTC & Ecommerce 14 min read

How to Connect Shopify to HubSpot: Integration Methods, Setup Guide & Common Issues

Complete guide to connecting Shopify to HubSpot: native app, Zapier, Fivetran, and more. What data syncs, step-by-step setup, comparison table, and how to fix deduplication issues.

Siddharth Gangal

Most DTC teams run Shopify as their store and HubSpot as their CRM, and at some point realize that keeping both systems in sync by hand — exporting CSVs, manually updating deal stages, copying customer data between tabs — is not a strategy. It is a tax on everyone's time.

Connecting Shopify to HubSpot solves that. Done correctly, the integration means every Shopify order creates or updates a HubSpot contact, every abandoned cart can trigger an automated email sequence, and your sales team can see a customer's complete purchase history without leaving the CRM. Done incorrectly, it creates a swamp of duplicate contacts, mismatched currency values, and broken workflows that take longer to untangle than the manual process ever did.

This guide covers:

  • Every integration method available — native HubSpot app, Zapier, Fivetran, and more
  • A comparison table so you can choose the right approach for your stack
  • Step-by-step setup instructions for the native HubSpot Shopify app
  • Exactly what data syncs between the two platforms
  • The most common failure modes — deduplication, multi-store, currency — and how to fix them
  • FAQ on the questions operators ask most after going live

HubSpot ecommerce bridge. The underlying API framework HubSpot uses to map ecommerce objects — orders, customers, products, abandoned carts — to native CRM objects like deals, contacts, and pipelines. Every Shopify–HubSpot integration, whether native or third-party, uses the ecommerce bridge under the hood.

In This Guide

  • All integration methods with trade-offs
  • Step-by-step native app setup
  • Full list of objects and fields that sync
  • Deduplication, multi-store, and currency fixes
  • FAQ: 7 questions operators ask after going live

Why the Shopify–HubSpot Integration Matters for Ecommerce Operators

Shopify holds your transaction data: orders, products, customers, SKUs, refunds, fulfillment events. HubSpot holds your relationship data: marketing contacts, deal pipelines, email sequences, and the CRM records your customer success or sales team works from every day. Without a live sync between them, you have two sources of truth that are always at odds.

The practical consequences are significant. A customer who just placed a $1,200 order gets a winback email the following day because HubSpot's last-activity date is stale. A sales rep quotes a returning wholesale buyer without knowing they churned six months ago. A lifecycle email flow triggers for a contact who has already converted because Shopify's order event never reached HubSpot.

These are not edge cases. They are the default state of every team running both platforms without a structured integration.

The Shopify–HubSpot integration resolves this by treating Shopify as the system of record for transaction data and HubSpot as the system of record for contact and relationship data, with a defined, automated flow between them.

Integration Methods: What Your Options Actually Are

There are four primary ways to connect Shopify to HubSpot. Each has a different setup complexity, data fidelity, and cost profile. The right choice depends on your store complexity, HubSpot plan, and how much engineering capacity you have.

Method Setup Complexity Data Fidelity Cost Best For
Native HubSpot Shopify App Low (no code) Medium Free (included with HubSpot) Single-store, standard use cases
Zapier Low–Medium Low–Medium $20–$100+/mo depending on tasks Custom field mapping, lightweight workflows
Fivetran Medium–High High $500+/mo (enterprise pricing) Multi-store, data warehouse, analytics
Custom API Integration High (engineering required) Very High Dev time + infra costs Complex data models, custom logic

Native HubSpot Shopify App

HubSpot's official Shopify integration is available in the HubSpot App Marketplace and is the default starting point for most teams. It connects through HubSpot's ecommerce bridge, syncing customers, orders, products, and abandoned carts without any code.

The trade-offs are real. The native app supports one Shopify store per HubSpot portal, cannot backfill more than 12 months of order history, and has limited handling for multi-currency stores. Contact deduplication is not automatic — a customer who previously submitted a HubSpot form with a slightly different email will likely create a duplicate record.

For most single-store brands running standard ecommerce workflows, the native app is sufficient and the right place to start. Add complexity only when you have a concrete need for it.

Zapier

Zapier connects Shopify and HubSpot through trigger-action Zaps. Common Zaps: new Shopify order creates or updates a HubSpot contact; new Shopify customer creates a HubSpot deal; Shopify order tag change updates a HubSpot contact property. Zapier gives you more granular field control than the native app and supports multi-store setups via separate Zap workflows.

The limitation is volume. Zapier runs on a per-task pricing model, and a brand processing 500+ orders per day can accumulate substantial monthly costs. Zapier also introduces latency — Zaps run on polling intervals, not true webhooks, meaning a Shopify order event may take 1–15 minutes to reach HubSpot depending on your plan tier.

Fivetran

Fivetran is a data pipeline tool that replicates Shopify's full data model into a data warehouse (BigQuery, Snowflake, Redshift) and can then push enriched data into HubSpot via the HubSpot API. It is not a direct Shopify-to-HubSpot connector in the traditional sense — it routes data through a warehouse — which means setup requires a warehouse and some SQL familiarity.

The payoff is fidelity. Fivetran captures the complete Shopify schema: every order, line item, refund, fulfillment event, product variant, and inventory level. For brands that need LTV cohort analysis, multi-store aggregation, or historical data beyond 12 months, Fivetran combined with HubSpot's API is the correct architecture. The cost is high for early-stage brands but reasonable for operators already running a data warehouse.

Custom API Integration

Both Shopify and HubSpot have well-documented REST APIs. A custom integration built on Shopify webhooks (which fire in real time on order events, customer updates, and product changes) posting to HubSpot's CRM API gives you complete control over field mapping, deduplication logic, and object creation rules.

This is the highest-fidelity option and the right choice if you have non-standard data requirements — for example, syncing Shopify metafields to custom HubSpot contact properties, or building a bidirectional sync where HubSpot deal stage changes update Shopify customer tags. The cost is engineering time to build and ongoing maintenance to keep current as both platforms update their APIs.

What Data Syncs Between Shopify and HubSpot

Understanding exactly what moves between the two platforms prevents a common mistake: assuming the integration transfers all Shopify data when it transfers a subset. Here is what the native HubSpot Shopify app syncs and how each object maps.

Customers → HubSpot Contacts

Every Shopify customer with an email address syncs as a HubSpot contact. Fields that populate on the contact record include:

  • Email address (primary deduplication key)
  • First name and last name
  • Billing and shipping address
  • Phone number
  • Shopify customer ID (stored as a custom HubSpot property)
  • Customer tags from Shopify (synced to a HubSpot contact property)
  • Marketing email consent status
  • Total spend and order count (aggregated properties, updated on each new order)

What does not sync by default: customer notes, metafields, Shopify account creation date (you can populate this via a custom property if needed), and LTV calculations beyond total spend.

Orders → HubSpot Deals

Each Shopify order creates a deal in a HubSpot ecommerce pipeline. Fields that populate on the deal include:

  • Order number
  • Total order value (converted to HubSpot portal currency)
  • Line items (product name, SKU, quantity, price — stored on the deal)
  • Order status (open, fulfilled, refunded)
  • Fulfillment status
  • Discount codes applied
  • Payment gateway
  • Deal stage (maps to order status: placed, fulfilled, cancelled, refunded)

What does not sync: individual fulfillment tracking numbers, partial refund amounts (only full refund status), Shopify shipping line details, and draft orders created in the Shopify admin.

Products → HubSpot Products

Shopify products sync to HubSpot's product library. Each product brings over name, description, SKU, price, and product URL. Product variants sync as separate line items on deals rather than as separate product records. The product library sync is primarily useful for associating line items with deals — it is not designed as a product catalog for sales quoting unless you are running a wholesale or B2B operation on HubSpot Sales Hub.

Abandoned Carts → HubSpot Workflows

When a Shopify customer starts checkout but does not complete it, the native integration creates an abandoned cart object in HubSpot. This object includes the contact association, cart value, and products in the cart. You can use this to trigger HubSpot workflow sequences — for example, a three-email abandoned cart sequence that fires 1 hour, 4 hours, and 24 hours after abandonment.

The abandoned cart trigger requires that the customer entered their email address at checkout. Guests who abandon without entering an email do not create a contact or a cart object in HubSpot.

Step-by-Step Setup: Native HubSpot Shopify App

The following steps assume you have an active Shopify store and a HubSpot account (any plan, including the free CRM). The native app is available at no additional cost beyond your HubSpot subscription.

Step 1: Install from the HubSpot App Marketplace

  1. Log into your HubSpot account.
  2. Navigate to Settings > Integrations > Connected Apps or open the HubSpot App Marketplace directly at ecosystem.hubspot.com/marketplace/apps.
  3. Search for "Shopify" and select the official HubSpot Shopify integration (developed by HubSpot).
  4. Click Install app. You will be redirected to Shopify's OAuth flow to grant HubSpot access to your store data.
  5. In Shopify, confirm the permissions HubSpot requires: read orders, customers, products, and inventory. These are read-only permissions from Shopify's side — HubSpot cannot write back to Shopify through the native app.

Step 2: Configure the Initial Sync Settings

  1. After OAuth completes, HubSpot will display the integration settings panel.
  2. Under Sync Settings, confirm which objects you want to sync: Contacts, Deals, Products, Carts. Enable all four unless you have a specific reason not to.
  3. Set your historical import range. The default is 12 months. If you want to backfill older orders, note that the native app cannot go beyond 12 months — you will need to supplement with a manual CSV import or API call for older records.
  4. Review the deal pipeline HubSpot will create. By default, HubSpot creates a new pipeline called "Shopify" with deal stages mapped to order statuses (Order Placed, Order Fulfilled, Order Cancelled, Order Refunded). You can rename or merge this pipeline into an existing one, but do this before the initial sync runs — restructuring pipelines after deals exist in them is painful.
  5. Set your contact association preferences. Choose whether incoming Shopify contacts should be associated with an existing company record in HubSpot (useful for B2B brands) or left as standalone contacts (the standard DTC setup).

Step 3: Run the Initial Sync and Validate

  1. Click Start sync. HubSpot will begin importing historical Shopify data. The duration depends on your order volume — a store with 10,000 orders may take 20–60 minutes.
  2. During the sync, open HubSpot's Contacts view and filter by Shopify customer ID is known. This confirms contacts are being created correctly.
  3. Once the sync completes, spot-check 5–10 contacts against your Shopify customer records. Confirm that order count, total spend, and email address match between the two systems.
  4. Navigate to Sales > Deals > Shopify pipeline and verify that recent orders appear with correct deal amounts and line items.
  5. Check for duplicates immediately: go to Contacts > Actions > Manage Duplicates. HubSpot's deduplication tool will surface any contacts it identifies as potential duplicates. Resolve these before enabling live sync activity on the affected contacts.

Step 4: Set Up Abandoned Cart Workflows

  1. In HubSpot, navigate to Automation > Workflows > Create workflow.
  2. Choose Contact-based workflow.
  3. Set the enrollment trigger to Cart is abandoned — this trigger is only available once the Shopify integration is active.
  4. Add a time delay (1 hour is standard for the first email), then add a Send email action. Your email template should reference the cart value and products using HubSpot's personalization tokens, which will pull from the cart object properties.
  5. Add a Goal to the workflow: contact places an order. This automatically unenrolls the contact from the abandoned cart sequence once they convert — preventing them from receiving cart recovery emails after they have already bought.

Step 5: Configure Lifecycle Stage Automation

One of the highest-value outputs of the Shopify–HubSpot integration is accurate lifecycle stage data. Out of the box, HubSpot's lifecycle stages (Subscriber, Lead, Marketing Qualified Lead, Customer) do not automatically update based on Shopify order events. You need to configure this explicitly.

  1. Create a workflow triggered by Shopify order count is greater than or equal to 1.
  2. Set the action to Set property: Lifecycle stage = Customer.
  3. Create a second workflow triggered by Shopify order count is greater than or equal to 2 and set lifecycle stage to a custom value like "Repeat Customer" — or use a separate HubSpot contact property to track repeat purchase status.

This ensures your marketing lists, lead scoring models, and contact segmentation reflect actual purchase behavior rather than form submissions alone.

Common Issues and How to Fix Them

Contact Deduplication

Deduplication is the most commonly reported issue with the Shopify–HubSpot integration. It happens because HubSpot uses email as the primary deduplication key, but Shopify customers may have multiple emails (personal and work), guests who check out without creating an account create new contacts each time, and contacts who previously entered HubSpot through a form submission may have email addresses with different capitalization or spacing.

The fix has three parts. First, before enabling live sync, run a full deduplication pass using HubSpot's native tool at Contacts > Actions > Manage Duplicates. Second, consider a paid deduplication tool like Dedupely if you have a large contact database — it offers fuzzy matching on name and phone number that HubSpot's native tool does not. Third, for ongoing prevention, set up a HubSpot workflow that flags any new contact with no Shopify customer ID but with a matching email to an existing contact for manual review.

Multi-Store Setups

The native HubSpot Shopify app supports only one store per HubSpot portal. If you run multiple storefronts — a US store and a UK store, separate stores for wholesale and DTC, or stores for different product lines — you cannot use the native app for both simultaneously without creating a separate HubSpot portal for each.

The practical options for multi-store operators are: use Zapier with separate Zaps per store, tagging contacts and deals with a store-of-origin property; use a dedicated multi-store connector like Alloy Commerce or Celigo; or build a custom integration that aggregates both stores' webhook events before posting to HubSpot. Whichever route you choose, add a store_origin custom property on every HubSpot contact and deal at sync time. Without it, your reporting cannot distinguish customers or revenue by store.

Currency and Reporting Accuracy

HubSpot stores all deal amounts in a single base currency set at the portal level. The native Shopify app converts order amounts to your HubSpot base currency at the time of sync using the exchange rate active at that moment. This means historical deal values in HubSpot will reflect the exchange rate at sync time, not at order time — making multi-currency revenue comparisons inaccurate.

The fix: store both the original Shopify order currency code and original order amount as custom deal properties. Create two custom properties — Shopify Order Currency (single-line text) and Shopify Order Amount (Original Currency) (number) — and populate them during sync. This gives you a way to re-derive accurate local-currency revenue in HubSpot reports even when the converted deal amount is unreliable.

Historical Data Gaps

The native app's 12-month historical limit is a real constraint for brands that want to run long-window LTV analysis or segment customers by cohort year. The workaround is to export Shopify's full order history as a CSV and import it into HubSpot using the Contacts and Deals import tools, manually mapping fields. This is a one-time effort, not a sync — it populates historical records but does not keep them updated going forward.

For brands where historical data depth matters operationally — particularly for subscription operators or brands with high average order frequency — Fivetran plus a data warehouse is the correct long-term architecture. The native app handles forward-going sync; the warehouse handles analytics on the full history.

Frequently asked questions

Does HubSpot have a native Shopify integration?

Yes. HubSpot offers a native Shopify integration available through the HubSpot App Marketplace. It syncs customers, orders, products, and abandoned carts using HubSpot's ecommerce bridge. The native app is the fastest path to a basic sync and requires no code, but it has limitations around multi-store setups, currency handling, and historical data imports beyond 12 months.

What data syncs between Shopify and HubSpot?

With the native HubSpot Shopify app, the following objects sync: Shopify customers become HubSpot contacts (email, name, address, Shopify customer ID, tags, marketing consent); Shopify orders become HubSpot deals in an ecommerce pipeline (order number, total price, line items, fulfillment status); Shopify products become HubSpot products in the product library; and abandoned carts trigger HubSpot workflows. Order line-item detail and refund events are available on some plans. Shopify metafields, notes, draft orders, and fulfillment tracking numbers do not sync through the native app.

How do I fix duplicate contacts when connecting Shopify to HubSpot?

Contact duplication is the most common issue with the Shopify–HubSpot integration. It occurs because Shopify customers can have multiple email addresses, or the same customer exists in HubSpot with a different email casing or a pre-existing record from a form submission. To fix it: enable HubSpot's deduplication tool under Contacts > Actions > Manage Duplicates after the initial sync; set email as the primary deduplication key in your integration settings; and run a one-time deduplication pass using a tool like Dedupely or HubSpot's native merge tool before enabling live sync.

Can I connect multiple Shopify stores to one HubSpot portal?

HubSpot's native Shopify app supports only one Shopify store per HubSpot portal on most plans. For multi-store setups — such as a US store and a UK store, or separate stores for different product lines — you need a middleware solution like Zapier (with separate Zaps per store), a dedicated connector like Alloy Commerce or Celigo, or a data pipeline tool like Fivetran that can merge both stores into a single HubSpot instance with store-of-origin tagging on every contact and deal.

Does the Shopify–HubSpot integration handle multiple currencies?

Currency handling is a known limitation of the native integration. HubSpot stores deal amounts in a single default currency. If your Shopify store processes orders in multiple currencies, the native app will convert values to your HubSpot portal's base currency using the rate at sync time — meaning historical reports will show inconsistent values if exchange rates fluctuated. For accurate multi-currency reporting, store the original currency code and original order amount as separate custom deal properties, or use Fivetran or a custom API integration that preserves both values at the source.

What is HubSpot's ecommerce bridge and do I need to think about it?

HubSpot's ecommerce bridge is the underlying API framework that maps ecommerce objects (orders, customers, products, carts) to HubSpot CRM objects (deals, contacts, products, carts). The native Shopify app uses it automatically. If you are building a custom integration or using Fivetran or Segment, you interact with the ecommerce bridge API directly. You only need to think about it explicitly if you are writing a custom connector or debugging why objects are not mapping correctly in HubSpot. For the native app setup, it operates invisibly in the background.

How far back does the native HubSpot Shopify app sync historical data?

The native HubSpot Shopify app syncs up to 12 months of historical order data by default. For brands that need longer history — for example, to build LTV cohorts or segment customers by cumulative spend — you need to use HubSpot's import tool (for a one-time historical backfill via CSV) or a data pipeline tool like Fivetran to replicate the full order history from Shopify's admin API. Shopify retains all orders indefinitely in the admin; the 12-month limitation is HubSpot's, not Shopify's.