Skip to main content

Shopee Store Management

This is the installation and configuration guide for Shopee Store Management, the module you downloaded from your ECOSIRE dashboard. Everything on this page describes the shopee_store_management module exactly as it ships today — the facts below were read out of the released build, not from a roadmap.

Technical nameshopee_store_management
Odoo versions17.0, 18.0, 19.0 (Community or Enterprise)
Published version (what you download today)17.0 → 17.0.2.0.2, 18.0 → 18.0.2.0.2, 19.0 → 19.0.2.1.3. The 2.2.x notes below describe the next release, built and tested but not yet published
Current build (2.2.3 release)17.0 → 17.0.2.2.3, 18.0 → 18.0.2.2.3, 19.0 → 19.0.2.2.3
Price$549 USD — one-time, per Odoo version
Odoo module licenceOPL-1
CategoryConnector
What changed in 2.2.3

Connector fixes plus a dashboard accessibility and state pass.

  • Single-item imports are now scoped to their shop. 2.2.2 scoped the bulk product sync to the owning shop, but importing one item at a time (the Import this item button, the import wizard and the queue worker) still looked the product up across all your shops, so an item from shop B could overwrite shop A's product name, price and description. Both paths now match the same way — item id, then SKU, then barcode — always inside the importing shop, and the product records the shop it came from, so re-importing an item updates it instead of creating a duplicate.
  • A failed Shopee read is reported as a failure, not as "nothing to import". An expired token, a network error or a Shopee error used to finish the sync as a success with 0 records, and a failed order-detail page imported bare orders with no buyer or lines. The run is now marked failed and shows Shopee's own reason.
  • Customer sync explains why it imports nothing. Shopee publishes no customer list; buyers arrive with their orders through Sync Orders. The customer sync now says so instead of reporting an empty success, the dashboard's Sync Now skips that step with a short notice (products and orders still sync), new connections start with Sync Customers off, and a scheduled customer sync left on is skipped with the same explanation.
  • The automation rule's "Create Invoice: On Delivery" policy now works. It was stored but ignored, so orders were invoiced at confirmation either way. With On Delivery the invoice is created once every delivery of the order is done.
  • Verified webhook deliveries are recorded. Each signed push is logged with its payload and counted on its webhook (Delivery Count, Last Delivery). Unsigned pushes are still rejected and leave no record.
  • Test Connection keeps its failure on the record, so a refused connection no longer still reads "Connected"; it is shown as a red notification.
  • The dashboard now meets WCAG 2.2 AA in light, mobile and dark mode, and dark mode actually applies on Odoo 19. Screen readers are told when the dashboard is loading and when a load failed.
  • Loading, "unavailable" and "no data" are three different states. The tiles show a dash until a load has succeeded, instead of "0 orders, 100% sync health" after a failure, and a labelled spinner covers the body while loading.
  • A failed load is visible and recoverable. The error message and its Retry button sit directly under the header instead of below the fold.
  • The Order Status chart draws, both charts show an explicit empty state, four icons that rendered as blank gaps are fixed, and the store-name chip no longer breaks on a phone screen.
  • The unused Seller Chat client methods were removed; they were never used by the module.
What changed in 2.2.2

Hardened against 36 real-world failure cases, each covered by an automated test.

  • Two shops can no longer overwrite each other's records. A Shopee item id, order number and buyer id are unique inside one shop, not across your shops. The bulk product sync, orders and contacts are now scoped to the shop that owns them (single-item product imports from 2.2.3), and every imported record keeps the shop it came from.
  • Honest counters and completion times. "Total Products Synced" no longer inflates on every re-sync, and "Last Product Sync" (and the other completion times) are now stamped on a successful run only — never on a partial or failed one.
  • Orders keep their money facts. Shopee's own currency, the shipping fee, the platform-, seller- and co-funded discounts (as separate amounts), the payment channel and the buyer handle are all recorded. A cross-currency order with no exchange rate is refused instead of being booked at 1:1.
  • Product sync reads the whole catalogue, not only the first page.
  • Sync Frequency is honoured. The scheduled syncs now skip a shop whose chosen interval has not elapsed; Manual or an unset value means "run on the schedule".
  • The dashboard opens for every shop — a shop set to a 15- or 30-minute or daily sync previously could not open it — and says which of three states it is in (no shop connected, connection error, ready).
  • Test Connection proves the connection against Shopee's get_shop_info and reports Shopee's own reason on failure.
  • Clear answers where Shopee publishes no API. Affiliate commissions and creator/live-media refresh return an explicit explanation and send nothing.
  • Imported Products / Customers / Orders open the module's own Shopee lists, and Shopee evidence is visible on the standard Order, Product and Contact forms.

