Shopify
A Shopify store connects the same way any site without a plugin does — the storefront loads one script from the platform — with an OAuth install in front of it so you do not have to edit your theme, and so we are told when you remove the app.
What you get, and what you do not
Everything that is measured in the browser works exactly as it does everywhere else: errors, session recordings, pageviews, clicks, rage and dead clicks, scroll depth, heatmaps and form capture.
What a WordPress site gets and a Shopify store does not is server-side enrichment. The WordPress plugin runs on the shop's own server, so it can attach the logged-in user id, the WooCommerce cart and an IP address the server vouches for. Nothing of ours runs on a Shopify server, so none of that is available — and inferring it from the browser would be a guess presented as a fact.
Installing
The install starts in StorePilot, not in Shopify.
- Add the store as a site in StorePilot, if it is not there already.
- Settings → Connection → Connect Shopify, and enter the
yourstore.myshopify.comaddress. - Approve the permission screen Shopify shows you.
You end up back on the site's Settings page with the store connected and the script installed.
If you find the app in Shopify's own listing instead, you land on StorePilot with the store name carried across and are asked to sign in and pick a site. That extra step is deliberate: a callback has no trustworthy way to say which StorePilot site a store belongs to, and accepting one would let anybody attach their store to somebody else's account.
The one permission we ask for
write_script_tags. Not customers, not orders, not products.
Everything this product measures is measured in the visitor's browser by the same collector every other site runs, so no data scope is needed — and an app that holds customer records it never reads is an app that will one day be breached for customer records it never read.
Uninstalling
Removing the app from Shopify does three things:
- Shopify revokes our access token immediately, and we clear our copy when the
app/uninstallednotice arrives. - Your site and its data stay. Re-installing finds the same site and its history.
- Shopify sends a
shop/redactnotice 48 hours later, and that deletes the site and everything collected for it, permanently.
If you want the data gone sooner, delete the site in StorePilot. If you want to keep it, export before the 48 hours are up — the CSV exports are on each list page and the per-visitor export is on each visitor.
Privacy requests from Shopify
Shopify forwards a merchant's GDPR requests to every app. Here is what each one does:
customers/data_request— Shopify asks the app to give the MERCHANT what it holds about a shopper. There is no endpoint to send it to; it is a request for you to be able to answer. You already can: Dashboard → Visitors → Export data produces the whole record as one file. The request is logged on our side so support can confirm it arrived.customers/redact— deletes any lead stored under that email address for the store. We hold no Shopify customer id, because we never asked for one, so an email is the only thing that can be matched. Visitor records identified only by a browser id are not matched automatically and can be erased from the visitor page.shop/redact— deletes the site and all of its data.
Known limits
Checkout on Shopify Plus. ScriptTags do not run on Plus checkout pages. Everything before checkout is unaffected; recordings and clicks simply stop at the checkout boundary on those stores.
Custom domains. The store is identified by its myshopify.com address, which is what
Shopify's API answers on. Your public domain is what shoppers see and what the collector's
Origin check matches — both are held, and they are different fields for that reason. Add any
additional storefront domains under Allowed origins in Settings.