How to connect your Shopify store to SeeProfit

A step-by-step guide - creating an app in the Shopify Dev Dashboard, the right scopes, installing it on your store and pasting the Client ID + Client secret into SeeProfit.

The Shopify integration works through your own app, created in the Shopify Dev Dashboard and installed on your store. You do not install anything from the app store, and access is read-only - SeeProfit physically cannot change anything in your store.

Important: since January 1, 2026 Shopify no longer lets you create "legacy" custom apps in the store admin (Settings → Apps → Develop apps). If you already have such an app with a shpat_ token, it keeps working - see the section at the end. New integrations are created through the Dev Dashboard, as below.

What you need

  • An account with store owner access.
  • Your store domain in the your-store.myshopify.com format. A custom domain (e.g. mystore.com) will not work. You can find it in your admin URL: admin.shopify.com/store/NAME means your domain is NAME.myshopify.com (or check Settings → Domains).

Step 1. Open the Dev Dashboard

Go to dev.shopify.com/dashboard and sign in with the same account you manage the store with (you can also get there from your store admin: click the store name → Dev Dashboard). On first visit Shopify may ask you to create a developer organization - just follow the wizard.

Step 2. Create the app

In the Apps section click Create app (top right), choose Start from Dev Dashboard (no CLI needed), name it (e.g. "SeeProfit") and click Create.

Step 3. Configure a version and scopes

The app needs a released version before it can be installed. In the Versions tab:

  • App URL: if the app has no UI of its own (ours does not need one), use the default https://shopify.dev/apps/default-app-home,
  • Webhooks API version: pick the newest,
  • Scopes - tick the read-only ones:
ScopePurposeRequired
read_ordersReading orders (revenue)Yes - credentials are rejected without it
read_all_ordersHistory older than 60 daysStrongly recommended - we sync up to 365 days back
read_shopify_payments_payoutsShopify Payments feesOptional

Finish with Release to publish the version.

Important: without read_all_orders the Shopify API only returns orders from the last 60 days. The read_shopify_payments_payouts scope only matters if the store uses Shopify Payments - with an external gateway there are simply no fees from this source and you will see revenue only.

Step 4. Install the app on your store

In the app go to the Home tab, scroll down and click Install app. Pick your store from the list and confirm with Install. Credentials will not work without this step.

Step 5. Copy the Client ID and Client secret

In the app open Settings and copy the Client ID and Client secret.

Unlike the legacy apps there is no permanent token to copy - access tokens are valid for 24 hours and SeeProfit refreshes them automatically. You only provide the Client ID and Client secret once.

Step 6. Paste everything into SeeProfit

Back in SeeProfit: Integrations → Shopify, keep the "Dev Dashboard app" option selected, enter the your-store.myshopify.com domain, paste the Client ID and Client secret, then click Connect Shopify. We validate access immediately and run the first sync - later syncs happen automatically while you use the panel.

What exactly we import

  • Revenue: the amount of every paid order, dated by payment processing time. Test orders are skipped automatically.
  • Fees: Shopify Payments fees (if the store uses them and the app has the scope).

The Client ID and Client secret are stored encrypted and never displayed again. We do not fetch customer personal data - only order amounts, currencies and dates.

Have a legacy app with a shpat_ token?

Custom apps created in the store admin before 2026 keep working. In the SeeProfit form switch to "Legacy app (shpat_ token)" and paste your token. Just remember you cannot create a new app of that kind anymore - if you ever delete the old one, come back to this guide.

Common issues

SymptomCause and fix
"Invalid store domain"A custom domain was entered - use the *.myshopify.com address
"Shopify rejected..." when connectingWrong Client ID/secret, the app is not installed on the store (step 4), or the store belongs to a different organization than the app
"Protected customer data" / "not approved to access the Order object" errorIn the app settings in the Dev Dashboard find API access → Protected customer data access, enable access to order data (reason: app functionality) and save - for apps on your own store this does not require Shopify review
Only ~2 months of historyMissing read_all_orders - add it in a new app version and Release it again
No feesThe store does not use Shopify Payments or the read_shopify_payments_payouts scope is missing

← All guides