Create the Shopify app¶
Odoo talks to your store through a Shopify app that you create for it in the Shopify Dev Dashboard. The app gives Odoo:
- a Client ID and a Client secret: Odoo calls them API Key and Secret Key;
- the access scopes: what Odoo may read and change on your store;
- the redirect URL: the Odoo address Shopify returns to after you approve the app.
Why the Dev Dashboard
Since 1 January 2026, Shopify no longer lets you create new custom apps in the store admin (Develop apps › Create an app). New apps are made in the Dev Dashboard. Apps created before that date keep working.
1. Copy the redirect URL from Odoo¶
- In Odoo, go to Shopify › Configuration › Stores and click New.
- Enter the Store Name (e.g. My US Store).
- The blue Shopify Setup box shows the Allowed redirection URL, e.g.
https://erp.yourcompany.com/shopify/auth/callback. Copy it.
Keep this store open: you finish it on Connect your store.
The address must be the public HTTPS address
The redirect URL is built from Odoo's own address. If it starts with http://localhost or an internal IP, fix
Odoo's address first (Install the modules), then reopen the store.
2. Open the Dev Dashboard¶
Use the Shopify account that owns the store, or a staff account with the App development › Develop permission.
- In your Shopify admin, go to Settings › Apps.
- Click Develop apps.
- Click Build apps in Dev Dashboard.
The app then belongs to your store's organization and can be installed on it directly.
Open dev.shopify.com/dashboard and choose the organization of your store.
3. Create the app¶
- Click Create app.
- Under Start from Dev Dashboard, enter a name, e.g. Odoo Connector, and click Create.
Shopify opens the first version of the app. A version holds the app's URLs and access scopes; the store uses the version you release.
4. Configure the version¶
Fill in the version page:
| Section | Field | Value |
|---|---|---|
| URLs | App URL | The public address of your Odoo database, e.g. https://erp.yourcompany.com |
| URLs | Embed the app in the Shopify admin | Off, if the option is shown: Odoo opens on its own, not inside Shopify |
| Webhooks API Version | The newest version in the list (Odoo registers its webhooks itself) | |
| Access | Scopes | The scopes of the table below (copy them with the box under it) |
| Access | Redirect URLs | The redirect URL copied from Odoo in step 1 |
Access scopes¶
These are all the scopes the connector uses, checked against every request it sends to Shopify.
| Scope | Used for | Without it |
|---|---|---|
read_products |
Import Products, store layer, order lines | Odoo refuses to connect |
write_products |
Export to Store, Update on Store, sales channels of products | Odoo refuses to connect |
read_orders |
Import Orders, payments, refunds, shipments made on Shopify | Odoo refuses to connect |
write_orders |
Order changes on Shopify | Connected, with a warning |
read_all_orders |
Orders older than 60 days (Import Orders From, Import Specific Order) | Shopify returns only the last 60 days |
read_customers |
Import Customers, customer of each order | Connected, with a warning |
read_inventory |
Store locations, Import Stock | Connected, with a warning |
write_inventory |
Export Stock | Connected, with a warning |
read_publications |
Sales channels (Online Store, Point of Sale…) | Connected, with a warning |
write_publications |
Publishing products on sales channels | Connected, with a warning |
read_files |
Product images from Shopify | Connected, with a warning |
write_files |
Product images sent to Shopify | Connected, with a warning |
read_returns |
Returns of orders | Connected, with a warning |
read_merchant_managed_fulfillment_orders |
Location of each order line (your own locations) | Connected, with a warning |
read_assigned_fulfillment_orders |
Location of each order line | Connected, with a warning |
read_third_party_fulfillment_orders |
Location of order lines shipped by fulfillment apps | Connected, with a warning |
write_merchant_managed_fulfillment_orders |
Shipments and tracking numbers sent from Odoo | Connected, with a warning |
write_assigned_fulfillment_orders |
Shipments and tracking numbers sent from Odoo | Connected, with a warning |
write_third_party_fulfillment_orders |
Shipments of locations of fulfillment apps | Connected, with a warning |
Copy all scopes (paste them in Scopes)
read_products,write_products,read_orders,write_orders,read_all_orders,read_customers,read_inventory,write_inventory,read_publications,write_publications,read_files,write_files,read_returns,read_merchant_managed_fulfillment_orders,read_assigned_fulfillment_orders,read_third_party_fulfillment_orders,write_merchant_managed_fulfillment_orders,write_assigned_fulfillment_orders,write_third_party_fulfillment_orders
Orders older than 60 days
Shopify gives apps the orders of the last 60 days only. read_all_orders opens the older ones. An app of your
store's organization gets it without asking Shopify; an app of a Partner organization needs Shopify's approval
first.
Customer data
Shopify protects customer names, emails, phone numbers and addresses. If imported customers or orders arrive without them, allow the app to access protected customer data in the Dev Dashboard (name, email, phone and address).
5. Release the version¶
- Click Release.
- Optional: enter a version name (e.g. Odoo v1) and a message.
- Click Release again.
The released version is the one the store gets. Every later change of scopes or URLs needs a new version: open Versions, click Create a version, change it and release it.
6. Copy the Client ID and Client secret¶
- Open the app's Settings in the Dev Dashboard.
- Copy the Client ID: it goes in Odoo's API Key.
- Reveal and copy the Client secret: it goes in Odoo's Secret Key.
Keep the secret key secret
The secret key lets anyone act as your app, and Shopify signs every event it sends to Odoo with it. Never send it by email or chat; paste it only in Odoo. If it leaks, rotate it in the Dev Dashboard and use Correct Secret in Odoo.
App created in a Partner organization
The Distribution card appears only for apps of a Partner organization. Before connecting:
- On the app's Home, in Distribution, click Select distribution method.
- Choose Custom distribution (it cannot be changed later) and enter your store's
myshopify.comdomain. - Click Generate link. If Odoo's Connect to Shopify says the app cannot be installed on the store, open this link once, install the app, then connect again from Odoo.
Shopify's screens change
Shopify renames and moves its settings from time to time. If a label is different, look for the same setting: the app URL, the redirect URLs, the scopes, the release of the version and the client credentials.
What happens next
Enter the keys in Odoo and approve the app on your store: Connect your store.