This covers the Shopify half only. For the whole setup — Merchant Center, Google Ads, conversion tracking and your first Priority Funnel — start with the getting started guide, which has a video walkthrough and links to every console you need.
Spagify supports two ways to connect your Shopify store. Pick the one that matches how you signed up:
| You signed up via… | Use this flow |
|---|---|
| Shopify App Store (found Spagify on Shopify) | Flow A — App Store install |
| Spagify pricing page (paid with a credit card via Stripe) | Flow B — Customer-managed custom app |
| Have a legacy custom app from before Jan 1, 2026 | Flow C — Legacy custom app (pre-2026) |
Both current flows give you the same product — identical sync, identical webhooks, identical automation. The differences are how you install and how you're billed:
You will need:
.myshopify.com domain — e.g. acme-store.myshopify.com. This is the
internal domain, not your customer-facing .com domain. If you're not
sure what yours is: go to your Shopify admin, look at the URL bar — it's
the string before /admin.The fastest path. One-click install and Shopify handles billing.
Alternatively, if you already have a Spagify onboarding link from us, just click it — it takes you straight to step 2.
.myshopify.com domain and sign in.Shopify shows a permissions screen listing what Spagify needs access to:
Note: We do not request access to customer data (names, emails, addresses). We only see the anonymous Shopify customer ID that comes on orders — enough for attribution, not enough to identify a person.
Click Install app.
Shopify will show the Spagify pricing plan and ask you to approve the charge.
Charges appear on your regular Shopify invoice — no separate credit card needed.
Shopify redirects you to Spagify's onboarding wizard.
You're done. Skip to What's next.
Use this flow if you paid via Stripe. You'll create a Shopify custom app in your own Dev Dashboard, install it on your store, then hand Spagify two credentials from that app: your Client ID and Client secret. Spagify never sees a permanent Admin API token — it exchanges your credentials with Shopify for a short-lived (~24h) access token whenever it needs one, and refreshes automatically.
This takes ~10 minutes of Dev Dashboard clicks. Only the store Owner (or a staff member with app-development permissions) can complete it — Shopify collaborators cannot access the Dev Dashboard.
If you'd rather do this from Settings later, that's fine — go to Settings → Integrations → Shopify → Connect with Custom App. The same walkthrough opens there in a panel on the right. Clicking outside the panel will not close it, so coming back from Shopify cannot lose what you have already pasted; Cancel and the X ask before discarding it.
https://admin.shopify.com/store/your-store.Note: As of January 1, 2026, Shopify no longer lets merchants create legacy custom apps. The Dev Dashboard is the only supported path — ignore the "Build legacy custom apps" section on the App development page.
You'll land on the Dev Dashboard's Apps page. If this is your first app, the list will be empty.
Spagify (or any label you'll recognize
later; this is just for your reference).You'll land directly in the Dev Dashboard for the new app, with the Versions tab auto-selected and a blank first-version config form open on the right. This is the form Step 5 configures.
The left sidebar shows Monitoring, Logs, Versions, and Settings — there is no "Overview" or "Configuration" tab in the modern Dev Dashboard.
You'll be in the Create version form — the modern Dev Dashboard single-page layout (not the legacy Custom App admin form with separate tabs and per-scope checkboxes).
Find the API access panel.
In the Scopes field, enter this comma-separated list:
read_products, read_inventory, read_orders, write_content
Copy it from the Spagify panel rather than retyping it — a mistyped scope is only reported much later, by Shopify, when the credential exchange comes back missing it. Or click Select scopes to pick them from a searchable picker; the result is identical.
read_products — Spagify reads your product catalog to build the
product list you'll automate against.read_inventory — Spagify reads stock levels to skip out-of-stock
products in automation rules.read_orders — Spagify reads orders to attribute Google Ads clicks
(via GCLID) to conversions.write_content — the one write. When a product handle changes,
Spagify creates a URL redirect from the old product page to the new
one, so the link Merchant Center holds keeps landing on the product
instead of a 404 (a 404 disapproves the offer within a day). Nothing
else under this scope — pages, blogs, themes — is read or written.
Without it, renamed products raise a "reconnect needed" alert.Leave Optional scopes empty.
Leave Use legacy install flow unchecked. Spagify expects the modern install flow.
Do not add any other write scope. write_content in step 2 is
the only write Spagify makes, and it only creates URL redirects for
renamed products.
Do not enter read_customers or read_all_orders. These trigger
Shopify's Protected Customer Data review, which delays access by weeks.
Spagify does not need PII to work.
While you're on this form, quickly confirm the other panels are set correctly:
https://www.spagify.com. This is just the landing
page Shopify shows if someone opens your app from the admin sidebar;
Spagify never redirects through it.2026-07). This is the API version Shopify uses when it POSTs
webhook payloads to Spagify.Continue to Step 6 to release the version — do not click Release yet if any of the panels above still need adjustments.
Once Step 5's form is filled in:
spag-demo-app-1, spag-demo-app-2, etc. Only visible in the
Dev Dashboard.You'll land on the app's Overview page. The right rail now shows three panels:
0)
and an Install app button.From the Overview page:
spag-demo-store.myshopify.com).read_products, read_inventory, read_orders, and write_content.The app is now installed on your store. Shopify redirects you into your store admin, and the app appears in Settings → Apps on that store.
The Dev Dashboard shows your custom app's credentials on the Settings tab, not on the Versions or Overview tabs.
b86780e8bfa97d4041ae304f4c80627a1).
Click the copy icon next to it.shpss_. Shopify displays it in full
on this page; click the copy icon next to it.Don't click Rotate. The Rotate button next to the secret immediately invalidates the previous secret and requires reconnecting Spagify. Only use it if the secret is actually compromised.
Switch back to the Spagify tab — the Connect Shopify step of the wizard, or the Connect with Custom App panel if you started from Settings — and fill in the fields under Paste them here, below the steps:
.myshopify.com domain
(e.g. acme-store.myshopify.com). Pasting the whole admin URL
(https://admin.shopify.com/store/acme-store) is fine: the field
rewrites it to the domain when you click away, as it does for a bare
store handle or a domain with a protocol or path on it. A custom
storefront domain (like acme.com) is not what goes here and is left
alone rather than guessed at — Spagify needs the underlying
myshopify.com domain, which appears in your admin URL bar.Click Connect.
Don't paste anything else here. Do not enter your Shopify account password, storefront password, custom domain, or Storefront API token — Spagify will reject the request. Only the Client ID and Client secret from your Dev Dashboard app's Settings → Credentials panel work.
Spagify will:
myshopify.com domain and GraphQL ID.You should see a green Shopify connected notification within a few seconds. If Spagify rejects the credentials, see Troubleshooting below.
You're done. Continue to What's next.
Only relevant if your Spagify custom app was created before January 1, 2026 in the old Shopify-admin custom-apps UI. Those apps still work with their static Admin API access token — Shopify has not disabled them, but you cannot create new ones.
Use this flow if all three are true:
shpat_....read_products,
read_inventory, read_orders, write_content) already granted.
A legacy app without write_content still connects; Spagify then
cannot create URL redirects for renamed products and says so in an
alert.In the Spagify Connect with Custom App (Legacy) modal:
.myshopify.com domain.shpat_... value from Settings →
Apps → Develop apps → [your app] → API credentials. If it's no
longer visible, Shopify will only regenerate it if you uninstall +
reinstall the app, which invalidates the previous token.Click Connect. Everything downstream (webhook registration, product sync, verification) behaves the same as Flow B.
Migrating from legacy to Dev Dashboard? Disconnect the legacy connection first in Spagify Settings → Integrations → Shopify, then follow Flow B. The two flows subscribe to the same webhook topics on the same shop domain, so Shopify will reject overlapping registrations if both are live at once.
You're done. Continue to What's next.
Spagify tried to exchange your Client ID + Client secret with Shopify and Shopify refused. The most common causes:
shpss_.Permanent Shopify domain, and both belong to the same Shopify
organization. Confirm the app appears in that store's admin under
Settings → Apps.read_products, read_inventory, read_orders, and write_content.
If you added scopes after installing, release a new version and
reinstall, then click Reconnect Shopify in Spagify so it re-reads
the granted scopes..myshopify.com domain (from your
admin URL bar), not a custom storefront domain.shpat_... token is usually 38
characters total. Copy with the copy icon, not manual selection.You saw this at Step 3. Only an Owner account, or a staff member with the Manage apps and channels permission, sees this button. If you're a staff user, ask your store owner to complete Steps 3–8, or grant you the permission first. Shopify collaborators cannot open the Dev Dashboard.
Some password managers autofill any password-style field. Delete whatever is prefilled and paste the actual value from the Dev Dashboard. Spagify does not accept credentials in the wrong format.
App Store install (Flow A):
app/uninstalled webhook and clean up its side automatically.Customer-managed custom app (Flow B):
401 and Spagify
will mark the connection disconnected.Legacy custom app (Flow C):
shpat_... token is revoked immediately.If you clicked Rotate in the Dev Dashboard, the old secret is dead immediately. To reconnect Spagify:
The connection is scoped by shop domain, so updating the secret in place replaces the stored value — no duplicate connection is created.
Uninstall the Custom App in Shopify (see above). Then install Spagify from the Shopify App Store — Shopify will handle billing going forward. You'll need to cancel the Stripe subscription separately at Settings → Billing in Spagify. Email support@spagify.com and we can coordinate the switch without gaps.
For merchants who want the details on how your Shopify credentials are handled:
shpat_... Admin API token plus the
app's API secret key (used for webhook HMAC verification).If you need a security review document for your compliance team, email security@spagify.com.