Skip to main content

Wix Store Management

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

Technical namewix_store_management
Odoo versions17.0, 18.0, 19.0 (Community or Enterprise)
Current shipped version17.0 → 17.0.2.2.2, 18.0 → 18.0.2.2.2, 19.0 → 19.0.2.2.2
Price$499 USD — one-time, per Odoo version
Odoo module licenceOPL-1 (Odoo Proprietary License v1.0)
CategoryConnector
No activation key, no licence client

This module installs and runs on its own. There is no activation key to enter and no separate licence module to download — installing the ZIP is the whole installation. Your licence is the OPL-1 grant in the module's LICENSE file, and your proof of purchase is the order receipt from wherever you bought it.

Each Odoo major version (17.0, 18.0, 19.0) is a separate product with its own download, so install the ZIP that matches the Odoo series you 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 Wix account with API access, and a Wix app created in the Wix Developers Center

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. The archive you want is the one whose version starts with your Odoo series — 19.0.… for an Odoo 19 database.

If you bought on the Odoo App Store, the same file is on your Apps Store download page.

2. Extract into your addons path​

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

The module must end up as a single top-level wix_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 Wix Store Management and click Install.
  3. Odoo pulls in the Odoo apps listed above automatically.

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

Configuration​

Connect to Wix​

Create a connection record on the wix.configuration model. The fields the module defines for the connection are:

FieldTechnical nameTypeRequired
Configuration NamenameCharYes
API Keyapi_keyCharYes
API Secretapi_secretCharYes
Account IDaccount_idCharYes
Site IDsite_idCharYes
Companycompany_idMany2oneYes
Access Tokenaccess_tokenCharNo
Refresh Tokenrefresh_tokenCharNo
Wix App Secretapp_secretCharNo
Access Token Expires Ataccess_token_expires_atFloatNo
API Base URLapi_base_urlCharNo
Wix URLwix_urlCharNo
MarketplacemarketplaceCharNo

The fields marked Yes are enforced by the model — Odoo will not let you save the record without them. The technical name is the reliable identifier if your screen wording differs.

The same record carries 7 behaviour checkboxes — sync_products, sync_orders, sync_customers, sync_inventory, auto_sync_products, auto_sync_orders, auto_sync_customers. They gate what the module is allowed to do automatically once it is connected. Leave anything you are not ready for switched off, and turn them on one at a time.

The module's own source contacts these hosts: www.wixapis.com, carrier.com, dev.wix.com, www.wix.com. Your firewall must allow outbound HTTPS to them.

One company, one connection, several Wix sites​

A connection belongs to the company recorded on it, and only users of that company can see or use it. The dashboard and the status and sync endpoints all work on a named connection: if you run more than one Wix site, you pick which one you are looking at, and the dashboard tells you which one answered. Synchronizations are a manager action — the user triggering one needs the Wix Manager group.

If you run several sites, create one configuration record per site rather than sharing a single "public" record across them.

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.

RouteMethodAuthenticationPurpose
/wix/webhookPOSTnone (public)Receives Wix event deliveries

Point your Wix app's webhook subscription at https://<your-odoo-host>/wix/webhook. Every delivery is signature-verified against an active webhook record; a delivery that fails verification is rejected with HTTP 403 and nothing from it is processed. Only a verified delivery is acknowledged and handed to the topic handlers.

The module also serves three JSON-RPC routes for its own dashboard. They require an Odoo login, are not intended for external callers, and take a configuration_id so the caller names the connection it means:

RouteAuthenticationPurpose
/wix/api/statusOdoo userConnection state and last-sync timestamps
/wix/api/syncOdoo user, Wix ManagerTriggers a synchronization for one connection
/wix/dashboard/dataOdoo userThe dashboard payload

Synchronization helpers​

Three buttons on the connection form pull Wix-side reference data into Odoo. They are safe to run repeatedly — a second run updates what changed rather than creating duplicates, and one bad record does not abort the run:

ButtonWhat it does
Synchronize CategoriesPulls your Wix category tree into Wix Collections, keeping each collection under its parent
Synchronize Contact LabelsTurns your Wix CRM labels into Odoo contact tags and records which Wix label each tag maps to
Refresh Inventory LinksMatches Wix inventory items to Odoo products by Wix variant id first and internal reference second, and stores the stock level Wix reports

Run Refresh Inventory Links before an inventory push: the push sends only the difference against the level stored by that button, so an unrefreshed link makes the sync send the whole catalogue.

Scheduled actions​

The module ships these scheduled actions, enabled by default:

ActionIntervalActive
wix: Sync Products1 hourYes
wix: Sync Orders30 minutesYes
wix: Sync Customers6 hoursYes
wix: Sync Inventory15 minutesYes
wix: Test Connection1 dayYes
wix: Cleanup Old Logs1 dayYes
wix: Send Daily Digest1 hour (each digest is sent once a day, at its own delivery hour)Yes

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.

Using the module​

The module's menu is laid out as:

  • Wix → Dashboard
  • Wix → Orders
  • Wix → Products
  • Wix → Customers
  • Wix → Operations — Import Wizard, Export Wizard, Mapping Wizard, Test Connection, Logs, Reports
  • Wix → Premium — Sites, Orders, Products, Customers, Members, Collections, Locations, Carriers, Returns, Refunds, Risk Flags, Settlements, Analytics, Workflows, Auto-Workflow Rules, Daily Digest, Headless
  • Wix → Configuration — Settings

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 — restrict it by date or by a handful of products — 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.

