Skip to Content

Odoo Shopify Integration: How to Connect Shopify to Odoo and Automate the Work After Checkout

Which system leads, how to take a store live in five checks, how orders, stock, refunds and payouts run in Odoo, and what to fix when a sync stops.
5 March 2026 (Updated ) by
Odoo Shopify Integration: How to Connect Shopify to Odoo and Automate the Work After Checkout
Tejas

Integration guide

An Odoo Shopify integration connects your Shopify store to Odoo, so orders, customers and payouts arrive in Odoo on their own, while stock, prices and tracking numbers go back to Shopify. Customers keep shopping in the store they know; the work after checkout moves into one system.

What does an Odoo Shopify integration do?

It keeps Shopify as the storefront and makes Odoo the place where orders are fulfilled, stock is counted, refunds are booked and payouts are reconciled, with each piece of data traveling in the direction that fits it.

Without one, the work after checkout happens twice. Sales staff key each order into Odoo, the warehouse reports every stock change back to the store, and accounting rebuilds refunds and payouts from Shopify exports. Each task is small; done for every order, it is where the errors and the long days come from.

The TeqStars Shopify Connector removes that second round. It is an Odoo app, built and supported by the team that writes it, for Odoo 17.0 to 20.0 on Odoo.sh or on-premise.

Which system leads, Shopify or Odoo?

Shopify leads the sale, Odoo leads the work after it, and the catalog can be kept on either side. Knowing which side leads tells your team where each change has to be made.

Shopify leads the sale

Orders come into Odoo together with the customers who placed them, returns requested in the store follow, and Shopify Payments sends its payout reports. Nobody types again what a shopper already entered.

Odoo leads everything after checkout

Stock levels, shipments with their tracking numbers, refunds, cancellations and, if you switch it on, the paid status are settled in Odoo and passed to Shopify, so the store shows what the warehouse and accounting have done.

The catalog works from either side

Products and variants, prices, collections and B2B catalogs can move in both directions. Choose the side your team edits: with Odoo in charge, exports carry each change to the store; with Shopify in charge, imports bring its products and prices into Odoo. The Shopify Connector page lists every object it syncs, with its direction and what sets it off.

How to connect Shopify to Odoo

Install the TeqStars Shopify app in Odoo, create an app for your store in Shopify's Dev Dashboard so Odoo gets an access token, settle three settings and run the first imports. The Shopify connector documentation explains every field of the store connection; what follows is what to have ready and what to decide first.

What to have ready

  • Odoo on Odoo.sh or on your own server, where third-party apps can be installed
  • A Shopify plan of Grow or higher, if customers should come in with names, emails and addresses
  • Access to Shopify's Dev Dashboard to create the app for your store; Odoo gets its access token from it
  • A secure HTTPS address for Odoo, if new orders should arrive the moment they are placed
  • One code per product, a SKU or a barcode, used the same way in Shopify and in Odoo

Three settings that shape everything after

How products are recognized. Odoo can match a Shopify product on its SKU, on its barcode, or on either one with the SKU tried first. Pick the code your catalog already carries and the first import fills in the products you have rather than duplicating them, which is also what makes moving over from another connector safe.

Which side owns prices. Odoo sends the prices of the pricelist chosen for the store, or each product's own sale price if you prefer that, and prices that come from Shopify are kept in that pricelist, never on the product. Decide which team edits prices, and where, before the first export.

How each payment is booked. Every Shopify payment gateway is tied to an Odoo journal, and a workflow per gateway and payment status decides how far an imported order goes on its own: confirmed, invoiced, paid. Agree on it with whoever closes the books before the first order import.

Bring the catalog in before the orders

Run the imports catalog first: products, customers, and only then orders, with listings ahead of collections. Every order then finds the product and the customer it belongs to instead of creating new ones.

Five checks to take a Shopify store live on Odoo

Most stalled go-lives trace back to the same few places: the app on the Shopify side, the locations, and a first order nobody tested end to end. These five checks cover them, in the order they come up.

  1. Create the app on the Shopify side

    Shopify Dev Dashboard · dev.shopify.com/dashboard

    Odoo needs an Admin API access token from an app installed on your store. The route depends on whether the store already has one.

    New app

    • In the Dev Dashboard, click Create app and give it a name.
    • Add the access scopes that the Odoo store form lists under Required Shopify Access Scopes; a missing scope shows up later as a permission error.
    • Paste the Shopify Redirect URL from the Odoo store form into the app, then Release it.
    • Copy the app's Client ID and Secret into the Odoo store form.

    Since January 1, 2026, Shopify no longer lets stores create new legacy custom apps in the store admin, so new apps start in the Dev Dashboard.

    Existing custom app

    A legacy custom app made in the store admin before 2026 keeps working. Tick I have API Access Token on the Odoo store form and paste the app's Admin API access token, once you have checked that it holds the scopes the form lists.

  2. Connect and confirm the store in Odoo

    Marketplaces › Configuration › Instance

    • Enter the Shopify Shop URL, the address that ends in .myshopify.com.
    • For a new app, click Generate Access Token: Shopify asks you to install the app and sends the token back to Odoo.
    • Click Test Connection, then Confirm. Confirming compares the granted scopes with the required ones and imports your Shopify locations and sales channels.
  3. Map each Shopify location to Odoo stock

    Marketplaces › Shopify › Configuration › Locations

    • Give each location a Warehouse for its orders, an Import Stock Location, and one or more Export Stock Location entries whose quantities are added up for Shopify.
    • Turn on Enable Import/Export Stock? for every location that should sync; with none enabled, stock operations stop with a message.

    Shopify does not accept stock from Odoo for third-party fulfillment locations, so leave those out of the export.

  4. Run one test order end to end

    Shopify checkout · Odoo Sales and Inventory

    • Place an order in the store and import it, or let the order webhook bring it in. Check that the workflow for its payment gateway confirmed, invoiced and paid it the way accounting agreed.
    • Validate the delivery with a tracking number, click Update in Marketplace, and check the fulfillment and the tracking link on the Shopify order.
  5. Test the money side before go-live

    Odoo Accounting · Shopify Payments

    • Post a credit note for the test order and click Refund in Shopify; the refund should appear on the Shopify order.
    • Import a Shopify Payments payout, post it to the payout journal and reconcile it against the bank.

    When the test order, its refund and a payout agree between Shopify and Odoo, the store is ready for real orders.

