Odoo ecommerce: built-in store or an external one?
Odoo ecommerce is the online-store app built into Odoo, so orders, stock levels and invoices live in one database. It is enough for many B2B and B2C shops. Connect an external store such as Shopify or WooCommerce only when you need that platform’s storefront, and plan the sync of products, stock, orders, customers and payments.
That is the whole decision: one system with a store inside it, or two systems that must agree. This guide covers what the built-in store does, when connecting an outside store is the better call, what has to sync, and where it usually goes wrong. It follows the Odoo 20.0 documentation; check each linked page for your own version.
What Odoo ecommerce is
Odoo’s documentation describes the eCommerce app as an open-source platform for building and managing an online store. It covers product setup, design, ordering and checkout, delivery methods, order handling and performance analysis. Because it runs inside Odoo, a web order is a sales order like any other. You find it under Website, eCommerce, Orders, in the stages Quotation, Quotation Sent and Sales Order, and guest orders go to a default Public User contact, as the order handling page explains.
The practical benefit is what you do not build. When the Inventory app is installed, confirming a sales order creates the delivery order automatically, so the warehouse sees web orders in the same place as every other order. Service and subscription products do not create delivery orders.
What the built-in store covers
| Need | What Odoo documents | Page |
|---|---|---|
| Products and publishing | Create products from the website or the back end, import from XLSX or CSV, publish singly or in bulk | Products |
| Stock on the shop | Block or allow orders on out-of-stock products, show remaining quantity below a threshold, choose the warehouse | Products |
| Payments | Several payment providers, each with its own countries, currencies and methods | Payments |
| Shipping | Flat-rate, free, rule-based and in-store pickup methods, plus carrier connectors | Deliveries |
| B2B and B2C | Invitation-only accounts, tax-excluded display, hidden prices, pricelists | B2B and B2C |
| Abandoned carts | Optional reminder emails to customers who left contact details | Order handling |
A few details are worth knowing before you plan. On stock, the shop’s available quantity is on-hand stock minus units reserved for outgoing transfers, and quantities show on the product page only for products of type Goods or Combo. With several warehouses you pick the default one in the settings. If you let customers keep ordering out-of-stock products, you turn on Continue Selling.

On payments, you install, configure and publish a provider so customers see it at checkout; the documentation’s sidebar lists providers such as Stripe, PayPal and Mollie. A wire transfer is not confirmed automatically, and someone has to confirm the order in the back end when the money arrives. On delivery, Odoo connects to carriers including FedEx, UPS and DHL to generate labels automatically, and to aggregators such as Sendcloud and Envia.com.
On the customer side, abandoned-cart follow-up is switched on under Website, Configuration, Settings with the Follow up abandoned carts option. It only reaches customers who entered contact details or were logged in, and only for carts created after you enabled it. Customers can follow their orders in the customer portal, according to Odoo.
When to connect an external store instead
The built-in store is a sound default when the back office is the hard part: B2B pricing, stock across warehouses, invoicing, and shipping that must follow what the warehouse really holds. There are honest reasons to run a different storefront:
- You already have one that works. A live Shopify or WooCommerce store has its theme, apps, redirects, search rankings and staff habits. Moving that is a project, and it is a cost.
- The storefront is the product. If a heavily designed, marketing-driven consumer experience is your edge, compare the two storefronts side by side on your own catalogue, in a demo, before deciding. We have not benchmarked them against each other, and neither should you on a feature list alone.
- Different teams own the shop and the back office. If marketing runs the store and finance runs Odoo, a sync can be the cleaner boundary.
In that case Odoo stays the system of record for stock, invoicing and accounting, and the store sends it orders. Connectors for both platforms exist in the Odoo Apps store. On October 26, 2026, searches for Shopify and for WooCommerce listed modules from several third-party publishers, and none from Odoo S.A. A connector is a supplier you add to your stack, so choose it like one: check who maintains it, which Odoo version it supports and what exactly it syncs.
What has to sync
Whichever way you connect, five kinds of data cross the line. Decide the owner of each one in writing before anyone configures anything.
| Data | Usual owner | What to decide |
|---|---|---|
| Products and variants | Odoo | Which field matches them (usually the internal reference or SKU), and who may edit titles and prices |
| Stock levels | Odoo | Which warehouses feed the store, whether reserved stock counts, and how often the number is pushed |
| Orders | The store | How each store status maps to an Odoo quotation or sales order, and when an order is confirmed |
| Customers | Whichever created them first | How duplicates are matched (by email, usually), and how guest checkouts are handled |
| Payments and refunds | The payment provider | Which Odoo journal receives them, and how partial refunds and fees are booked |
Shipping and tracking numbers travel back the other way, from the Odoo delivery order to the store, so the customer is told what the warehouse actually did.
The usual failure points
Most failed integrations break in the same few places, and none are exotic:
- Product matching. A reference typed two ways (“AB-100” and “AB 100”) creates a duplicate product on one side. Clean the catalogue before the first sync, not after.
- Stock lag. A number pushed every few hours can sell the last unit twice. Decide how much delay the business can tolerate and what happens on an oversell.
- Taxes and rounding. Store totals and Odoo totals can differ slightly when tax is calculated per line in one system and per order in the other. Test with real baskets across your tax regions.
- Status mapping. Cancellations, partial shipments and returns are rarely tested, and they are where order states drift apart.
- Version drift. The Apps store lists each connector against a specific Odoo version. Before an upgrade, check that your connector has a release for the new one.
- No owner. When a sync fails silently, nobody notices until a customer does. Assign a person, and an alert, to watch it.
None of these is a reason to avoid integration. They are reasons to test it with real data and a few awkward orders before launch.
How to choose
Start with the built-in store if you are choosing a platform today and your hard problems are in the back office. Keep or add an external store if you already run one that earns its keep, or if the storefront is where you compete. In both cases, follow the stock: how accurate it is in the warehouse, covered in our guide to Odoo inventory management, decides how far a customer can trust what the shop shows.
Both options also depend on the work behind them: configuration, data clean-up and testing. See how we handle Odoo implementation and support, or talk to us with your catalogue and order volume and we will say which route fits.
Frequently asked questions
Is Odoo ecommerce free?
It depends on the plan and version you choose, and Odoo’s offers change. Check the pricing page for what your plan includes rather than relying on a blog post.
Does Odoo ecommerce update stock automatically?
The shop reads Odoo’s stock: available quantity is on-hand minus reserved units, and confirming an order creates the delivery order in Inventory. It is only as accurate as the moves your team books.
How does Odoo compare to Shopify?
They are shaped differently. Odoo’s store lives inside an ERP, so stock, invoicing and fulfilment share one database. Shopify is a separate storefront platform that you would connect to Odoo. The better fit depends on whether your difficulty is the back office or the storefront; compare both on your own catalogue.
Can Odoo ecommerce handle B2B and B2C?
Yes. The B2B and B2C page covers invitation-only accounts, tax-excluded prices, hidden prices for logged-out visitors and pricelists per customer.
Does Odoo recover abandoned carts?
It can send follow-up emails to customers who left contact details or were logged in, after you enable the Follow up abandoned carts setting. See the order handling page.