What's new in 19.0.2.2.2​

  • Webhook delivery records no longer keep credentials or buyer details in full. The delivery log is readable by every Wix user and is the first thing attached to a support ticket, so it now records an allowlist of metadata: anything else is stored as [REDACTED], and a payload that cannot be parsed is kept only as a checksum. The record still tells you a delivery arrived and whether it was accepted.

  • Re-syncing can refresh an order you already imported. Previously a re-sync updated only the payment columns, so a later mapping or exchange-rate correction never reached an order that had already been imported — and that is the one that gets invoiced. The order's lines can now be rebuilt on request.

  • The synchronized counters describe the synchronized set. The "products / orders / customers synced" figures on the connection form and the dashboard added each run's total to the previous one, so they drifted away from the data actually held. They now report the size of the set.

  • Dashboard totals include the current day. The end of the selected period was compared as a date against a timestamp column, so it resolved to midnight and orders placed during the last day were missing from the totals while still appearing in the orders list. A single-day range now charts that day instead of nothing.

  • Products imported through the Catalog V3 API keep their SKU, image, category and brand. Product mapping read the older payload shape, so a product fetched from the interface this connector actually uses mapped to an empty SKU with no image, category or brand.

  • The Wix role can now open order lines. No access rule existed for order lines, so the Wix Orders screen raised an access error for the very user the connector is intended for.

  • Webhook signature verification works on a clean install. The JWT library it depends on is now declared, so a fresh installation no longer installs cleanly and then quietly rejects every delivery.

  • Orders priced in another currency are no longer booked at face value. Wix prices an order in the site's currency, and the import used to place that figure on an order denominated in your own currency — so a EUR 100 order was recorded as USD 100. Each order now carries its own currency, and one whose currency has no exchange rate recorded is refused and reported as failed rather than guessed at.

  • The dashboard counted another company's queued jobs. Every other figure on that screen is limited to your companies; that count was not.

  • The export wizard no longer drops its totals when it has something to explain. A run in which every record was skipped reported zeros next to the explanation.

  • Wix information now appears on the standard Odoo forms. Orders, customers and products each have a read-only Wix tab showing the platform identity, payment status and amount, and sync state — so the evidence is on the record you already have open.

  • The Wix order number is now shown and searchable on the Wix Orders screen, and the Imported Customers screen explains why some e-mail addresses appear masked.

  • One product unknown to Odoo no longer loses the whole order. An imported line that matched no Odoo product was written without one, which Odoo refuses, so the entire order was skipped. Such a line now gets a product carrying the Wix SKU and product ID — reused by later imports and linked by the next catalog sync — and shipping is recorded on a single Wix Shipping service product. Neither adds an Odoo default tax, so the order total stays the one Wix charged.

  • The import tax no longer fails the order import. The sales-order-line tax field has a different name on Odoo 19 than on 17.0 and 18.0, and each build used the wrong one, so setting a default import tax skipped every order. All three builds now apply it.

  • Queue buttons check your role first. Processing, retrying or cancelling a Wix queue needs the Wix Manager role; a Wix User now sees a clear access message straight away.

  • Only a Settings administrator can create a Wix connection with its credentials on every build, as 19.0 already required.

  • The 17.0 and 18.0 builds carry the same 2.2.2 code as 19.0.

What's new in 19.0.2.2.1​

  • The three synchronization helpers work. Synchronize Categories, Synchronize Contact Labels and Refresh Inventory Links previously failed with a technical error when clicked; they now pull the data described above.
  • The dashboard shows the right currency and the right site. Amounts use the currency of the company that owns the connection instead of a fixed dollar sign, and a seller running two Wix sites chooses which one the dashboard shows. The sales chart and the totals above it now count the same orders.
  • Synchronizing is a manager action, and a connection can only be reached by a user of the company that owns it.
  • Every setting on the Wix screens now does what its label says (17.0 and 18.0 builds; 19.0 already did):
    • Validate payment on an auto-workflow rule invoices an imported order only once Wix reports it paid or partly paid.
    • Daily Digest records are sent once a day at their delivery hour to their recipients, and the Send Now button sends one immediately. Switching a digest off stops it.
    • Headless channels count incoming Wix events only while they are enabled.
    • Barcode Preflight OK is worked out from the barcode (8, 12, 13 or 14 digits) rather than ticked by hand.
    • The import wizard's Sync frequency is applied to the scheduled synchronizations; Manual leaves them unchanged.
    • The export wizard pushes name, SKU and price for products already linked to a Wix listing, pushes linked customers and stock levels, and respects Update Existing Records and the export limit. Guest-checkout customers are never pushed back. The Include Images, Include Variants and Create Missing Records options were removed because nothing implemented them.

The 18.0 and 17.0 builds carry the same fixes as 19.0 (dashboard, currency, connection scope and the settings above).

Troubleshooting​

Syncing​

SymptomCause and fix
The connection will not validateRe-check every required field in the table above. Most failures are a mistyped secret, or credentials created for a sandbox while the module points at production (or vice-versa).
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.
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.
A synchronization button reports a permission errorTriggering a sync needs the Wix Manager group. Ask an administrator to add you to it.
The dashboard shows another site's numbersPick the connection from the dashboard's selector. Data is scoped to the connection you choose, and sync history belongs to that connection.
An inventory push sends every productRun Refresh Inventory Links first — the push compares against the stock level that button stores.
The requests library is requiredrequests is missing from Odoo's Python environment. Install it into the interpreter that runs Odoo.

Version history​

Odoo versionVersion you download today
17.017.0.2.2.2
18.018.0.2.2.2
19.019.0.2.2.2

ECOSIRE module versions are <odoo major>.<module major>.<minor>.<patch>, so 19.0.2.2.2 is the Odoo 19 build of module version 2.2.2. Your installed version is shown in Apps.

Support​