Each Odoo major version is a separate product and a separate purchase — buy the build for the version you actually run.

Requirements​

RequirementDetail
Odoo17.0, 18.0 or 19.0, Community or Enterprise. Self-hosted or Odoo.sh — Odoo Online (SaaS) cannot install third-party modules
Odoo appsbase, sale_management, stock, account, delivery, mail, web, product, contacts — Odoo installs any that are missing
Python packagesrequests
Platform accountA Shopee account with API access

Install the Python packages into the same interpreter that runs Odoo:

sudo -u odoo pip install requests

Installation​

1. Download the ZIP for your Odoo version​

Sign in at ecosire.com and open your dashboard downloads, or use the ZIP you received from the Odoo App Store.

2. Extract into your addons path​

unzip shopee_store_management_v19_*.zip -d /opt/odoo/addons/
ls /opt/odoo/addons/shopee_store_management/__manifest__.py # sanity check

The module must end up as a single top-level shopee_store_management/ directory with __manifest__.py directly inside it. If your ls check fails, the folder landed one level too deep or too shallow — move it so the path above resolves.

3. Restart Odoo and install​

sudo systemctl restart odoo
  1. Go to Apps and click Update Apps List (developer mode must be on).
  2. Search for Shopee Store Management and click Install.
  3. Odoo pulls in the Odoo apps listed above automatically.

When the install finishes, a Shopee menu appears in the main Odoo app switcher.

Licensing​

shopee_store_management installs and runs standalone on Odoo 17, 18 and 19 -- there is no separate ECOSIRE dependency to install first, no key to enter and nothing to switch on afterward. Your use of the module is governed by the OPL-1 licence.

Configuration​

Connect to Shopee — step by step​

This section was rewritten on 17 September 2026 from a fresh installation of the current Odoo 19 build (19.0.2.2.0) and from Shopee Open Platform's own Developer account registration, App management and Authorization and Authentication guides as they read on that date (last updated by Shopee on 10 September, 24 April and 23 July 2026 respectively). It has two halves: what you do on Shopee Open Platform, then what you do in Odoo.

The shop is authorized from Odoo, and the token renews itself

Shopee issues an access token that lasts 4 hours and a refresh token that lasts 30 days, and expects the connected system to renew the access token before it expires. From 19.0.2.2.0 (and 2.2.1 on Odoo 17 and 18) the configuration form carries an Authorize with Shopee button that opens Shopee's own consent page and brings the shop back to Odoo with its tokens, and the scheduled action shopee: Refresh Access Tokens renews the access token every 3 hours and stores the new refresh token Shopee returns each time. You never copy a token by hand. On 19.0.2.1.3 and earlier, and on Odoo 17 and 18 builds before 2.2.1, the pair had to be obtained outside Odoo and could not be renewed — upgrade the module.

Half A — Shopee Open Platform​

Shopee's developer console is Shopee Open Platform: https://open.shopee.com (Brazil: open.shopee.com.br; mainland China: open.shopee.cn). The Console link at the top of that site opens the App List.

A1. Register a developer account. On the Open Platform homepage select Log In → Sign up, enter an email (it cannot be changed later), confirm the verification code and set a password. Then open Console → App Management → App List and choose your account type:

You areChooseNote
A company selling on Shopee, connecting your own shopShopee Seller → Registered Business SellerYou are redirected to log in with your Seller Centre account to verify it, then fill the seller identification form (Key Account Manager email may be left blank)
An individual selling on ShopeeShopee Seller → Individual SellerSame flow; identification documents required
A software vendor serving other sellersThird-party Partner Platform (ISV)Business documents and a live product URL required