What happens to a Shopify order in Odoo?

It becomes an Odoo sales order with every line, the shipping charge, discounts and taxes, and the payment workflow you chose moves it on from there. If Shopify has already fulfilled it, Odoo only books the stock move, so nothing ships twice.

  1. Placed in Shopify

    The shopper checks out, and Shopify records the payment gateway and the payment status.

  2. Imported into Odoo

    A store update or a scheduled import brings the order in; the workflow for its gateway and status confirms, invoices and pays it.

  3. Shipped from Odoo

    The warehouse validates the delivery, and Update in Marketplace sends the fulfillment and tracking number to Shopify.

  4. Paid out and matched

    The Shopify Payments payout arrives in Odoo, and its charge lines are matched with the order's invoice.

From then on the warehouse works the order in Odoo like any other. When the parcel leaves, Update in Marketplace marks it fulfilled in Shopify with its tracking number, and the shopper can follow the delivery. Pickup orders move to Ready for Pickup and then to Picked up in the same way.

Keep Shopify where your customers shop. Run the business behind it in Odoo.

Which Shopify order details does Odoo keep?

Everything a Shopify order carries lands somewhere specific in Odoo, including the lines that are not products. Each store record names the products used for those lines, so accounting can report on them.

On the Shopify orderIn Odoo
Shipping linesA delivery line, with the carrier matched by name or Shopify carrier code, or created when missing
DiscountsA discount percentage on each order line, so totals match Shopify
TaxesOdoo's product taxes, or Shopify's own tax lines with or without fiscal positions, as the store's Tax System says
Duties and gift cardsLines on the store's Duties Product and Gift Card Product
Custom items without a variantThe store's custom product, a storable one when the item needs shipping
Shopify POS orders without a customerThe store's Default POS Customer, with POS kept as the order's source
Local pickupReady for pickup, then picked up, both sent back from Odoo
Another currencyThe currency the shopper paid in, with a pricelist per currency
Medium or high fraud riskStored on the order with a to-do activity; the workflow leaves the order for a person

Stock you can trust on both sides

Odoo counts the stock and Shopify shows it. Quantities leave Odoo on your schedule or the moment they change, location by location: each Shopify location is tied to an Odoo warehouse, so a store that ships from two places sells what each one really holds.

When a store is first connected, its Shopify quantities can be imported once, so both systems start from the same numbers.

Which figure Shopify sees is set per store in Stock Based On: quantity on hand, forecasted quantity, or free to use, which is on hand minus what is already reserved. Negative figures go out as zero, kit products count from their components, and turning on Real-Time Inventory Sync to Shopify? sends a change as soon as a stock move is confirmed, reserved, cancelled or done. Products tracked by lot or serial number are left out of the stock import, so their first count is set in Odoo.

Refunds, cancellations and returns start in Odoo

A refund starts as a credit note in Odoo. Once it is posted, Refund in Shopify sends the same amount to the store, so the books and the shopper's refund agree.

Cancelling runs the same way round: cancel the sales order in Odoo, then confirm the cancellation for Shopify with a reason, and decide whether the customer gets an email.

Returns reach Odoo from the store by date, on a schedule or as they happen. Closing one puts back in stock what Shopify said should go back, and nothing more.

Restocking more than Shopify asked

Force Restock also returns the other lines to stock in Odoo, and from then on the two systems show different quantities until one of them is corrected.

Shopify Payments payouts, reconciled in Odoo

Each payout arrives as one record with a line for every charge, refund and fee. Posting it fills a bank statement in the journal you chose; Auto Reconcile then clears charges and refunds against their invoices and books fees and other lines where your mapping sends them. Accounting sees the same money the bank does, line by line.

Auto Reconcile needs Odoo Enterprise with its full Accounting app; on Odoo Community the payout still arrives line by line, and the lines are matched by hand.

Several stores, currencies and B2B catalogs

