Integration

Connect Shopify to HubSpot

Give HubSpot the full picture of every Shopify customer: contacts with real order history, orders as a custom object with line items and revenue, and abandoned checkouts that a HubSpot workflow can act on. Marketing consent from checkout is carried, never assumed. Every sync is a run you can inspect step by step.
Mostly Shopify to HubSpot
Direction
As Shopify sends the webhook
Latency
orders/create, customers/update, checkouts/create
Common trigger
Build the flow, then map to a custom object
Setup

Why teams connect Shopify and HubSpot

Shopify has the orders. HubSpot runs the marketing and, for many brands, a B2B or wholesale sales motion. Without a real link, HubSpot contacts have no order history, "high-value customer" is a guess, and the sales team quoting a wholesale deal cannot see the buyer's retail spend.

  • Shopify customers become HubSpot contacts with lifetime spend, order count, first and last order date, and average order value as properties
  • Orders land as a custom object associated to the contact, each with line items, discounts, and net revenue, so reports and lists work on real data
  • An abandoned checkout creates or updates a contact with the cart contents as properties, which a HubSpot recovery workflow can use as its enrollment trigger
  • Checkout marketing consent is written to a consent property on the contact, so your HubSpot marketing rules can keep an opted-out buyer out of email

Worked example

The order-to-CRM flow most teams turn on first.

A paid Shopify order updates the HubSpot contact and creates an order object

Started by Shopify's orders/paid webhook, registered by Neblex, and safe to repeat on the Shopify order ID.

  1. Trigger: a Webhook trigger with Auto Register With Shopify for orders/paid, carrying the customer, line items, totals, discounts, and customer.email_marketing_consent.
  2. Upsert contact: HubSpot Batch upsert contact keyed on lowercased email, setting the name and a consent property from the checkout consent state (never a silent opt-in).
  3. Idempotency: look for a HubSpot Shopify Order custom object record with this order ID. If found, update it; otherwise create it.
  4. Order object: write the order object with order number, processed date, gross and net totals, discount, currency, and financial status, associated to the contact.
  5. Line items: write each line as a line-item record or a JSON property, with SKU, quantity, and price.
  6. Recompute properties: update the contact's total_spent, order_count, aov, first_order_date, and last_order_date from all order objects, and set a customer_tier from a threshold.

Field mapping

The starting map for the Shopify order and customer to HubSpot.

ShopifyHubSpotNotes
order.idshopify_order.order_id (unique property)Idempotency key for the order object. Checked before create.
customer.email (lowercased)contact.emailMatch key for the contact. Never overwrites an existing HubSpot email.
customer.email_marketing_consent.statecontact consent propertyConsent gotcha: subscribed maps to opted in; anything else leaves the contact non-marketing. An order alone never opts a contact in.
order.current_total_priceshopify_order.net_total (number)Type gotcha: Shopify sends a decimal string. Parse to a HubSpot number property, carry order.currency separately.
order.nameshopify_order.order_nameThe "#1001" label for readable reporting.
sum of order objectscontact.total_spent, contact.order_countRecomputed on every order so lists and workflows act on current values.
order.tagsshopify_order.tagsOverride: a specific tag (for example wholesale) can be promoted to a contact property that routes the record to a sales pipeline.
checkout.abandoned_checkout_urlcontact.abandoned_cart_urlOnly when the checkout has an email and passed the recovery delay. A HubSpot workflow enrolls on this property.

What syncs, each direction

  • Customers and spend. Customers become contacts with lifetime spend, order count, AOV, and tier as properties. (Shopify to HubSpot)
  • Orders. Each order lands as a custom object with line items, discounts, net revenue, and financial status, associated to the contact. (Shopify to HubSpot)
  • Abandoned checkouts. An abandoned checkout with an email creates or updates a contact, and the cart property starts your HubSpot recovery workflow. (Shopify to HubSpot)
  • Segments back (optional). A HubSpot list membership such as "VIP" or "win-back" can write a Shopify customer tag for use in Shopify marketing and discounts. (HubSpot to Shopify)

Governance and audit

The same controls apply to this sync as to every other Neblex workload.

  • Run history. Every sync records the Shopify object, the contact and order object it resolved to, and the properties written. A failed run can be replayed from the step that failed.
  • Consent handling. The flow reads the checkout consent state on every contact write and never treats an order as consent. Keep the flow in a project where only trusted editors can change it.
  • Scoped access. Shopify uses a custom app token scoped to read orders, customers, and checkouts. HubSpot uses a private app scoped to contacts and the custom object.
  • Environments. Build against a Shopify development store and a HubSpot test account, then promote the same flow to production.

Frequently asked questions

How is this different from HubSpot's native Shopify integration?

HubSpot's built-in Shopify app is a solid starting point and covers contacts, deals, and products for a straightforward store. Neblex fits when you want orders as a custom object at the grain you choose, computed customer properties on your rules, abandoned-checkout logic, consent handled explicitly, and the same run history as your other integrations.

Orders as deals or as a custom object?

Usually a custom object, because ecommerce orders are not a sales pipeline. A custom object keeps deal reporting clean and still lets you build lists and workflows on order data. A B2B or wholesale motion can still create a deal.

Does it respect the checkout marketing consent?

Yes. Only an explicit opt-in at checkout sets the consent property to opted in. Placing an order does not opt a contact in.

Can it backfill order history?

Yes. A one-time flow pages through Shopify orders at setup, so existing contacts get their full spend and order history, not just orders from the day the integration went live.

What about refunds?

Order-update and refund webhooks, registered the same way, adjust the order object's net revenue and financial status, and the contact's lifetime spend is recomputed, so the numbers stay honest.

Can HubSpot segments drive Shopify?

Yes. A list membership can write a Shopify customer tag, which Shopify marketing, automations, and discount rules can then use.

Connectors used

Shopify

E-commerce

Operations
367
Operations with typed output
100%
Change triggers
Poll or inbound webhook
Signs in with
Connection fields
Connector reference

HubSpot

CRM & Sales

Operations
336
Operations with typed output
81.5%
Change triggers
46 (poll)
Signs in with
API token
Connector reference
See it on your data

Bring one real integration

We will build it with you against your own systems, with the run log open.