Blog
Integrating Odoo with Tokopedia, Shopee, and Lazada
What it actually takes to connect Odoo to Indonesian marketplaces — what to sync, where the platforms bite, and how to architect it so it does not break monthly.
- mid
A growing Indonesian retailer running Odoo will almost always ask the same question by month three or four. They have their accounting in Odoo, their inventory in Odoo, maybe their POS — but they are still copying Tokopedia and Shopee orders into Odoo by hand, or worse, their orders only exist in the marketplace dashboards. How hard is it to actually integrate the two?
The honest answer is “harder than the marketing copy suggests, easier than starting from zero.” Here is what actually goes into a real Odoo–Tokopedia–Shopee–Lazada integration in 2026.
What you are actually trying to sync
There are five flows worth talking about, and they have different difficulty levels.
1. Orders flowing into Odoo
When a customer buys on Tokopedia, you want the order to appear in Odoo as a sale order with the right products, prices, quantities, customer information, shipping address, and payment status. Same for Shopee and Lazada. This is the flow most businesses prioritize first because it is what unlocks unified reporting and inventory deduction.
Difficulty: moderate. All three platforms expose order APIs. The work is matching their product SKUs to your Odoo products, mapping their shipping options to your delivery methods, and handling the different statuses each platform uses.
2. Stock levels pushed back to the marketplaces
When Odoo is your source of truth for inventory, you want to push current stock to each marketplace whenever it changes. If you have 12 units in Odoo and you sell 3 in your physical store, all three marketplaces should reflect 9 within minutes.
Difficulty: moderate to hard. The APIs exist. The hard part is rate limits and the fact that pushing stock 200 times a day across 5,000 SKUs on three platforms means 3 million API calls a day, which is well beyond what any platform allows. You have to be smart about batching, deltas, and prioritization.
3. Product catalog management
You want to manage product information in Odoo — names, descriptions, images, prices, categories — and have it appear correctly on all three marketplaces.
Difficulty: hard. Each platform has its own taxonomy, attribute structure, and image requirements. A “Kemeja Putih M Cotton” in Odoo has to map to a specific Tokopedia category with required attributes, a Shopee category with different required attributes, and a Lazada category that might want yet another structure. Building a clean abstraction here is real work.
4. Fulfillment and shipping status
When you ship an order, you want the marketplace to know. When the marketplace’s logistics partner picks up the order, you want Odoo to know. The shipping label, tracking number, and delivery status should flow both ways.
Difficulty: moderate. The APIs are there, the tricky bit is that each platform handles shipping differently — Tokopedia has its own logistics integration, Shopee has Shopee Express plus partners, Lazada has its own LEX flow. Your integration has to understand each platform’s shipping model.
5. Customer chat and messaging
You want incoming customer messages to surface in your system, and outgoing replies to be sendable.
Difficulty: hard, and platform-restricted. All three platforms gate chat APIs with significant restrictions, especially around automated responses. We almost never recommend tackling this in the first phase of an Odoo integration.
The Odoo angle
Odoo does not ship with built-in connectors for Indonesian marketplaces. Some OCA modules exist with varying levels of quality and maintenance, and there are third-party paid connectors of mixed quality. Most serious implementations end up building custom modules, sometimes starting from an OCA base and extending heavily.
The shape of a healthy Odoo integration module:
- A model for marketplace_account (one record per marketplace store you operate)
- A model for marketplace_product_mapping (the bridge between Odoo product and marketplace SKU)
- A sync layer that runs on a scheduled job, pulling orders and pushing stock updates
- A queue for outbound updates so retries are handled cleanly
- Logging and error visibility — when a sync fails, you should be able to see which record, what error, when, in the Odoo UI
This is medium-to-large custom module territory. For Indonesian SMEs we usually see a range of Rp 150 juta to Rp 400 juta for a real, production-quality integration covering all three marketplaces. Lower if you start with just one platform.
A worked example: Bandung apparel brand
A Bandung apparel brand selling on all three marketplaces plus a physical store came to us with their stock constantly out of sync. They were getting hit with marketplace penalties every week because they oversold — they would list 50 units on Tokopedia, sell 30 in the physical store, and Tokopedia would still have 50 listed until someone manually adjusted.
Phase one of the integration handled three things: pulling orders from all three marketplaces into Odoo every 10 minutes, pushing Odoo stock changes to all three marketplaces with a 5-minute debounce, and a marketplace dashboard inside Odoo showing per-channel sales for the day.
Built over eight weeks, about Rp 220 juta. Within six weeks of going live, marketplace penalties dropped to zero, and the time the operations team spent on cross-channel reconciliation went from about 15 hours a week to under 2 hours. They added the catalog management piece six months later as a separate phase, after they had a feel for what their actual taxonomy needs were.
Practical implementation realities
Five things that consistently bite first-time builders:
Marketplace API access takes time
All three platforms gate API access behind merchant verification. Allow one to three weeks per platform for approval, and longer if your seller account has any compliance issues. Start the application process before you start the build.
Rate limits matter more than they look on paper
Per-minute rate limits in the documentation tell only part of the story. In practice, the platforms also throttle by user agent, by endpoint, and sometimes silently under load. Plan for a 30 to 50% buffer below the documented limits, and build retry-with-backoff logic from day one.
Webhooks are unreliable
All three platforms offer webhooks for order events. None are perfectly reliable. You will miss some. Combine webhooks for low-latency updates with periodic polling for completeness. We typically run a “catch-up” sync every hour that picks up anything the webhooks missed.
Schema changes happen without much warning
The platforms do change their API responses, sometimes with limited deprecation notice. Build your integration so platform-specific code lives in clearly bounded files. When Tokopedia changes a field name, you should be modifying one file, not chasing references across your module.
Money flows are sensitive
Anything that touches financial data — order totals, shipping costs, marketplace fees, refunds — needs careful reconciliation logic. The Odoo invoice for a marketplace sale should match the marketplace’s settlement statement. Get this right early. Cleaning up six months of mismatched accounting later is painful.
How to phase a sensible build
Most healthy integrations look like:
- Phase one (6–10 weeks): orders in, stock out, for one platform. Get this rock-solid.
- Phase two (4–6 weeks): add the second and third platforms, reusing the architecture.
- Phase three (4–8 weeks): catalog management and product publishing.
- Phase four (selective): shipping integration, chat surfacing, advanced analytics.
Trying to do everything at once almost always produces something that works inconsistently across phases. Phasing is slower on paper, faster in practice.
If you are sizing up a marketplace integration for your own Odoo setup and want to figure out where the real value is and what the realistic cost looks like for your specific business, an hour-long conversation usually clarifies it. We do those at no cost.