Send Odoo Product Updates to Etsy Listings | MESA Workflow Template
Sync New Odoo Products to Etsy Draft Listings
14 min setup
No coding required
Runs automatically
Keep your Etsy store seamlessly aligned with your Odoo product catalog. This template automatically updates your Etsy draft listings whenever a product is created or modified in Odoo. MESA will either create a draft listing or update an existing draft listing on Etsy with the latest product details, ensuring your Etsy shop always reflects the most current information without the need for manual updates. Note: This template currently works only for Etsy listings without variants. This template saves time and keeps your listings accurate across platforms.
How it works
9 steps to
start creating and updating Etsy listings from Odoo products automatically
Product Updated
App connector: [Odoo](/content/apps/odoo/integrate "View Odoo integration page"/index.html) • Time to complete: 0 minutes (Auto-configured)
Why this matters: This trigger monitors your Odoo products and kicks off the workflow whenever products get updated, catching inventory changes, price updates, and description edits so they flow to Etsy without manual replication.
Get List Of Draft Listings By Shop
App connector: [Etsy](/content/apps/etsy/integrate "View Etsy integration page"/index.html) • Time to complete: 2 minutes
Why this matters: Before creating or updating anything, you need to see which draft listings already exist in your Etsy shop so you can match them to Odoo products and prevent duplicates.
Match Odoo Product Title To Etsy Draft Listing
App connector: [Transform](/content/apps/transform/integrate "View Transform integration page"/index.html) • Time to complete: 0 minutes (Auto-configured)
Why this matters: You need to know if the Odoo product already exists as an Etsy draft listing before deciding whether to create or update—this matching code compares product titles to find existing listings.
const Mesa = require('vendor/Mesa.js');
const Transform = require('vendor/Transform.js');
/**
* A Mesa Script exports a class with a script() method.
*/
module.exports = new class {
/**
* Mesa Script
*
* @param {object} payload The payload data
* @param {object} context Additional context about this task
*/
script = (payload, context) => {
// Adjust `payload` here to alter data before we transform it.
// Get Odoo product
const odooProduct = context.steps['odoo'];
// Get Etsy listings
const etsyDraftListings = context.steps['etsy'];
// Storing the matching Etsy listing ID
let etsyListingId;
// Check if we have a matching titles between Odoo product and Etsy listing
// If match, assign to Etsy listing ID to etsyListingId
// Otherwise, leave as empty
etsyDraftListings.results.forEach(listing => {
if (listing.title === odooProduct.name) {
etsyListingId = listing.listing_id;
Mesa.log.info("Has matching Etsy listing ID");
Mesa.log.info("Etsy listing id", etsyListingId);
}
});
// Alter the payload data based on our transform rules
const output = Transform.convert(context, payload);
// Adjust `output` here to alter data after we transform it.
output.etsy_listing_id = etsyListingId;
// We're done, call the next step!
Mesa.output.next(output);
}
}
Path - No Existing Etsy Draft Listing
App connector: [Paths](/content/apps/paths/integrate "View Paths integration page"/index.html) • Time to complete: 0 minutes (Auto-configured)
Why this matters: This rule checks whether the title matching found an existing draft listing—if not, you need to create a brand new Etsy listing rather than update an existing one.
Create Draft Listing
App connector: [Etsy](/content/apps/etsy/integrate "View Etsy integration page"/index.html) • Time to complete: 5 minutes
Why this matters: New Odoo products need corresponding draft listings in Etsy so you can review and publish them to your shop—this step creates the listing with all required Etsy fields.
Path - Has Existing Etsy Draft Listing
App connector: [Paths](/content/apps/paths/integrate "View Paths integration page"/index.html) • Time to complete: 0 minutes (Auto-configured)
Why this matters: This rule handles the opposite scenario—when a draft listing already exists in Etsy, triggering updates to that listing instead of creating a duplicate.
Retrieve Draft Listing
App connector: [Etsy](/content/apps/etsy/integrate "View Etsy integration page"/index.html) • Time to complete: 0 minutes (Auto-configured)
Why this matters: You need the complete listing record before updating it—this step fetches the full Etsy listing data so updates can be applied to the correct draft listing.
Filter: Check title and description
App connector: [Filter](/content/apps/filter/integrate "View Filter integration page"/index.html) • Time to complete: 0 minutes (Auto-configured)
Why this matters: Etsy requires both title and description for listings—this filter makes sure the Odoo product has both fields populated before attempting an update that would fail.
Update Draft Listing
App connector: [Etsy](/content/apps/etsy/integrate "View Etsy integration page"/index.html) • Time to complete: 1 minute
Why this matters: When an Odoo product changes, those updates need to flow to Etsy to keep your listings accurate—this step overwrites the Etsy draft listing with current information from Odoo.
Frequently asked questions
What happens if I change a product title in Odoo after it's already synced?
The workflow matches listings by title, so if you change the product name in Odoo, it will no longer find the matching Etsy listing and will create a new draft listing instead. To avoid duplicates, maintain consistent product titles across systems or manually update both when making title changes.
Why does the workflow only work with draft listings and not active ones?
The workflow is designed to work with draft listings so you can review and add images before publishing to customers. If you want to update active listings, you could modify the Get List Of Draft Listings step to query for active listings instead by changing the state parameter from "draft" to "active".
Make this template your own!
Customize this workflow even further:
- Add product images from Odoo to Etsy listings
- Sync inventory quantities to Etsy
- Filter by product category or tags
- Publish listings automatically when ready
You're in good company
Avg. App Store rating
4.9/5
Merchant reviews
157
Avg. time saved per week
3.5 hrs
"MESA has been a game changer for us. And, if you ever get stuck, their support team is always super helpful."
PetFriendly
"It's like Zapier but exactly designed for Shopify. I have been able to complete all the workflows that I've needed."
Zailys
"The MESA team has been amazing at helping us set up our automations. We would highly recommend this app!"
Rothy's