Skip to content

One Commerce: Shopify, WooCommerce, Amazon & REST Marketplace Connector with Stock Allocation That Stops Overselling

Shopify, WooCommerce, Amazon and any REST marketplace, with free stock split between them.

What it does

Omnichannel Connector runs Shopify, WooCommerce, Amazon and any REST marketplace you describe yourself from one place in Odoo. It splits free stock between channels by a rule you set, and each channel is offered its own share. It suits a seller whose marketplace account cannot afford an oversell. It also keeps an append-only ledger of what was sent where.

The problem it solves

You publish free stock to each channel on its own, so every channel reads the same number and passes it on. Each one is told it can sell everything you have. The moment more than one of them does, you owe stock that does not exist. On your own webshop that costs an apology and a refund. On a marketplace it is a defect-rate strike against the seller account your business relies on, and the marketplace does not care that the software did what it was told. Then there is the money. Orders sync, payouts land net of fees and refunds, and a connector that only carries orders has no way to explain the gap.

Platform
Odoo
Category
Connectors
Works with
Odoo 18 · Odoo 19
Technical name
webbox_one_commerce
Status
Published on the Odoo App Store
On the store
Odoo 19 Odoo 18
Pricing
Paid

What comes in the module

  1. 01

    What syncs, per channel

    A published table of what moves in which direction on each channel, blank cells included, matching the scope document shipped inside the module. Shopify runs on the Admin GraphQL API, WooCommerce on wc/v3, Amazon as your own SP-API application, and a no-code Generic REST channel carries seven auth schemes, with a Demo channel that needs no credentials. On a new channel every direction starts switched off.

  2. 02

    When it goes wrong, it says so

    Every unit of sync work reaches a final state. Anything that needs a person becomes a typed, deduplicated entry in one queue, with the failure count in the title and a button that opens the screen where you fix it, and resolving the entry retries the work it was blocking. An unmatched SKU raises an entry; it does not invent a product.

How it plays out day to day

  1. Every channel is told the same free stock is theirs

    There are 42 free units of one product, and each connected channel reads that same number independently.

    A rule holds 2 back as safety stock, then splits the remaining 40 by the shares you set, so 45/25/20/10 comes out as 18, 10, 8 and 4. The total can never go above what is free.

    Free stock
    42
    Safety stock
    2
    Shares
    45/25/20/10
    Allocated
    18, 10, 8 and 4

    A default you can change.

    What syncs, per channel

  2. A listing published five units and the channel says it holds two

    Most rows on Channel Listings show a drift of 0.00, which is what agreement looks like. One row does not.

    Four columns sit side by side per listing: free in Odoo, published, what the channel says, and the drift between the last two. A nightly pass compares them and files the difference as somebody's job.

    Published
    5
    Channel says
    2
    Drift on most rows
    0.00

    Figures from the module's own demo data, on a fresh install. Install the module, enable the Demo channel, and open Omnichannel then Operations then Channel Listings.

    What syncs, per channelWhen it goes wrong, it says so

  3. The payout is smaller than the order and the order does not say why

    An order total and the money that lands weeks later are different figures. None of the deductions are visible from the order itself.

    The payout is stored as a header plus its transaction lines, and the header's stated net is checked against the sum of those lines. A refund whose order never reached Odoo is named on the screen, so the gap comes with its reason.

    Behaviour of the shipped code.

    When it goes wrong, it says so

What it won't do

No OAuth 1.0a, therefore no Magento 2
Magento signs every request with an HMAC over a canonicalized parameter string. That signing takes code, and the Generic REST channel runs on configuration alone, so it cannot carry Magento.
Amazon stock is FBM only
Fulfilled-by-Amazon quantities sit in Amazon's warehouses. If we pushed our own figures for that stock, Amazon would reject them, and they would be wrong anyway.
Quick commerce runs on purchase orders only
Blinkit, Zepto and Swiggy Instamart have no public seller API. If anyone describes this as integrating with them, they are describing something we do not sell.
Nothing is posted to your general ledger
Settlements are recorded and reconciled, and they are never turned into journal entries. A connector that writes accounting entries unattended from a parsed flat file ends up corrupting the books it was meant to feed.
This is not the single-channel Shopify connector
We also publish a Shopify-only connector. They share no models and no data, and there is no migration from one to the other. Do not point both at the same store.

Common questions

Can I install this on Odoo Online?
No. Odoo Online cannot install modules that contain Python, so this runs on Odoo.sh or a self-hosted instance. Check the versions listed above for the series and edition it is verified against.
Does it integrate with Blinkit, Zepto or Swiggy Instamart?
Not as channels. None of the three publishes a public seller API, so each ships as a purchase-order import template that reads their PO format and tracks acknowledgement, despatch note, dock appointment and goods receipt. If anyone calls that integrating with Blinkit, they are describing something we do not sell.
Can it connect a Magento 2 store?
No. There is no OAuth 1.0a support here, and without it there is no Magento 2. Magento signs every request with an HMAC over a canonicalized parameter string. Producing that signature needs code, which a configured Generic REST channel cannot supply.
Does it post settlement fees into my accounts?
No. Settlements are recorded and reconciled against their own lines, and nothing is journalized. Posting accounting entries unattended from a parsed flat file is how books get corrupted, and repairing them afterwards means reversing each entry by hand.

Have something to build?

Tell us the problem. We'll come back with a plan, a price, and who would build it.

  • Free scoping call
  • Reply within 1 business day
  • No lock-in