Shopee processes seller applications in 3 working days (7 in Indonesia) and ISV applications in 10. Approval arrives by email. Shopee also applies per-market eligibility rules to seller accounts — for example Thailand currently requires a Mall or Managed seller, Malaysia a Mall, registered business or recently active seller — so check the Eligibility Criteria table on Shopee's registration page for your market before applying.

A2. Create the app. Once approved, open Console → Create App. Under Basic Information set the App Type to Seller In-house System (the type a seller uses for its own shop; it has every v2 API including chat), the App Name, a description and a logo. Creating the app gives you a Test Partner ID and Test Key — those work only in Shopee's sandbox, not against your live shop.

A3. Go live. Select the app in the App List and click Go Live, fill in the Go Live form (it includes a declaration of the IT assets and IP addresses your Odoo server calls Shopee from), and submit. Shopee reviews it in about 24 hours. Once the app is Online, the App Key section of the app shows the Live Partner_id and Live Key — the pair the Odoo form needs.

A4. Set the Redirect URL Domain. Edit the app and fill the Live Redirect URL Domain (and, if you will use the sandbox, the Test Redirect URL Domain) with the domain of your Odoo instance — for example erp.example.com. Shopee validates the redirect address in every authorization link against this domain. If the field is empty Shopee does not validate it, but fill it: an unvalidated redirect is a security gap.

A5. That is all on the Shopee side. The shop itself is authorized from Odoo in Half B: the Authorize with Shopee button builds Shopee's current (unsigned) authorization link for you —

https://open.shopee.com/auth?partner_id=<Live Partner_id>&auth_type=seller&redirect_uri=https://<your-odoo-host>/shopee/callback&response_type=code&state=<one-time value>

— sends the seller to Shopee's consent page, and receives the result on https://<your-odoo-host>/shopee/callback. That callback address is why A4 matters: its domain must be the Live Redirect URL Domain you declared. (Brazil shops are sent to open.shopee.com.br; a configuration in Sandbox Mode to open.sandbox.test-stable.shopee.com.)

A6. The seller can revoke at any time in Seller Centre → Platform Partner, where every authorized app is listed with its expiry (7 to 365 days, chosen by the seller during authorization). When the period ends, or after a revocation, the connector reports Error with a message that says to re-authorize — click Re-authorize on the configuration (B3).

Half B — Odoo (19.0.2.2.0)​

Sign in as a user who is a Shopee Manager (Settings → Users → the user → Shopee access field). Managers see the Configuration and Operations menus.

B1. Open the configuration list. From the Odoo apps menu open Shopee, then Configuration → Settings, and click New. One record is one shop.

B2. Fill the Connection group.

FieldValue
Configuration NameAny name, e.g. the shop's trading name
Partner IDThe Live Partner_id from Open Platform (A3) — shown to Odoo administrators only
Partner KeyThe Live Key from Open Platform (A3) — administrators only
Shop IDLeave empty — filled by Shopee when you authorize in B3 (administrators can see it afterwards)
Access Token / Refresh TokenLeave empty — stored by the authorization in B3 and renewed automatically; administrators only
RegionThe market the shop sells in: Singapore, Malaysia, Thailand, Taiwan, Indonesia, Vietnam, Philippines, Brazil, Mexico, Colombia, Chile or Poland
Multi-RegionLeave off for a single-market shop
Timeout (seconds)Leave at 30
Company (in the Status group)The Odoo company that owns this shop's orders and stock

Shopee URL can stay empty — the build calls partner.shopeemobile.com for every region.

B3. Save, then click Authorize with Shopee in the form header. A new tab opens on Shopee's authorization page: sign in with the shop account (not a sub-account — sub-accounts cannot log in to the authorization page), enter the verification code Shopee sends to the shop's phone, click Confirm Authorization and choose the authorization period (7, 30, 90, 180 or 365 days, or a custom date within 365 days). Shopee then sends the browser back to your Odoo instance, which exchanges the one-time code for the tokens, stores them with the shop's id and name, and shows Shopee shop connected. Close that tab and reload the configuration: Authorized is ticked, Shop Name and Access Token Expires are filled, Connection Status is Connected, and the header button now reads Re-authorize.

The link Odoo opens is valid for 10 minutes and can be used once; if Shopee's page reports an invalid or expired state, click the button again. A main account that authorizes several shops is accepted too — the configuration takes the first shop in the list, and one configuration is one shop, so authorize each shop with its own record.

