Add my site

Shopify app

One install does both halves of the job: a storefront pixel that records visits, and order sync from Shopify's own records. No theme editing, no manual tag.

Takes about two minutes

What the app does

  • Installs the pixel on your storefront and checkout automatically. It subscribes to pageviews, checkout starts and checkout completions. Product views and add-to-cart events are not currently collected by this pixel.
  • Reconciles payments from Shopify's transaction records. Successful sales and captures add collected revenue; successful refund transactions reduce net revenue. Creating an unpaid order or reaching a checkout-completion page does not confirm payment.

Install it

  • Open your site's settings in the dashboard and find the Shopify section.
  • Enter your store's .myshopify.com address, like acme.myshopify.com.
  • Approve the app in the Shopify admin screen that opens.

That is the whole install. The connected card in settings shows the store, when it connected, and whether the pixel is active.

Complete the domain ownership check for analytics access. Check the pixel with your store's customer privacy settings and consent flow before relying on its visitor coverage.

How orders are matched

During checkout the pixel records the checkout's own token. When the order arrives from Shopify, the matching token marries the order to the visit journey that produced it, and the order inherits that journey's standing credit, exactly as described in how attribution works. Orders are deduplicated by their Shopify order id. A paid order whose buyer had no recorded journey still counts, credited from the landing page and referrer Shopify recorded for the order.

Until a successful sale or capture is confirmed, a checkout completion is stored as the goal shopify_checkout_completed, without order revenue. Payment, update, cancellation and refund notifications trigger a fresh transaction read. Partial captures contribute only the amount collected. Cancelling an order does not itself prove money was refunded.

The reconciliation refuses incomplete transaction history rather than guessing a total. Money summaries use USD only and apply no exchange rates; order counts include other currencies, whose amounts are shown separately in the reporting scope.

Import earlier orders

Historical orders need a separate backfill request. A site owner with an API key granting settings:write can call:

curl -X POST https://app.datastated.com/api/shopify/acme.com/backfill \
  -H "Authorization: Bearer dsk_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

The default window is the past 30 days. To choose a window, send from and to as UTC ISO timestamps; it must end at or before now and span no more than 60 days. The window selects orders by creation time, with from included and to excluded. Access to orders older than 60 days requires Shopify-approved read_all_orders access and a reconnect.

Each response handles up to five orders and returns data.from, data.to, data.scanned, data.reconciled, data.ignored, data.hasNextPage and data.after. While hasNextPage is true, repeat the request with the same returned from and to and the new after cursor. The import is complete only when hasNextPage is false. A reconciled order may still be unpaid; this count is not a payment count.

Backfill uses the same transaction reconciliation and Shopify order ids as webhook delivery. Test orders are ignored, and the site's ingestion limits still apply. Backfill does not reconstruct browser visits that were never recorded.

What is read, what is not

We read order and transaction ids, payment state, amounts, currency, timestamps and attribution fields. The payment query does not request customer names or contact details. Uninstalling stops future collection; retained history remains subject to the site's retention policy.

Questions? Email us at hello@datastated.com.