We recently just went live with our new eCommerce site hosted on Shopify. We are currently using the HubSpots Native Shopify Data Sync integration to push over customers and orders into HubSpot. The main reason for having this data sync into our HubSpot database is to be able to report on order revenue and be able to track that back to the source the drove the conversion.
For all newly created contacts we are only seeing the source come through as “Offline Integration” versus the actual source to which the customer came from (Direct Traffic, Paid Search, Paid Social, etc).
We have the HubSpot Pixels loaded onto the Shopifys site (As well as our regular site), etc. but the attribution is being wiped through integration between shopify and hubspot because rather than being created directly in hubspot with that attribution based on the pixel placed, its wiping and noting the source as attribution.
I am wondering if there is anyone else who has had a similar issue to what we are expieriencing and if you were able to come up with a solution. So far we have reached out to both Shopify and HubSpots support and have not gotten too far within the past few weeks.
Thank you!
Hi @Breeziecee
The issue is that the integration (like many) uses the create contact api end point rather than the form submit end point. The form submit end point allows the passing of the HubSpot cookie at the same time as the contact records so that the new contact gets matched up with the analytical history from the cookie.
I’m not sure there is actually an off-the-shelf solution to this.
We have the exact same issue. Our reporting and ROI analysis are now unusable, and support confirmed there is no workaround. Can we get this fixed please?
Hi @Breeziecee , I feel your pain. What you’re seeing is expected with Data Sync.
The Shopify app creates contacts through the CRM objects API, so HubSpot treats the first touch as offline integration.
Pixel history is not attached, which is why Original source shows Offline > Integration instead of Paid Search, Paid Social, etc. HubSpot sets traffic source only when there is a browser cookie at creation time or a true form submission that passes the cookie along (Understand Original and Latest traffic source properties )
The clean fix is to let HubSpot “meet” the user in the browser before or at the moment the contact is created in HubSpot. Two common patterns work. Use a HubSpot form on your storefront for account, newsletter, or checkout email capture so the cookie and submission land together; or submit to a hidden HubSpot form from your theme when you already have the visitor’s email, passing the hubspotutk from the cookie.
Both rely on the Forms API submit endpoint, which is the supported way to attach analytics to a new contact record created server side or via JS. The native Shopify Data Sync will still sync orders, but attribution will be correct because the contact already exists with web history.
(Accounts Dashboard | HubSpot )
One detail I’d confirm: are most of these first-time contacts being created only after checkout in Shopify, with no HubSpot form touch earlier?
If yes, start capturing emails earlier with a HubSpot form on PDP, cart, or account pages so attribution is established before Data Sync fires. You can also backfill custom fields from Shopify UTMs, but changing Original source later is brittle. Where native connectors stop short, Stacksync fills the gap with real-time, bidirectional sync so your workflows and reports stay trustworthy.
Hope this helps.