Test Connection calls Shopee's Get Shop Info with the stored token and stamps Last Connection Test; Operations → Test Connection runs the same check as a wizard, without saving anything. Refresh Token renews the 4-hour access token on the spot — the scheduled action shopee: Refresh Access Tokens does the same every 3 hours, so you only need it after a long Odoo outage. If Connection Error Message says Shopee rejected the refresh token, the seller's authorization period has ended or the app was revoked in Seller Centre: click Re-authorize.

B4. Choose what synchronizes — the Synchronization tab. Data Types (Sync Products, Sync Orders, Sync Customers, Sync Inventory) decide which areas the connector may touch; Automation (Auto Sync Products, Auto Sync Orders, Auto Sync Customers, and Sync Frequency) decides which scheduled actions pick this shop up. The automation switches are off by default. Shopee publishes no customer list in its Open Platform v2 API: buyers arrive with their orders, so Sync Orders creates and updates them. From 2.2.3 Sync Customers says exactly that instead of finishing with nothing imported.

B5. First synchronization. Click Sync Products and Sync Orders in the header, or use Operations → Import Wizard for a guided run with a preview. Imported products appear under Products (and Shopee Products for the Shopee-side records), orders under Orders.

B6. Where errors show. Connection Status / Connection Error Message on the configuration; Operations → Logs for one line per run with counts and the provider message; Operations → Daily Digests for the daily summary; the Statistics tab for last-sync times and totals.

Single-region and multi-region shops (Odoo 19)​

The Multi-Region toggle is on the configuration form from 19.0.2.1.1 and is enforced, not decorative. A configuration with Multi-Region off refuses auto-workflow and warehouse rows that belong to any other region, so a single-market shop cannot silently accumulate routing rules for markets it does not sell in. Switch it on before adding rows for a second market.

Public endpoint: the webhook receiver​

The module registers one publicly reachable HTTP route. It is the only endpoint on this module served without an Odoo login, so it is worth knowing exactly what it does before you expose your instance.

EndpointMethodAuthPurpose
/shopee/webhookPOSTpublic (no Odoo session)Receives inbound Shopee event deliveries

Register this URL as your Push URL in the Shopee Open Platform console, in the form https://erp.example.com/shopee/webhook — substituting the real host you set in web.base.url.

Shopee Open Platform v2 signs each push with your Partner Key: the Authorization header carries HMAC-SHA256(partner_key, "<push url>|<raw body>") as a hex digest. The receiver recomputes exactly that and compares it in constant time. The key it uses is the Partner Key (partner_key) from the linked shopee.configuration, falling back to the Secret Key on the webhook record itself.

The webhook record's Delivery URL must match your Push URL exactly

Shopee mixes the push URL into the signed string, so a mismatch of even one character makes every delivery fail verification. When you create a shopee.webhook record and leave Delivery URL empty, Odoo fills in a default of <web.base.url>/shopee/webhook/<topic> — note the extra topic segment, which is not the URL the route is served at. Set Delivery URL by hand to the exact Push URL you registered in the Shopee console.

A delivery is acknowledged ({"status": "success"}) only after an active webhook record verifies it. Anything unverified — no partner key configured, missing Authorization header, or a digest mismatch — is rejected with HTTP 403 and nothing is processed. The rejection is logged with the caller's IP.

From 2.2.3 every verified delivery is also recorded on its webhook record — the payload in the delivery log, plus Delivery Count and Last Delivery — for audit. A push does not create or change orders or products; those arrive through the scheduled and manual imports.

Pausing a receiver (Odoo 19). The webhook record's Activate/Pause control is a real local switch from 19.0.2.1.1: a paused record stops accepting deliveries on the Odoo endpoint, so you can stop ingesting without touching the Shopee console. It is deliberately local-only — Shopee-side push subscriptions are configured in Seller Center and cannot be toggled remotely through the API.

The module's remaining routes — /shopee/api/status, /shopee/api/sync and /shopee/dashboard/data — are internal JSON-RPC endpoints used by the module's own screens. They require a logged-in Odoo user and are not part of your external setup.

Endpoints you wire up​