One Odoo database can run several Shopify stores, in several currencies, for consumers and businesses alike. Each part keeps its own settings.

Several Shopify stores

Each store gets its own record in Odoo, with its own company, warehouse, schedules and live updates, so orders never mix.

Markets and currencies

Orders keep the currency the shopper paid in, with a pricelist per currency, and Shopify market catalogs can be imported.

B2B catalogs

Catalogs for company locations come into Odoo, and their quantity rules (minimum, maximum, increment) and volume pricing go back.

Kits and warehouses

Kit products ship and count from their components, and each order line follows the warehouse mapped to its Shopify location.

Why are Shopify orders not importing into Odoo?

When an order, a stock figure or a refund does not arrive, the cause is almost always a setting, and the log names it. Every import writes its errors to Marketplaces › Queues › Logs, and a failed line is retried without holding up the rest of the queue.

What you seeLikely causeFix
An order is missing, and the log says "Financial Workflow Configuration not found"No workflow row for that payment gateway and payment statusAdd the row on the store's Workflow tab, or one for any status, and import again
Older or some orders never arriveThey fall before Import Order After, or their fulfillment status is not in Shopify Fulfillment StatusWiden the date or the statuses, or import the orders by their Shopify ID
New orders arrive only on the scheduleThe order webhooks are not active, or Odoo is not on HTTPSActivate them on the Webhook tab over HTTPS, and again after resetting the store to draft
Permission errors during a syncThe Shopify app lacks some access scopesAdd the scopes the store form lists and release the app again
Products are duplicated on importSKUs or barcodes differ between the two sidesAlign the codes and set Sync Listings Based On before the first import
Stock does not change in ShopifyThe location is not enabled, the product is not tracked, or the location belongs to a third partyCheck Enable Import/Export Stock?, the export locations and the product's Track Quantity
A price stays old in ShopifyThe price is zero in the store's pricelistZero prices are never exported; set the price, then export again
Customer names and emails are emptyThe store is on Shopify BasicCustom apps get customer details from the Grow plan up
A Shopify refund creates no credit noteNo posted invoice, several invoices, or totals that differ from ShopifyCorrect the invoice, then import the order again

How real Shopify stores run on Odoo

These customers use the connector every day, and each approved the story before it was published:

When is Odoo Shopify integration worth it?

A good fit when

  • Your team copies Shopify orders, tracking or stock by hand every day
  • Odoo already runs your inventory, purchasing or accounting
  • You sell through more than one Shopify store or location
  • Refunds and payouts have to match your books
  • You sell in several currencies or through Shopify POS

Look at it again when

  • Your database runs on Odoo Online, which cannot install apps
  • Your store is on Shopify Basic and you need customer import
  • Shopify, not Odoo, is meant to keep the stock figures
  • Customers created in Odoo must appear in Shopify: customers only move from Shopify to Odoo
  • You run Odoo Community and want payouts reconciled automatically

Frequently asked questions

Does Odoo integrate with Shopify?

Yes. Odoo has no built-in Shopify sync, so stores connect through an app such as the TeqStars Shopify Connector. It imports Shopify orders, customers and payouts into Odoo and sends stock, prices, tracking and refunds back. It is made for Odoo 17.0 to 20.0, on Odoo.sh or on your own server.

Do I need middleware to connect Shopify and Odoo?

No. The TeqStars Shopify Connector runs inside Odoo and talks to Shopify directly, through a custom app you create for your store. Scheduled jobs and live store updates move the data, so there is no extra service in between to host or to monitor.

How do I automate the work between Shopify and Odoo?

Connect the store once, then let two things run: scheduled jobs that import orders, customers and payouts and export stock and prices at the times you choose, and live store updates that bring new orders, product changes and returns in as they happen. Shipping updates, refunds and cancellations go back from the order in Odoo.

How does inventory sync between Odoo and Shopify?

Odoo is the stock source. Quantities are exported to Shopify on the schedule you set or when stock changes in Odoo, per store location mapped to an Odoo warehouse. Shopify quantities can also be imported on demand, for example when you first connect a store.

Can Odoo handle Shopify B2B orders and price lists?

Yes. Shopify market catalogs can be imported into Odoo, with their quantity rules and volume pricing sent back, and B2B orders come in like any other order. The Spanish scooter parts retailer in the stories above books both its B2B and its B2C Shopify orders in Odoo.

What does Odoo add behind a Shopify store?

Shopify runs the storefront and the checkout. Odoo runs the rest of the company in one database: purchasing, stock across warehouses, shipping, invoicing and accounting. With the integration, each Shopify sale becomes work in those Odoo apps without being typed again.

Does the TeqStars Shopify Connector use Shopify's GraphQL API?

Yes. It reads and writes products, orders, stock, returns and payouts through Shopify's GraphQL Admin API, version 2026-07 in its current release for Odoo 19. Shopify has called its REST Admin API legacy since October 1, 2024, and new features arrive in GraphQL first.

How do Shopify POS orders show up in Odoo?

As sales orders, like web orders, with POS kept as their source. A counter sale without a customer is booked on the store's Default POS Customer, so walk-in sales still reach stock, invoicing and the payout match.

Share this post