All docs

Connecting Shopify to Attribi

Connect your Shopify store to send paid orders and checkout starts to your ad platforms as closed-won and qualified conversions — no app-store install, no theme code.

Attribi reads two things from your Shopify store: paid orders (which become closed-won conversions carrying real revenue) and checkout starts (the mid-funnel signal that tells Google and Meta someone was close to buying). Both are pushed to your connected ad platforms so their bidding optimises on actual furniture revenue rather than clicks.

No code on your theme is required either way.


⚠️ Read this first — which path applies to you

On 1 January 2026 Shopify stopped allowing new custom apps to be created from the Shopify admin. Existing custom apps keep working, but the Settings → Apps → Develop apps route is no longer available for new ones.

Your situationWhat to do
You already have an Attribi custom app installedThe steps below still apply — nothing changes for you.
You are connecting Shopify for the first timeDo not follow the steps below — you will not find the screen they describe. Contact us and we will send you a one-click install link instead.

We are replacing this entire flow with a single "Connect Shopify" button, so that connecting takes one click and you never have to create anything or copy a secret. Until that ships, first-time connections are handled by us directly — it takes a couple of minutes and needs nothing from your developers.


What you'll need

(Applies only to stores with an existing custom app — see the notice above.)

A Shopify account with permission to create apps (Store owner, or staff with the "Apps and channels" permission).

Step 1 — Create a custom app in Shopify

  1. In your Shopify admin, go to Settings → Apps and sales channels → Develop apps. (If you see a "Allow custom app development" prompt, accept it — this is Shopify's one-time confirmation for the store.)
  2. Click Create an app, name it Attribi, and create it.
  3. Open Configuration → Admin API integration → Configure, and grant exactly one scope:
    • read_orders — described in Shopify's list as "View or manage orders, transactions, fulfillments, and abandoned checkouts" Abandoned checkouts are included in that scope, which is why there is nothing separate to tick for them. (If you go looking for a read_checkouts scope you will not find one — Shopify folded it into read_orders.) Attribi never needs write access to your store. If a scope list asks for more, you're on the wrong screen — this one is all we use.
  4. Save, then click Install app.

Step 2 — Copy the two credentials

From the app's API credentials tab:

FieldWhere it isLooks like
Admin API access tokenRevealed once, right after installshpat_…
API secret keySame page, under "Client credentials"a long hex string

⚠️ The access token is shown only once. If you navigate away before copying it, you'll need to uninstall and reinstall the app to get a new one.

Step 3 — Connect in Attribi

  1. Go to Connections in Attribi and find Shopify under Data Sources.
  2. Click Connect and paste three values:
    • Shop domainyour-store.myshopify.com (your permanent Shopify domain, not your custom storefront domain like www.yourstore.com)
    • Admin API access token
    • API secret key
  3. Save.

Attribi validates the token, then registers four webhook subscriptions on your store (orders/paid, checkouts/create, checkouts/update, app/uninstalled). The tile shows how many were registered. Reconnecting is safe — we detect existing subscriptions instead of adding duplicates.

checkouts/create and checkouts/update both feed the same Qualified signal below. Shopify fires checkouts/create the instant a checkout starts — usually before the shopper has typed an email — so on its own it rarely carries anything we can match. The email typically arrives moments later on a checkouts/update delivery, which is why we subscribe to both.


What happens after connecting

In your storeIn AttribiSent to your ad platforms
Shopper starts checkout (with an email)Lead marked QualifiedQualified conversion, no value
Order is paidLead marked Closed WonPurchase conversion with the order total and currency

Matching is by email in this version. A checkout or order without an email address can't be tied to a shopper, so it's skipped rather than guessed at.

Two honest limitations

  • Repeat purchases. Each order fires its own conversion to your ad platforms with its own value — that part is correct. But a customer's lead record in Attribi shows the most recent order value, not a lifetime total. Per-order history is stored and will surface in reporting.
  • Checkout pages aren't tracked by the Attribi script. Shopify doesn't allow custom scripts on checkout for most plans. That's fine — orders reach us by webhook from Shopify's servers, so we don't need a script there. It does mean the on-site journey ends at checkout entry.

Do I still need the tracking script?

Yes, and they do different jobs:

  • The Attribi script on your storefront captures the journey — which ad, search, or post brought the shopper in, across multiple visits.
  • The Shopify connection captures the outcome — what they bought and for how much.

Without the script, we know an order happened but not which ad earned it. Without the connection, we know the journey but have to be told the revenue manually. Together they close the loop. See the install guidance on your Connections page for the script.


Disconnecting

Click Disconnect on the Shopify tile. Attribi removes its webhook subscriptions from your store, then drops the connection. You can also uninstall the custom app in Shopify directly — Attribi notices and marks the connection as needing attention rather than silently reporting healthy.

Troubleshooting

What you seeWhat it means
"Invalid API key or access token"The token was mistyped, or it was rotated/reinstalled in Shopify. Reinstall the app and paste the fresh token.
"Could not reach the store"The shop domain is wrong (use the .myshopify.com one) or the store is password-protected/frozen.
Tile says App uninstalled in ShopifyThe custom app was removed on the Shopify side. Reconnect to resume — no data is lost, but nothing is ingesting meanwhile.
Tile says Connection setup did not finishA rare case where webhooks registered but credentials didn't save. Disconnect and reconnect; the leftover subscriptions are cleaned up.
Orders arrive but no conversions in Google/MetaCheck those platforms are connected on the same Connections page and have a conversion action mapped for Closed Won.

Still stuck? Email hello@attribi.com with your shop domain and roughly when the order was placed.


Need help? Contact us or sign in to your connections page for account-specific tooltips.