Send products to Shopify¶
Odoo products go to Shopify in two steps:
- Add to Store Layer: prepares the products for a store and checks them. Nothing is sent yet.
- Export to Store: creates them on Shopify.
Later changes in Odoo are sent with Update on Store.
1. Add to Store Layer¶
- In Sales › Products › Products (or Inventory), select the products.
- Click Actions ⚙ › Add to Store Layer.
- Choose the Stores. The Status column shows, for each product and store, whether it can be added and why not.
- Optional: tick Also Add Blocked Products to add products that cannot be exported yet, to fix them later.
- Click Confirm.
The products are added with all their variants and images, and get the store's Default Sales Channels.
Ready or Blocked¶
Each layer product is Ready (can be exported) or Blocked. The Layer Messages say why:
| Reason | Fix |
|---|---|
| Variants have no SKU / barcode (the code used by Match Product By) | Give them one in Odoo. |
| Two variants have the same identifier | Give each variant its own SKU or barcode. |
| An identifier is already used by another product of this store | Correct the duplicate. |
| A variant is already linked to another product of this store | Unlink it from the other product. |
| The product belongs to another company, or has no active variant | Not possible: the product is not added. |
After fixing, select the products and click Actions ⚙ › Re-check.
Attributes that create no variants
Attributes set to never create variants in Odoo are not sent to Shopify: a warning lists them.
2. Export to Store¶
- Open Shopify › Products › Product Templates and select the Ready products.
- Click Actions ⚙ › Export to Store and confirm.
- The products are created on Shopify with their variants and images.
- If Shopify already has a product with the same SKU or barcode, that product is linked instead of created twice.
- For products already on Shopify, only their new variants are added.
Safe to repeat
Each product created on Shopify is followed as a store request: if Odoo gets no answer, the next run asks Shopify before sending it again, so a product is never created twice.
3. Update on Store¶
When a value ticked Update on Export in Field Mappings changes in Odoo (e.g. the name or the description), the layer product gets Needs Update.
| Way | How |
|---|---|
| By hand | Select the products in Product Templates, Actions ⚙ › Update on Store. Sends the title, description, prices, variants and images, and the other values ticked Update on Export. |
| Scheduler | Add Update Products on Store in Schedulers and switch it on (at most once an hour). Each run sends only the products marked Needs Update. |
Other store layer actions¶
All in Product Templates › Actions ⚙; each opens a window that shows what will happen to each product first.
| Action | What it does |
|---|---|
| Refresh from Odoo | Copies the title, description and category from the Odoo products again and adds their new variants and images. Nothing is sent: use Update on Store afterwards. |
| Re-check | Checks blocked products again after you fixed them. |
| Set to Mapping Only | The products stay linked (orders still find them) but are no longer exported, updated or imported. |
| Enable Sync | Mapping Only products are exported and updated again, with all their variants. |
| Set Stock Settings | Track Inventory and the Stock Export Rule of the variants: Actual Qty, Fixed Quantity Cap or Percentage of Available Stock, with its Rule Value. |
Archiving a product in Odoo
Archiving an Odoo product that is linked to a store does not change it on Shopify: it stays on sale there. Odoo warns you; to stop selling it, change it on Shopify.
The layer product¶
Open a product in Product Templates to see and change its store values:
- Store Title, Store Description (HTML) and Published on Store (active or draft);
- Sales Channels of the product;
- Mode (Synced or Mapping Only), Layer Status, Needs Update, Sync Status and Last Sync Date;
- its variants, with their Shopify SKU, barcode and stock rules;
- Store Link: opens the product in Shopify admin.
What happens next
Choose which values travel in each direction: Field mappings.