{
  "slug": "shopify",
  "url": "https://apps.sectorgrowth.com/integrations/shopify/",
  "name": "Shopify",
  "vendor": "Shopify",
  "aliases": [
    "Shopify Plus",
    "Shopify Admin API",
    "Shopify B2B"
  ],
  "website": "https://www.shopify.com/",
  "category": {
    "slug": "retail-pos-and-ecommerce",
    "name": "Retail, POS and e-commerce",
    "url": "https://apps.sectorgrowth.com/categories/retail-pos-and-ecommerce/"
  },
  "summary": "Shopify holds the order, the shopper and the catalogue, and HubSpot publishes the app that carries all three into a portal at no cost.",
  "answer": "Yes. HubSpot publishes the Shopify app itself, listed in the HubSpot App Marketplace as of September 2026, and for a single store it is the right first move: 8 to 24 hours of setup and mapping, not a build. It stops being enough at a second store, at business to business catalogues, or when order data has to land on a custom object rather than a deal.",
  "nativeApp": {
    "status": "hubspot-built",
    "name": "Shopify",
    "developer": "HubSpot",
    "verifiedAt": "2026-09-22"
  },
  "api": {
    "style": "graphql",
    "auth": "oauth2",
    "webhooks": "yes",
    "changedSince": "yes",
    "sandbox": "yes",
    "rateLimit": "Calculated query cost against a point bucket, with the bucket size and restore rate varying by API and by plan",
    "docsUrl": "https://shopify.dev/docs/api/admin-graphql"
  },
  "objects": [
    {
      "source": "Customer",
      "hubspot": "contact",
      "direction": "to_hubspot",
      "key": "Shopify customer id held in a custom HubSpot property",
      "notes": "Email is a display field. A guest checkout can share an email with an account."
    },
    {
      "source": "Order",
      "hubspot": "deal",
      "direction": "to_hubspot",
      "key": "Order id",
      "notes": "A custom object suits stores where an order is not a sales opportunity."
    },
    {
      "source": "Line item",
      "hubspot": "line_item",
      "direction": "to_hubspot",
      "key": "Order id plus line item id"
    },
    {
      "source": "Product variant",
      "hubspot": "product",
      "direction": "to_hubspot",
      "key": "Variant id, not the stock keeping unit",
      "notes": "Merchants reuse and retype stock keeping units. The variant id is stable."
    },
    {
      "source": "Company",
      "hubspot": "company",
      "direction": "to_hubspot",
      "key": "Company id, with contacts associated through their company contact records",
      "notes": "Business to business only, and outside what the HubSpot app carries."
    }
  ],
  "approaches": [
    {
      "kind": "native",
      "fit": "recommended",
      "why": "The HubSpot built app connects a store with no code, carries customers, orders and products, and is the honest first answer for a team that wants commerce data in the portal this week."
    },
    {
      "kind": "custom",
      "fit": "possible",
      "why": "A keyed service earns its cost at a second storefront, at business to business companies and locations, or when orders belong on a custom object with fields the app's mapping cannot carry. Budget 40 to 60 hours for that fallback, on top of the app."
    },
    {
      "kind": "ipaas",
      "fit": "avoid",
      "why": "A per task automation platform bills every order as a run, so the cost climbs with volume while the coverage stays behind what the free app already does."
    }
  ],
  "effort": {
    "discoveryHours": [
      4,
      8
    ],
    "buildHours": [
      8,
      24
    ],
    "buildBand": "8 to 24 hours",
    "typicalElapsed": "1 to 2 weeks"
  },
  "pattern": "webhook-queue",
  "faqs": [
    {
      "q": "Is there an official HubSpot app for Shopify?",
      "a": "Yes. HubSpot publishes the Shopify app itself, and several third party connectors sit alongside it in the App Marketplace. The first party app is free, connects with an authorization given from inside HubSpot, and needs an administrator on both sides to install it."
    },
    {
      "q": "When does a Shopify store outgrow the HubSpot app?",
      "a": "At the second storefront, at business to business, and at custom objects. Merchants running separate stores per region or per brand need one customer identity across all of them. Companies, company locations and catalogue pricing sit outside the app's mapping. So does any design where an order should not be a deal."
    },
    {
      "q": "Can one HubSpot portal receive data from several Shopify stores?",
      "a": "Yes, with a build. Each store authorizes separately and each has its own customer and order identifiers, so the integration has to carry the store along with the record identifier and decide what a shared email means. A shopper who buys from two of your storefronts is one contact and two order histories."
    },
    {
      "q": "Does the Shopify API support business to business companies?",
      "a": "Yes. The Admin API documents a Company object representing a business that purchases from the shop, with contacts who order on its behalf and locations that carry their own billing and shipping addresses. It needs the customer or company read scope and a shop with business to business enabled."
    },
    {
      "q": "Can you rely on Shopify webhooks alone to keep HubSpot current?",
      "a": "No, and Shopify says so. Its own documentation states that webhook delivery is not always guaranteed and that an app should not rely on receiving data from webhooks, recommending a reconciliation job that periodically refetches. We build both: webhooks for speed, a scheduled sweep for truth."
    },
    {
      "q": "How fresh is Shopify data once it reaches HubSpot?",
      "a": "Plan for minutes, not seconds. HubSpot does not publish a sync cadence for its Shopify app, so the safe assumption is that an order appears within minutes of being placed. A custom webhook build is faster, and it still needs the scheduled sweep behind it, because Shopify states that webhook delivery is not always guaranteed."
    },
    {
      "q": "What should a Shopify to HubSpot sync key on?",
      "a": "Platform identifiers, stored in custom HubSpot properties. Customers key on the Shopify customer id rather than email, because guest checkouts and account merges make email unreliable. Products key on the variant id rather than the stock keeping unit, because merchants reuse and retype stock keeping units across seasons."
    },
    {
      "q": "What does a Shopify to HubSpot connection take to set up?",
      "a": "Connecting the HubSpot built app is configuration rather than code: 4 to 8 hours of discovery and 8 to 24 hours of setup and mapping. Extending it with a keyed service for a second store or business to business data is a separate 40 to 60 hours. Both are rehearsed on a Shopify dev store and a HubSpot sandbox portal first."
    }
  ],
  "sections": [
    {
      "depth": 2,
      "text": "Why teams connect Shopify to HubSpot",
      "anchor": "#why-teams-connect-shopify-to-hubspot",
      "url": "https://apps.sectorgrowth.com/integrations/shopify/#why-teams-connect-shopify-to-hubspot"
    },
    {
      "depth": 2,
      "text": "What syncs",
      "anchor": "#what-syncs",
      "url": "https://apps.sectorgrowth.com/integrations/shopify/#what-syncs"
    },
    {
      "depth": 2,
      "text": "Architecture",
      "anchor": "#architecture",
      "url": "https://apps.sectorgrowth.com/integrations/shopify/#architecture"
    },
    {
      "depth": 2,
      "text": "Three ways to connect",
      "anchor": "#three-ways-to-connect",
      "url": "https://apps.sectorgrowth.com/integrations/shopify/#three-ways-to-connect"
    },
    {
      "depth": 2,
      "text": "What breaks and how we prevent it",
      "anchor": "#what-breaks-and-how-we-prevent-it",
      "url": "https://apps.sectorgrowth.com/integrations/shopify/#what-breaks-and-how-we-prevent-it"
    },
    {
      "depth": 3,
      "text": "Missed webhooks",
      "anchor": "#missed-webhooks",
      "url": "https://apps.sectorgrowth.com/integrations/shopify/#missed-webhooks"
    },
    {
      "depth": 3,
      "text": "Guest checkouts and duplicate contacts",
      "anchor": "#guest-checkouts-and-duplicate-contacts",
      "url": "https://apps.sectorgrowth.com/integrations/shopify/#guest-checkouts-and-duplicate-contacts"
    },
    {
      "depth": 3,
      "text": "Stock keeping units reused next season",
      "anchor": "#stock-keeping-units-reused-next-season",
      "url": "https://apps.sectorgrowth.com/integrations/shopify/#stock-keeping-units-reused-next-season"
    },
    {
      "depth": 3,
      "text": "One shopper in two storefronts",
      "anchor": "#one-shopper-in-two-storefronts",
      "url": "https://apps.sectorgrowth.com/integrations/shopify/#one-shopper-in-two-storefronts"
    },
    {
      "depth": 2,
      "text": "Our approach",
      "anchor": "#our-approach",
      "url": "https://apps.sectorgrowth.com/integrations/shopify/#our-approach"
    }
  ],
  "caseStudies": [],
  "guides": [
    "https://apps.sectorgrowth.com/guides/choose-a-hubspot-integration-approach/"
  ],
  "builtBySectorGrowth": false,
  "status": "published",
  "verifiedAt": "2026-09-22",
  "updatedAt": "2026-09-25",
  "authors": [
    {
      "name": "Prash",
      "role": "Lead of Technical Integrations and AI Solutions"
    }
  ],
  "sources": [
    {
      "title": "GraphQL Admin API reference",
      "url": "https://shopify.dev/docs/api/admin-graphql"
    },
    {
      "title": "customers - GraphQL Admin",
      "url": "https://shopify.dev/docs/api/admin-graphql/latest/queries/customers"
    },
    {
      "title": "orders - GraphQL Admin",
      "url": "https://shopify.dev/docs/api/admin-graphql/latest/queries/orders"
    },
    {
      "title": "Company - GraphQL Admin",
      "url": "https://shopify.dev/docs/api/admin-graphql/latest/objects/Company"
    },
    {
      "title": "About webhooks",
      "url": "https://shopify.dev/docs/apps/build/webhooks"
    },
    {
      "title": "Shopify API limits",
      "url": "https://shopify.dev/docs/api/usage/limits"
    },
    {
      "title": "Dev stores",
      "url": "https://shopify.dev/docs/api/development-stores"
    }
  ]
}