EndpointMethodAuthPurpose
/shopee/callbackGETpublic (no Odoo session)OAuth redirect target for Shopee seller authorization -- exchanges the authorization code for the shop's access and refresh tokens and shows a plain result page

Set this address as the Redirect URL for your Shopee Open Platform app (Half A, step A4 above) -- for example https://erp.example.com/shopee/callback. Shopee redirects the seller's browser here after they approve the authorization request, with a one-time code and the shop_id in the query string; the route consumes a matching, single-use authorization state before it exchanges the code, so a stale or replayed callback is rejected rather than acted on.

Scheduled actions​

The module installs 7 scheduled actions (Settings → Technical → Scheduled Actions):

Scheduled actionRuns everyEnabled on install
shopee: Refresh Access Tokens3 hoursYes — renews every authorized shop's 4-hour access token and stores the new refresh token
shopee: Sync Products1 hourYes
shopee: Sync Orders30 minutesYes
shopee: Sync Customers6 hoursYes — picks up only shops with Auto Sync Customers on; Shopee has no customer list API, so from 2.2.3 it reports that and buyers come in with Sync Orders
shopee: Sync Inventory15 minutesYes — from 2.2.1 pushes the on-hand quantity of each stock-tracked product matched to a Shopee item (Odoo is the stock master)
shopee: Test Connection1 dayYes
shopee: Cleanup Old Logs1 dayYes

Intervals above are the shipped defaults. Adjust them to your volume — but be aware that the platform, not Odoo, sets the API rate limits, and shortening a sync interval is the usual cause of throttling errors in the logs.

From 19.0.2.2.2 (and 2.2.2 on Odoo 17 and 18) each shop's own Sync Frequency is honoured by the scheduled product, order, customer and inventory syncs: a shop whose chosen interval has not elapsed since its last successful sync is skipped on that run. Manual or an unset value means the shop simply follows the scheduled action's own interval, so a setting can never silence a shop.

The import wizard's Sync Frequency field takes effect from 19.0.2.1.1: choosing anything other than Manual persists that cadence and switches on the matching auto-sync flags on the configuration when the import runs. Leave it on Manual to change nothing.

Using the module​

The module's menu is laid out as:

  • Shopee → Dashboard
  • Shopee → Shopee Orders
  • Shopee → Orders
  • Shopee → Products
  • Shopee → Shopee Products
  • Shopee → Customers
  • Shopee → Shopee Customers
  • Shopee → Finance — Settlements, Refunds, Returns, Risk Flags
  • Shopee → Analytics
  • Shopee → Operations — Import Wizard, Export Wizard, Mapping Wizard, Test Connection, Logs, Reports, Daily Digests
  • Shopee → Configuration — Settings, Master Data

A normal first run is:

  1. Save the connection record and confirm the module reports a successful connection before importing anything.
  2. Review the mapping records so imported data lands on the right Odoo records.
  3. Run a small import first — use the import limit to take a handful of products (orders are read from the last 14 days) — and check the results before letting the scheduled actions take over.
  4. Watch the log records during the first full sync. Failures are recorded there rather than raised at the user.

Shopee Orders has a kanban view grouped by status from 19.0.2.1.1, alongside the list and form views.

Importing products​

Product synchronization pulls your Shopee catalogue through Shopee's item list and hydrates each item with its base info, so a sync returns fully populated products rather than bare ids. Queue lines of type product import that single Shopee item by id — before 19.0.2.1.1 a per-record product line reported a not-implemented error and did nothing.

Exporting products, prices, images and stock​

The Export Wizard pushes Odoo data to Shopee, and every option on it takes effect from 19.0.2.1.1:

OptionWhat it does
Export LimitCaps how many products the run pushes
Update ExistingUpdates products already mapped to a Shopee item (update_item / update_price)
Create MissingCreates unmapped products on Shopee (add_item)
Include ImagesUploads product images to Shopee MediaSpace
Include VariantsPushes per-variant prices, matched to Shopee models by SKU

On-hand stock is pushed with the same run (update_stock).

Barcodes are checked before export

Run Barcode Preflight first. The action is available on Odoo products and on the Shopee shadow items, and validates that a barcode is a structurally valid GTIN-8, GTIN-12, GTIN-13 or GTIN-14. The export wizard refuses to push a product whose barcode has not passed preflight — that is deliberate, because Shopee rejects a malformed barcode at listing time and the failure is much harder to read from the far side.

