Try Shopfront for free today →
Shopfront

Shopify Connection

Connect your Shopify store to sync products, orders, and inventory

Sync products, inventory, and orders between Shopify and Shopfront. When a sale happens on Shopify, items are automatically delisted from your other marketplaces.

Use Client Credentials for new connections. Legacy API tokens were deprecated on 1 January 2026.

Setup

Create a Custom App

  1. Log in to your Shopify admin at https://admin.shopify.com/store/{your-store-name}

Shopify admin dashboard

  1. Click Settings in the bottom-left corner of the sidebar

Shopify settings page

  1. Click Apps

Shopify apps page

  1. Click Develop apps in the top-right corner

Shopify app development page

  1. Click Build apps in Dev Dashboard — this will open a new window

Shopify dev dashboard

  1. Click Create app

Shopify create an app

  1. Under Start from Dev Dashboard, enter "Shopfront" as the app name and click Create — this will open a new window

Shopify app overview

Configure Scopes

Scroll down to the Access section on the same page.

Use Select scopes to find and enable the following:

ScopePurpose
write_productsCreate and update products (includes metafield access)
read_ordersReceive order webhooks for cross-channel delisting
write_publicationsRead and restore product availability across sales channels
write_filesUpload product images
write_inventoryTrack and update inventory levels
read_metaobject_definitionsRead category attribute definitions
write_metaobject_definitionsCreate category attribute definitions
read_metaobjectsRead category attribute values
write_metaobjectsCreate category attribute values

Or paste directly into the Scopes field:

write_products,read_orders,write_publications,write_files,write_inventory,read_metaobject_definitions,write_metaobject_definitions,read_metaobjects,write_metaobjects

write scopes automatically include the corresponding read scope, so you don't need to add read_products separately.

Shopify scopes filled in

Click Release at the bottom of the page.

Shopify release confirmation

Click Release again in the confirmation dialog. You can leave the version name and message blank.

Shopify app credentials page

You'll be taken to the Versions page showing your active release.

Get Credentials

  1. Click Home in the left sidebar

Shopify app home

  1. Click Install app in the top-right corner

Shopify install app

  1. Select your store to install the app

This will take you back to your Shopify admin page. The app is now installed and will appear under Apps in the sidebar.

Shopify app installed

  1. Go back to the Dev Dashboard: Settings → Apps → Develop apps → Build apps in Dev Dashboard

Shopify app selector

  1. Click into your app
  2. Click Settings in the left sidebar
  3. Copy the Client ID and Client Secret using the clipboard buttons on the right

Shopify credentials

Connect to Shopfront

  1. Go to Settings → Connected Channels in Shopfront
  2. Click Connect on Shopify
  3. Enter your store domain (e.g., my-shop.myshopify.com)
  4. Paste your Client ID and Client Secret
  5. Click Test Connection then Save

Shopfront Shopify connection modal

Your store domain is the .myshopify.com URL — not the Shopify admin URL. You can find it from your admin URL:

https://admin.shopify.com/store/my-shop/...my-shop.myshopify.com

You can also find it under Settings → Domains in your Shopify admin.

Shopify domains page

How It Works

When someone buys on Shopify:

  1. Shopify sends a webhook to Shopfront instantly
  2. The order appears in your dashboard
  3. The item is delisted from your other connected channels (eBay, Depop, Grailed, and Vestiaire Collective)

When Shopfront delists a Shopify product, it archives the existing product. The product and its details remain in Shopify. Relisting restores its previous status and sales-channel settings when Shopfront has captured those settings and the item is eligible for sale.

Update an Existing Connection

write_publications is required to read and restore sales-channel settings. It also includes read_publications; you do not need to add that scope separately. If your connection already has write_publications, no scope change is needed.

If Shopfront reports missing publication access:

  1. Open your existing app in the Shopify Dev Dashboard and create a new version with write_publications enabled under Access.
  2. Release the version and approve the updated access for your store if prompted. For apps installed in your own organisation, Shopify approves the scope change when you release the version.
  3. Return to Settings → Connected Channels in Shopfront and reconnect the same Shopify store. Use Test Connection then Save to validate the permissions on the new connection.

For an existing app that uses a legacy API token, update its Admin API permissions in Shopify and follow Shopify's prompts to apply the change, then reconnect it in Shopfront.

An older connection without publication access can still archive products. If Shopfront could not capture a product's original sales-channel settings, reconnecting cannot recover those settings. Review and restore that product directly in Shopify only if it is eligible for sale, checking its status and sales channels. Shopfront will block automatic relisting for that removal. Sold stock must remain unavailable.

Troubleshooting

ProblemSolution
Connection failedCheck domain format (store-name.myshopify.com) and credentials
"Access denied" or missing write_publicationsFollow Update an Existing Connection above, then retry
Original sales-channel settings could not be capturedReview the product directly in Shopify; reconnecting cannot recover its original settings
Orders not syncingVerify read_orders scope is enabled
Lost Client SecretGo to API credentials tab and click Show

If you add scopes after connecting, you'll need to reconnect in Shopfront for changes to take effect.

Need help? contact@shopfront.app