Shopify — the base integration

How Ordinary connects to your Shopify store, what data flows in, and how to verify the connection is healthy.

Ordinary Written by The Ordinary Team · Updated
On this page

Shopify is the one integration that’s connected at install and stays connected. Everything else in Ordinary depends on it.

Shopify integration card showing Connected. Demo data.

What’s connected

At install, Ordinary requests these permissions from your Shopify admin:

  • Read products — product catalog, variants, and per-variant “Cost per item” values.
  • Read orders, read all orders — orders, including your full order history.
  • Read customers — customer list.
  • Read discounts — discount codes used on orders.
  • Read inventory — stock levels for your products.
  • Read fulfillments — fulfillment status and tracking on orders.
  • Read reports — Shopify’s analytics (for your 12-month GMV).
  • Read shipping — your store’s delivery profiles so we can surface a representative shipping rate in tools like the Offer Calculator.
  • Read customer events, write pixels — the first-party pixel.
  • Read themes, write themes — used only to place and remove the changes for A/B tests you run in Ordinary. Ordinary doesn’t change your theme otherwise.

Once approved, Ordinary stores an encrypted access token for your store and starts syncing.

What data flows in

Constant, low-latency, webhook-based:

  • Orders — created, updated, paid, fulfilled and cancelled. Arrives within seconds of checkout completion.
  • Refunds — refunds you issue in Shopify, as they’re created.
  • Carts and checkouts — used for abandoned-cart tracking and the funnel’s “Checkout” step.
  • Customers — created, updated and deleted.
  • Products — created, updated and deleted. Includes per-variant “Cost per item” (product cost / COGS) when you’ve set it in Shopify — used to auto-fill Manufacturing Cost in the Offer Calculator.
  • App subscription — your Ordinary plan’s billing status.
  • Privacy requests — customer data requests and erasure requests from Shopify, handled automatically.

Daily or scheduled:

  • GMV snapshot — via Shopify’s analytics API, refreshed once per day.
  • Inventory — hourly pull of inventory levels.
  • Shipping rates — pulled on demand from your default delivery profile (the first active flat-rate in your closest shipping zone). Used as a rough pointer for the Offer Calculator’s “Last Mile Shipping Cost” field; falls back to the median of recent orders’ shipping amounts when the profile has no flat rate (carrier- calculated stores).
  • Historical backfill — on initial install, we pull your full order history from Shopify automatically (not just recent data). For stores with years of history or tens of thousands of orders, this completes within minutes to an hour depending on volume. The backfill runs in the background; your dashboard may show partial data for a short time, then fills in as the sync progresses. Historical customers and products are pulled alongside.
  • Ongoing revenue reconciliation — once data is loaded, an hourly reconciliation check compares our revenue totals to Shopify’s Sales report to guarantee match-to-the-cent accuracy. See Revenue matches Shopify exactly.

Sync status

Per-integration sync progress lives at Settings → Sync Status — when each integration last synced and any active backfill jobs with progress. While a backfill is running, an in-app banner at the top of every page shows the active job(s) and links to the sync-status board for details. The banner flashes green briefly when the job completes; you don’t need to refresh the page to know your data is ready.

Connection status on Settings → Shopify

The Shopify card shows:

  • Connected (green) — Ordinary’s access to your store is working.
  • Reconnect required (amber) — Shopify rejected Ordinary’s access. Click Reconnect with Shopify and reapprove the permissions.

Which domains count

A Shopify store answers on several hostnames, and Ordinary keeps all of them:

  • Store domain — yourbrand.myshopify.com. Always present, fixed, used as the key for webhook routing and API calls.
  • Custom domain — yourbrand.com. Your primary storefront domain, if you have one. Used to display your brand nicely across the UI.
  • Storefront domains — every domain connected to your store in Shopify: the primary domain, its www form, any regional or second domain, and the customer-accounts address. Visitors on any of these hosts count in your A/B tests and page reports.

All three are shown on Settings → Shopify. They are read-only in Ordinary and refresh automatically within an hour of a change; manage them in Shopify admin → Settings → Domains.

Troubleshooting

  • Pixel Disconnected — see Pixel says “Disconnected”.
  • Orders not showing — see Orders not showing up.
  • Reconnect required — click Reconnect with Shopify on Settings → Shopify and reapprove the permissions. Usually means Shopify has invalidated Ordinary’s access (app reinstalled, permissions changed, etc.).
  • “This store is already connected to another Ordinary organisation” — each Shopify store can belong to one Ordinary organisation at a time. If you connect from a second organisation, Ordinary refuses, so the existing organisation’s reports and tracking keep working. To work on the store, ask an admin of the organisation that holds it to invite you. To move the store to a different organisation, contact support.

Did this answer your question?

Thanks for your feedback! 🙌

Related articles