Invoicing imported orders​

The auto-workflow's Validate Payment toggle takes effect from 19.0.2.1.1: with it on, the posted invoice of an imported order is marked paid through a registered payment, so a Shopee order that arrives already paid does not sit in your receivables.

Dashboard​

The OWL 2 dashboard shows KPI tiles with period-over-period deltas, a sales-trend line chart, an order-status doughnut, an activity feed of recent sync log entries, quick actions and a status footer.

From 19.0.2.1.1:

  • The sales-trend chart counts Shopee orders only. It previously aggregated every sale order in the database into the daily series, so the chart overstated Shopee performance on any database that also sells elsewhere.
  • KPIs and chart tooltips are formatted in the record's own currency as reported by the server, instead of a hardcoded dollar sign.
  • Dashboard queries are bounded, and opening the dashboard is the only action that creates its record — refreshing the data does not write anything.

From 19.0.2.2.2:

  • The dashboard opens for every shop. Earlier 2.2.x builds could not open it at all for a shop whose Sync Frequency was 15 or 30 minutes or daily.
  • The status footer names one of three states — no shop connected, connection error, ready — instead of showing zeroes for all three, and it follows the connection: a shop that reconnects or breaks is reflected without pressing Refresh.
  • Counters describe what is linked right now, and the completion times are those of the last successful sync.

Troubleshooting​

Syncing​

SymptomCause and fix
The requests library is requiredrequests is missing from Odoo's Python environment. Install it into the interpreter that runs Odoo.
The connection will not validateRe-check the Partner ID and Partner Key, then click Authorize with Shopee again. Most failures are a mistyped key, or credentials created for a sandbox while the module points at production (or vice-versa).
Shopee rejected the refresh token in Connection Error MessageThe seller's authorization period ended, or the app was revoked in Seller Centre → Platform Partner. Click Re-authorize on the configuration.
Shopee's page says the redirect domain does not matchThe domain of your Odoo instance (web.base.url) is not the Live Redirect URL Domain declared on the app in Open Platform (A4). Fix the domain there, then click Authorize with Shopee again.
Shopee's page says the state is invalid or expiredThe authorization link is single-use and valid for 10 minutes. Go back to the configuration and click Authorize with Shopee for a fresh link.
'ShopeeAPI' object has no attribute 'get_products'An Odoo 19 build older than 19.0.2.1.1. Upgrade the module; product sync is implemented from that release.
Nothing syncs even though the connection is fineThe scheduled actions are disabled at the Odoo level, or Odoo's cron worker is not running. Check Settings → Technical → Scheduled Actions and that --max-cron-threads is greater than zero.
Sync starts then stops part-wayRead the module's log records for that run. Rate limiting and rejected field values are the two common causes; both are logged with the platform's own error text.
The export wizard skips a productIts barcode has not passed Barcode Preflight, or it is not a valid GTIN. Fix the barcode and re-run preflight.
Records import but map to the wrong Odoo valuesFix the mapping records under the module's configuration, then re-run the import.
Duplicated products or customersRun the initial import once. If a first attempt half-finished, check the existing records before re-running rather than importing on top.
The dashboard sales chart looks too highAn Odoo 19 build older than 19.0.2.1.1 counted every sale order in the database, not just Shopee's. Upgrade.
An imported order is refused with a message about a missing exchange rateFrom 2.2.2 a cross-currency order is not booked at 1:1. Add the rate for the order's currency under Accounting → Configuration → Currencies and re-run the order sync.
A second shop's import changed the first shop's products or pricesBuilds before 2.2.2 matched on the Shopee item id alone, which is unique per shop. Upgrade; from 2.2.2 the bulk product sync, orders and contacts are scoped to their shop, and from 2.2.3 single-item product imports are too.
The dashboard will not open for one shopBuilds before 2.2.2 failed for a shop set to a 15- or 30-minute or daily Sync Frequency. Upgrade.

What changed in 19.0.2.2.2​

Hardened against 36 known real-world failure cases, each covered by an automated test (57 tests in total), on the Odoo 17, 18 and 19 builds alike.

