Connecting Shopify

This guide connects your Shopify shop with TRADElube: from the app in Shopify's developer area through the installation in the shop to the mappings and the first transfer. Unlike with a self-hosted shop, you enter no password. You create an app at Shopify, give it the rights the channel needs, and install it in your shop. Why sign-in is built that way is under Shopify (channels). The path through TRADElube, which is the same for every system, is covered in full by Setting up a channel.

Allow the better part of an hour. The longer part happens at Shopify, and it takes more steps than the phrase "create an app" suggests.

Prerequisites

  • A Shopify shop. Its address ends in .myshopify.com, and that is exactly the one you are about to need.
  • The shop owner's account. Only they may create, publish and install apps. A staff account gets as far as the sign-in page and no further.
  • The Shopify channel in TRADElube is created. We take care of that, see Setting up a channel.

Creating the app at Shopify

At Shopify an app is an entry recording two things: who may access, and what. It is not created in the familiar shop administration but in the developer area, the Dev Dashboard. The way there still starts in the shop.

  1. Open the developer area. In the shop admin under Settings and there Apps, the button Develop apps sits in the top right.

    Apps section of the Shopify admin with the Develop apps button

  2. Move to the Dev Dashboard. The App development page offers Create apps in Dev Dashboard. The earlier custom apps listed on the same page are a path being retired: creating new ones has not been possible since January 2026.

    App development page with the button for creating apps in the Dev Dashboard

  3. Create the app. In the Dev Dashboard, Create app leads to a form with two paths. The right one, Start in Dev Dashboard, is yours: enter a name you will recognize the connection by, for instance TRADElube, and confirm with Create. The left path via the Shopify CLI is not needed.

    Create app form in the Dev Dashboard with the app name entered

  4. Create a version. The app now has a name and nothing else. Everything further, rights and addresses, belongs to a version, and only a published version counts. On the overview, New version leads there.

    App overview in the Dev Dashboard with the Installations, Distribution and Versions sections

  5. Enter rights and addresses. Three entries decide whether the connection will run.

    The field Scopes takes this list, unchanged and without spaces:

    read_customers,write_customers,read_files,write_files,read_fulfillments,write_fulfillments,read_inventory,write_inventory,read_locations,read_merchant_managed_fulfillment_orders,read_orders,write_orders,read_products,write_products
    

    It covers the areas the channel works in: products including collections, files for the images, stock and locations, orders including fulfillment, customers. Where an entry is missing, it is not the setup that fails but, later, the task needing it.

    The field Redirect URLs takes https://app.tradelube.com/auth/callback/accept-shopify, the field App URL takes https://app.tradelube.com/auth/callback/install-shopify. Both are fixed, whatever your shop. The first is how the granted permission comes back, the second is where the installation begins.

    The checkbox Use legacy install flow stays empty. Shopify then manages the installation and grants exactly the rights entered above.

    Create version form with the Scopes, Redirect URLs and App URL fields

  6. Publish the version. Publish in the top right makes the version active. Until then your configuration is on screen but does not apply, and the app cannot be installed either. Afterwards the version view lists the rights and addresses now in force.

    Active version of the app with its scopes, redirect URLs and app URL

  7. Read off the client id and the secret. Under the app's Settings, the Credentials section holds the Client ID and the Secret. Copy both. Shopify reveals the secret only after a click on the eye symbol.

    Credentials section of the app with client ID and secret

Entering the login details in TRADElube

This step comes before the installation, and the order is not a matter of taste: while installing, Shopify calls TRADElube and passes nothing but your shop's address. That is how TRADElube recognizes which channel the installation belongs to. If the address is nowhere on file yet, the path ends on the start page.

  1. Enter shop, client id and secret. Under the navigation entry Channels, open your Shopify channel via the button Edit. The field Shop in the Login Details section takes your shop's bare name, that is farbenwelt-demo-en.myshopify.com without https:// in front and without a path behind. Add the two values from step 7 into Client Id and Client Secret. Save the channel. Below the fields, Authorization pending now appears: the channel knows who it is, and may do nothing yet.

    Login details section of the Shopify channel with the shop address entered and the note Authorization pending

