Opening Problem Statement
Meet Sarah, an e-commerce manager running a thriving online store on Shopify while handling inventory and product data in Odoo ERP. Every time a new product is launched on Shopify, Sarah has to manually enter product details into Odoo to keep her sales and inventory systems aligned. This manual syncing takes her nearly 30 minutes per product, and sometimes duplicates or errors slip through, causing inventory confusion and lost sales. Multiply that by dozens of products weekly, and Sarah’s time bleeds into hours, distracting her from growth strategies.
This hands-on syncing challenge illustrates a common pain point for businesses juggling multiple platforms — especially between e-commerce frontends like Shopify and backend ERP systems like Odoo.
What This Automation Does
This n8n workflow automates syncing new Shopify products directly into Odoo’s product database. Here’s what happens when it runs:
- Detects the creation of a new product in Shopify immediately via a Shopify Trigger node.
- Checks if the corresponding product already exists in Odoo to prevent duplicates.
- If the product is new, it automatically creates the product in Odoo, transferring key details like title, SKU, description, and price.
- Blocks processing of products already existing in Odoo using a filter node.
- The automation saves Sarah manual entry time, reducing errors by automating data consistency between Shopify and Odoo.
With this setup, you could save hours every week managing product catalogs, eliminating duplicated data entry, and accelerating product launches.
Prerequisites ⚙️
- n8n account with workflow creation access (self-hosting optional).
- Shopify store with Admin API access and an app generating an access token.
📧 Shopify Trigger node requires this. - Odoo ERP instance with API access credentials configured.
🔑 Odoo node credentials needed. - Basic familiarity with n8n workflow editor.
Step-by-Step Guide to Creating This Workflow
Step 1: Set up Shopify Trigger to Detect New Products
In n8n, click + Add Node → search and select Shopify Trigger.
Configure the node by selecting the topic products/create. This ensures the workflow triggers every time a new product is created in Shopify.
Connect your Shopify store credentials by linking the app access token you created.
Once saved, you should see the webhook URL generated. This URL is automatically called by Shopify on product creation; no manual triggering needed.
Common mistake: Forgetting to configure Shopify’s webhook to call the n8n webhook can cause the workflow never to trigger.
Step 2: Query Odoo for Existing Product Using the Shopify Product ID
Click + Add Node → select Odoo node (named here as Odoo6 in the workflow).
Configure it to perform a custom resource getAll operation on the product.product model.
Set a filter where the default_code field equals the Shopify product ID passed from the trigger:
{"filter": [{"fieldName": "default_code", "value": "={{ $('Shopify Trigger').all()[0].json.variants[0].product_id }}"}]}This fetches existing products from Odoo matching the Shopify product’s unique identifier, if any.
Expected Outcome: This returns an array containing the product if it exists, or empty if not.
Step 3: Use a Code Node to Prepare Data and Identify Existence
Add a Code node named Code.
Use the following JavaScript to get Shopify product details and check if Odoo product exists:
var product_detail = $('Shopify Trigger').first().json;
var existing_product = $('Odoo6').item.json;
return {existing: existing_product.id ? true : false, product_detail: product_detail};
This snippet extracts the product detail from Shopify and checks if Odoo returned a product with an ID. It passes a boolean flag called existing to the next node.
Note: The code runs once per item, ensuring accurate data mapping.
Step 4: Filter Out Existing Products to Avoid Duplicates
Add a Filter node named Filter2 after the Code node.
Configure the condition to proceed only if existing is false — meaning the product doesn’t yet exist in Odoo.
If the condition fails (product already exists), the workflow halts and no further processing occurs for that product.
Common mistake: Using the wrong property to filter may lead to duplicate product creation.
Step 5: Create the New Product in Odoo
Add another Odoo node (named Odoo7).
Configure it to create an entry in the product.product resource.
Map these fields from Shopify product details:
- name = product title
- default_code = Shopify product ID (SKU)
- description = product HTML description
- list_price = product variant price
Save the node. Now, when a new Shopify product is created, this node writes it into Odoo automatically.
Expected Outcome: New products in Shopify appear reliably in Odoo within seconds.
Customizations ✏️
- Add Inventory Data: Extend the Odoo7 node to include stock quantity and location fields from Shopify inventory data by editing
fieldsToCreateOrUpdate. - Sync Product Updates: Add a Shopify trigger for
products/updateevents to handle edits. - Notification on Sync: Add an email or Slack node after Odoo7 to notify the team when products sync successfully.
Troubleshooting 🔧
Problem: Workflow never triggers when creating a product in Shopify.
Cause: The webhook URL from the Shopify Trigger node is not registered with Shopify.
Solution: In Shopify Admin, navigate to Settings → Notifications → Webhooks, and add a webhook pointing to the n8n Shopify Trigger URL with the products/create topic.
Problem: Duplicate products created in Odoo.
Cause: The Filter2 node is misconfigured or not properly checking the existing flag.
Solution: Verify the filter condition is exactly ={{ $json.existing === false }} and that the Code node correctly flagging existing products.
Pre-Production Checklist ✅
- Confirm Shopify app access token and webhook triggers are correctly set and active.
- Verify Odoo credentials and permissions for product creation.
- Test the workflow with a sample Shopify product creation to ensure Odoo gets created properly.
- Backup your Odoo product database before deploying in production.
Deployment Guide
Activate the workflow toggle in n8n to set it live.
Monitor the workflow executions in n8n’s UI to see each trigger and output. Check for errors or failed executions.
Schedule regular checks for Shopify webhook health and Odoo API stability to maintain smooth syncs.
FAQs
Q: Can I use this workflow for Shopify product updates?
A: Not as is; you need to add a products/update trigger and handle update logic in Odoo.
Q: Does this workflow consume many API credits?
A: API usage is minimal per product sync but depends on Shopify and Odoo limits.
Q: Is my product data secure?
A: Yes, all data transfers are via secured API credentials you configure.
Conclusion
By setting up this n8n workflow, you’ve automated syncing new Shopify products into Odoo without manual entry or duplicate headaches. You’ve gained hours back weekly, improved product data integrity, and ensured real-time inventory updating between your sales channel and backend.
Next, consider automating product updates sync, inventory stock levels, or pricing changes with similar workflows to enhance your e-commerce ERP integration further. You’re well on your way to mastering seamless multi-platform automation!