Fixed. Two shops can no longer overwrite each other's records: products, orders and contacts are matched inside the shop that owns them and record that shop. The sync counters no longer inflate on every re-sync, and Last Product Sync and the other completion times — never written by earlier builds — are stamped on a successful run only. Orders keep Shopee's own currency, the shipping fee, the platform-, seller- and co-funded discounts as separate amounts, the payment channel and the buyer handle; a cross-currency order with no exchange rate is refused rather than booked at 1:1. Product sync follows Shopee's paging to the end of the catalogue and stops safely if the platform stops advancing. A failed record names the Shopee order it failed on. Imported Products / Customers / Orders open the module's own Shopee lists. The scheduled syncs honour each shop's Sync Frequency, and the dashboard opens for every shop whatever that setting is.

Added. Test Connection calls Shopee's authenticated get_shop_info operation and reports Shopee's own reason on failure. Affiliate commissions and creator/live-media refresh — which have no Shopee Open Platform v2 operation — return an explicit explanation and send nothing. Per-region daily analytics keep their source currency beside an explicitly converted company-currency figure, settlement lines distinguish refunds and rewards from fees and carry the settlement's currency, and the dashboard names which of three states it is in. Shopee evidence (order number, shipping fee, discounts, payment channel) is visible on the standard Order, Product and Contact forms.

What changed in 19.0.2.2.1​

Dashboard and sync endpoints respect company boundaries. In a database with more than one company, the dashboard and the status and sync endpoints work only with the connections of the companies you are currently working in, and a connection of another company is refused without returning anything about it. Starting a sync requires the Shopee Manager group; Shopee Users keep their read access. The Test Connection wizard tests the credentials you type and saves nothing. Buyers are created and matched by the order import, so a buyer is never filed twice. shopee: Sync Inventory pushes the on-hand quantity of each stock-tracked product to its Shopee listing. The Odoo 17 and 18 builds are level with Odoo 19, including Authorize with Shopee and automatic token renewal.

What changed in 19.0.2.2.0​

The shop is authorized from Odoo. The configuration form has an Authorize with Shopee button (then Re-authorize) for Shopee Managers. It opens Shopee's own consent page and Shopee sends the seller back to your Odoo instance, which exchanges the one-time code for the access and refresh tokens, records the shop id and name, and marks the configuration Connected. Nothing is copied by hand any more, and Shop ID no longer has to be known before the first connection.

The access token renews itself. Shopee access tokens last 4 hours and every renewal returns a new refresh token. The scheduled action shopee: Refresh Access Tokens runs every 3 hours, renews each connected shop's token before it expires and stores the rotated refresh token. A Refresh Token button does the same on demand. If Shopee answers a sync with an expired-token error, the connector renews the token and retries that call once before reporting anything. When the seller's authorization period ends, the configuration turns to Error with a message that says to re-authorize.

What changed in 19.0.2.1.2 and 19.0.2.1.3​

Shopee Orders and Imported Orders open correctly (2.1.2). On earlier 19.0 builds these menus could fail to open with an Unknown field "order_sn" error in the browser. Two sets of views had been registered under the same internal identifiers, so the Orders action loaded the wrong search layout. The views now use distinct identifiers and both menus open normally. If you saw that error, upgrade the module — no data was affected and nothing needs re-importing.

Product synchronisation works again (2.1.1). Product sync previously stopped with 'ShopeeAPI' object has no attribute 'get_products'. The connector now calls Shopee's item-list and item-detail endpoints directly, so a product sync returns fully populated products.

Export failures name the product (2.1.2). When an export run rejects a product, the warning now includes the SKU and the Shopee item id, so you can find the record without reading the raw log.

Queue actions are restricted to Shopee Managers (2.1.3). Processing, retrying or cancelling a sync queue (or an individual queue line) now requires the Shopee Manager group and returns a clear access message to everyone else, instead of failing part-way through the operation.

Version history​

Odoo versionCurrent build (2.2.3 release)
17.017.0.2.2.3
18.018.0.2.2.3
19.019.0.2.2.3

ECOSIRE module versions are <odoo major>.<module major>.<minor>.<patch>, so 19.0.2.2.3 is the Odoo 19 build of module version 2.2.3. The Odoo 17, 18 and 19 builds of 2.2.3 carry the same features. Your installed version is shown in Apps.

Support​