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.
Open the developer area. In the shop admin under Settings and there Apps, the button Develop apps sits in the top right.

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.

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 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.

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_productsIt 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 takeshttps://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.

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.

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.

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.
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.comwithouthttps://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.
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.
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.

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.
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.

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.
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).
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
- Setting up a channel: the path through TRADElube, which is the same for every system
- Shopify (channels): login details, the four mappings and the six tasks
- Products Upload (Shopify): the product upload's plans and the options section
- Planning and starting tasks: initial fill, cadences and the manual start