Shopify logo
HubSpot logo

Shopify + HubSpot Integration

Customers, orders, and abandoned carts flow from Shopify into HubSpot as contacts, deals, and line items. Lifecycle stage and list membership can flow back as customer tags. Shopify stays the commerce record; HubSpot owns the conversation.

mode:
Bidirectional (configurable)
latency:
Near real-time
maturity:
Production-tested

what syncs

What syncs, which way, and how fast

Every row is a real data flow with a real trigger. The frequency column is what you should expect in production, not a best case.

Customers

dir:
Shopify → HubSpot
frequency:
Near real-time

Email is the dedupe key. Guest checkouts create contacts too, which is the usual cause of a sudden contact-tier overage in month one.

Orders

dir:
Shopify → HubSpot
frequency:
Near real-time

Becomes a deal in a dedicated e-commerce pipeline with line items attached. Keep it out of your sales pipeline or forecasts become fiction.

Products

dir:
Shopify → HubSpot
frequency:
Hourly

Populates the HubSpot product library so deal line items carry real SKUs and revenue reporting by product works.

Abandoned carts

dir:
Shopify → HubSpot
frequency:
Near real-time

The commercial reason most brands connect these systems. Fires the recovery workflow with the actual cart contents.

Lifecycle / tags

dir:
HubSpot → Shopify
frequency:
Every 15 min

Writes back as customer tags or metafields for segment-based merchandising. Needs Operations Hub or a custom worker.

Fulfillment status

dir:
Shopify → HubSpot
frequency:
Near real-time

Custom property on the deal so Service Hub agents answer "where is my order" without opening Shopify admin.

architecture

How it actually works

The native app covers a real amount of ground. The honest architecture question is not how to build everything from scratch, but exactly where the native app stops and a custom worker has to start.

  1. HubSpot native Shopify app

    Handles standard customer, order, product, and abandoned-cart sync. Free with any paid HubSpot tier. Start here always: building this yourself is wasted money.

  2. Private app for custom objects

    Where the native app runs out. A HubSpot private app with scoped tokens writes the custom properties it will not map, such as subscription state or B2B company tier.

  3. Shopify webhooks + queue

    For anything beyond the native scope. Queued rather than direct so a HubSpot 429 does not lose the event.

  4. HubSpot Workflows

    The automation layer: cart recovery, post-purchase sequences, win-back. Deliberately in HubSpot, not in code, so marketing can edit without a deploy.

  5. Reverse sync worker

    Polls HubSpot lists and writes Shopify customer tags. Only built when segment-driven merchandising is actually needed.

failure modes

What breaks, and what happens when it does

Every integration fails eventually. The difference between a good one and a bad one is whether it fails safely and tells you.

  • Contact tier overage from guest checkouts

    The HubSpot bill jumps a tier a month after connecting, with no new marketing activity.

    handling

    Every guest checkout becomes a marketing contact by default. We set non-marketing contact defaults and filter one-time guest buyers at the sync boundary, so you pay for an audience you can actually mail.

  • Deals polluting the sales pipeline

    Forecasts break because 4,000 web orders sit alongside twelve real B2B opportunities.

    handling

    E-commerce orders go to a separate pipeline with their own stages, excluded from forecasting. Obvious in hindsight, routinely missed in default installs.

  • HubSpot API rate limits during backfill

    A historical import runs for days, or dies partway with half the orders present.

    handling

    Backfills use the batch endpoints with concurrency capped under the tier limit, checkpointed by cursor. Historical import runs as a separate one-off job so it never competes with live sync.

  • Duplicate contacts from email variants

    One customer appears three times and each copy has part of the order history.

    handling

    Emails are normalised before upsert and matched on the HubSpot contact id where one exists. Merge candidates are queued for review rather than auto-merged, because a wrong merge is much harder to undo than a duplicate.

  • Custom property mapping needs a higher tier

    A field that has to sync turns out to need Operations Hub Professional.

    handling

    We check field-level requirements against your tier during the audit and tell you the licence cost before build. If the tier upgrade is not worth it, the private app writes those properties directly instead.

field mapping

A real slice of the mapping

This is an abridged Order → HubSpot Deal mapping, shown so you can sanity-check it against your own system.

Order → HubSpot Deal

shopify → hubspot

  • order.namedeal.dealname

    Prefixed for scanability

  • order.total_pricedeal.amount
  • order.created_atdeal.closedate
  • financial_statusdeal.dealstage

    Mapped, not copied

  • line_item.skuline_item.hs_sku
  • customer.emailcontact.email

    Dedupe key

  • fulfillment.tracking_numberdeal.tracking_number

    Custom property

The native app covers most of this. Custom properties and the reverse write-back are where scope and licence tier get decided.

implementation

Timeline and cost

typical duration

2 to 5 weeks

included in scope

  • Native app install and full field mapping
  • Separate e-commerce pipeline and lifecycle model
  • Abandoned cart and post-purchase workflows
  • Contact tier protection and guest-checkout filtering
  • Reporting dashboards for revenue and campaign attribution
  • Team training session and documentation

what moves it up

  • Historical order and customer backfill
  • Reverse sync of segments into Shopify tags
  • B2B company-level association and tiering
  • Subscription or membership state sync
  • Service Hub ticket and order-context build-out

questions

Questions buyers actually ask

Is the native HubSpot Shopify integration good enough on its own?

For a lot of brands, yes. The native app syncs customers, orders, products, and abandoned carts with no code, and it is free with any paid HubSpot tier. You need custom work when you have to write data back to Shopify, sync a custom object such as subscription state, or backfill years of order history. Install the native app first and only pay for the gap.

Why did our HubSpot bill increase after connecting Shopify?

Because every guest checkout became a marketing contact. HubSpot prices on marketing contacts, so a store doing a few thousand orders a month can cross a tier within weeks. The fix is to default synced buyers to non-marketing and only promote them when they opt in. Set this before the first sync rather than after the invoice.

Can data flow from HubSpot back into Shopify?

Yes, but it is not part of the native app. Lifecycle stage, list membership, and lead score can be written to Shopify customer tags or metafields, which is what makes segment-based merchandising possible. It requires Operations Hub Professional or a small private app, and it is the most common reason a HubSpot project needs custom development.

Should Shopify orders become deals or custom objects?

Deals in a dedicated e-commerce pipeline for most brands, because deals get native revenue reporting and workflow support. Use custom objects when order volume is high enough that deal records become unwieldy or when your sales team needs the deal object kept clean. Either way, keep web orders out of the pipeline you forecast from.

How long does a historical import take?

Plan for days, not hours, on any store with real history. HubSpot batch limits mean a few hundred thousand orders is a multi-day job, so we run it as a separate checkpointed backfill alongside live sync. If you only need recent context, importing the last 24 months is usually cheaper and just as useful.

Do we need Shopify Plus for this integration?

No. The HubSpot integration works on any Shopify plan. Plus only matters if you also need the B2B objects, such as company-level associations for wholesale buyers. That is a separate requirement from the CRM sync itself.

shopify + hubspot

Find out if you need custom work at all

Tell us what you need HubSpot to do. If the native app covers it, we will say so. If it does not, you get a scope and a fixed price.