The field Shop takes the name Shopify keeps your shop under, the one on .myshopify.com. You will find it in the shop admin below your shop's name and in the address of the admin area, admin.shopify.com/store/…. Enter it without https://: TRADElube puts that in front itself, and a second one produces an address that does not exist.

Every other address your shop answers on fails at the interface, even where a browser gets through: the domain your customers shop under, a second domain set up as an alias, and likewise a former .myshopify.com address if you ever renamed the shop. All three forward visitors. To an interface, though, a forward is not an address but an answer it cannot use.

Installing the app in the shop

The app exists now, but your shop does not know it yet. This step is Shopify's, not TRADElube's, and it cannot be triggered from TRADElube either.

  1. Set the distribution and install. On the app's overview, Install app leads to the installation link for your shop. Shopify then shows which accesses the app requires, and Install grants them.

    Shopify consent page with the requested accesses and the Install button

    Afterwards the app is listed in the shop under Settings and Apps among the installed apps.

You choose the distribution once and never again: Shopify does not allow changing it afterwards. For a single shop, Custom distribution is the right choice, and the store address you enter there is again the one on .myshopify.com.

Completing the connection

From here you work in TRADElube again, and the rest is the same as for every channel.

  1. Grant the access. The button Request Consent takes you to Shopify. Since the app is already installed there, you only confirm. Back in TRADElube the line below the fields reads Authorization successful along with a date, and the fields have disappeared: from now on the access token belongs to Shopify and TRADElube jointly, and there is nothing left to set on it.

    Login details section after the permission was granted, showing Authorization successful

  2. Test the connection. Press Connect. The button only becomes clickable with the granted permission, asks Shopify and answers with Connection successful or with the text Shopify returned.

  3. Fill the mappings, the options first. The channel holds four tabs, and one of them decides the initial fill: in the Options tab you connect your variant axes with the options Shopify keeps on the product. Into the column External you type the option name, in Internal you pick your selection property. If the tab stays empty, all products arrive without an error, and still no version can be picked in the shop. Payment Methods and Shipping Methods you fill only with the first order, because Shopify does not hand these lists out as lists. What belongs in which tab is under Shopify (channels).

  4. Start the initial fill. Start the tasks once by hand, in this order: first collections and media, then the products, the stock after them. The reason: whatever a record needs as a reference has to be there first, and a product refers to both. Afterwards you set the cadence per task. Both in detail: Planning and starting tasks.

Where your app issues the access token itself, as an app meant for your own shop only does, steps 9 and 10 do not apply, except for the connection test: in step 8 enter only Shop and Access Token and leave the two fields above empty. The channel is then considered signed in.

Checking the result

The line below the login details says where you stand: Authorization pending before the consent, Authorization successful along with a date after it. Connect answers whether the permission really holds. After the initial fill, the task's Traces section shows Created per record, and collections, images and products are in the shop. Check a sample, ideally a product with variants.

Changing rights later

If a task arrives that may do more than before, you change the rights not on the connection but on the app: create a new version, extend the Scopes field, publish. The shop notices at the next access and presents the extension as Update data access, and only your Update grants it.

Frequent pitfalls

  • Shopify calls the installation link invalid. Then the app has no published version, or the distribution has not been set. Both sit in steps 6 and 9.
  • After the installation you land on the start page instead of in the channel. Then the shop address from step 8 was not yet saved when Shopify called TRADElube. Enter it and start over through Request Consent.
  • Request Consent is not there. The button only appears once a shop name is in the field Shop. Without a shop it would not know where to take you.
  • Connect stays disabled. The button only becomes clickable once a permission is in place, through the consent from step 10 or through an entered access token.
  • The status line demands a new consent. After a change of the secret it reads Renewal required. Repeat step 10 through Request Consent. The connection then continues as before.
  • A task fails for missing rights although the connection stands. Then an entry is missing in the Scopes field of the app's active version, see "Changing rights later".
  • No version can be picked in the shop. Then the Options tab from step 12 stayed empty, see Products Upload (Shopify).

Further reading