Connect Shopify to HubSpot
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.
- Trigger: a Webhook trigger with Auto Register With Shopify for
orders/paid, carrying the customer, line items, totals, discounts, andcustomer.email_marketing_consent. - Upsert contact: HubSpot
Batch upsert contactkeyed on lowercased email, setting the name and a consent property from the checkout consent state (never a silent opt-in). - Idempotency: look for a HubSpot
Shopify Ordercustom object record with this order ID. If found, update it; otherwise create it. - Order object: write the order object with order number, processed date, gross and net totals, discount, currency, and financial status, associated to the contact.
- Line items: write each line as a line-item record or a JSON property, with SKU, quantity, and price.
- Recompute properties: update the contact's
total_spent,order_count,aov,first_order_date, andlast_order_datefrom all order objects, and set acustomer_tierfrom a threshold.
Field mapping
The starting map for the Shopify order and customer to HubSpot.
| Shopify | HubSpot | Notes |
|---|---|---|
order.id | shopify_order.order_id (unique property) | Idempotency key for the order object. Checked before create. |
customer.email (lowercased) | contact.email | Match key for the contact. Never overwrites an existing HubSpot email. |
customer.email_marketing_consent.state | contact consent property | Consent gotcha: subscribed maps to opted in; anything else leaves the contact non-marketing. An order alone never opts a contact in. |
order.current_total_price | shopify_order.net_total (number) | Type gotcha: Shopify sends a decimal string. Parse to a HubSpot number property, carry order.currency separately. |
order.name | shopify_order.order_name | The "#1001" label for readable reporting. |
| sum of order objects | contact.total_spent, contact.order_count | Recomputed on every order so lists and workflows act on current values. |
order.tags | shopify_order.tags | Override: a specific tag (for example wholesale) can be promoted to a contact property that routes the record to a sales pipeline. |
checkout.abandoned_checkout_url | contact.abandoned_cart_url | Only 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
HubSpot
CRM & Sales
- Operations
- 336
- Operations with typed output
- 81.5%
- Change triggers
- 46 (poll)
- Signs in with
- API token
Bring one real integration
We will build it with you against your own systems, with the run log open.