Skip to main content

Wayfair Store Management

Wayfair Store Management connects a Wayfair supplier account to Odoo. This page is the installation and configuration guide for the module you downloaded from your ECOSIRE dashboard. Everything below describes the wayfair_store_management module as it ships today.

Technical namewayfair_store_management
Odoo versions17.0, 18.0, 19.0 (Community or Enterprise)
Current shipped version17.0 → 17.0.3.19.0, 18.0 → 18.0.3.19.0, 19.0 → 19.0.3.19.0
Price$499 USD — one-time, per Odoo version
Odoo module licenceOPL-1
CategoryConnector

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, portal, product, contacts, digest — Odoo installs any that are missing
Python packagesrequests, paramiko
Platform accountA Wayfair seller/partner account with API access

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

sudo -u odoo pip install requests paramiko

Installation​

1. Download the ZIP for your Odoo version​

Sign in at ecosire.com and open your dashboard downloads, or download the module from the Odoo App Store. Pick the ZIP for the Odoo major version you run — the 17.0, 18.0 and 19.0 builds are separate downloads.

2. Extract into your addons path​

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

The archive contains a single top-level wayfair_store_management/ directory. If your ls check fails, the module folder ended up one level too deep — move it up so __manifest__.py sits directly inside wayfair_store_management/.

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 Wayfair Store Management and click Install.
  3. Odoo pulls in the Odoo apps listed above automatically.

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

Configuration​

Connect to Wayfair​

Open Wayfair → Configuration → Instances and create a record (model wayfair.instance). The connection fields are:

LabelTechnical nameRequiredValues
—client_idYesText
—client_secretYesText
—supplier_idNoText
—sftp_usernameNoText
—sftp_passwordNoText
Inventory Feed Typeinventory_feed_typeNoSelection: true_up, differential
Storefront Filterstorefront_filterNoSelection: all, wayfair, allmodern, birchlane, jossandmain, perigold

Where the Label column shows —, the module does not set an explicit label and Odoo derives one from the technical name, so the wording on screen may differ slightly. The technical name is the reliable identifier.

Client ID and Client Secret are required. Supplier ID identifies your supplier account. The SFTP Username / SFTP Password pair is only needed if you use the EDI feed jobs (see below); leave them blank for pure API operation.

The same record carries 15 behaviour checkboxes — sandbox_mode, sftp_enabled, sftp_auto_import_products, sftp_auto_import_orders, auto_post_settlement, auto_validate_inventory, auto_confirm_order, auto_create_invoice, auto_validate_invoice, auto_validate_delivery, …. They gate what the connector 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.

Credentials are issued from the Wayfair Developer Portal — see developer.wayfair.io. The connector talks to api.wayfair.com (or sandbox.api.wayfair.com in Sandbox Mode), with OAuth at sso.auth.wayfair.com/oauth, plus an optional SFTP host for the EDI feeds.

When the fields are filled in, click Test Connection. The record's status moves to connected only when the platform answers successfully — do not run a first import until it does.

Scheduled actions​

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

Scheduled actionRuns everyEnabled on install
Wayfair: Sync Products30 minutesYes
Wayfair: Sync Orders15 minutesYes
Wayfair: Sync Customers60 minutesYes
Wayfair: Sync Inventory10 minutesYes
Wayfair: Process Queue Jobs5 minutesYes
Wayfair: Import Payout Reports6 hoursYes
Wayfair: Import Refunds30 minutesYes
Wayfair: Auto Risk Detection30 minutesYes
Wayfair: Generate Analytics4 hoursYes
Wayfair: Webhook Health Check60 minutesYes
Wayfair: Cleanup Old Logs24 hoursYes
Wayfair: Process Workflows10 minutesYes
Wayfair: Daily Summary Report1 daysYes
Wayfair: Sync Delivery Status and Auto-Validate15 minutesYes
Wayfair: SFTP Import Products (EDI Catalog)60 minutesNo
Wayfair: SFTP Import Orders (EDI 850)30 minutesNo
Wayfair: SFTP Export Inventory (EDI 846)4 hoursNo
Some jobs ship switched off

The jobs marked No above are installed but inactive. Enable them only if you actually use that capability, and read the note in the module-specific notes section first.

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 Wayfair menu is laid out as:

  • Wayfair → Dashboard
  • Wayfair → Orders
  • Wayfair → Refunds
  • Wayfair → Products
  • Wayfair → Customers
  • Wayfair → Payouts
  • Wayfair → Import Settlement CSV
  • Wayfair → Analytics
  • Wayfair → Operations — Run Operations, Queue Jobs, Logs
  • Wayfair → Configuration — Instances, Locations, Payment Gateways, Scheduled Actions, Webhooks, Pricing Management
  • Wayfair → CastleGate — WFS Inventory, Inbound Shipments

A normal first run is:

  1. Test Connection until the instance reads connected.
  2. Review the mapping records (categories, order statuses, payment and shipping methods) 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 Logs view during the first full sync. Every sync writes a log line; failures are recorded there rather than raised at the user.

Module-specific notes​

  • The three SFTP jobs (EDI catalog, EDI 850 orders, EDI 846 inventory) ship disabled. They are an alternative to the API path for suppliers who exchange EDI over SFTP — enable them only if Wayfair has given you SFTP credentials, and fill in SFTP Username / SFTP Password first. paramiko must be installed for these to work.
  • Inventory Feed Type chooses between a true_up (full snapshot) and a differential feed. Pick the one your Wayfair account is configured for; sending the wrong shape is a common cause of inventory drift.
  • Storefront Filter limits the connector to one Wayfair-family storefront (wayfair, allmodern, birchlane, jossandmain, perigold) or all.
  • A CastleGate menu exposes WFS inventory and inbound shipments for suppliers using Wayfair's fulfilment network.
  • Shipping documents. On a Wayfair order, Register for Shipping tells Wayfair the order is ready for pickup; Wayfair then generates the documents, which usually takes about 15 minutes. After that, Download Labels, Packing Slip and Bill of Lading (large parcel and LTL orders only) each download the document and attach it to the sale order's chatter. Label format and size (PDF or ZPL) are set in Wayfair Partner Home, not in Odoo. A purchase order is registered once; pressing Register again on a registered order only confirms it.
  • Shipment notifications are sent by the order export once the delivery is validated and has a tracking number. Set a Wayfair carrier on the Odoo delivery method so the notice carries the carrier's SCAC code.
  • Import Settlement CSV is a manual wizard for loading settlement files that are not available over the API.

Troubleshooting​

Installation and access​

This module ships complete and unlocked. Install the ZIP, update the apps list, and install Wayfair Store Management — there is no separate permission step, no code to request from us, and nothing to switch on beyond the Odoo apps listed under Requirements.

Older ECOSIRE documentation for other products describes an extra permission step. It does not apply to this module, and a screen for it will not exist in your Odoo. If something in the module does not appear after installation, see the Syncing table below and the Logs view before anything else.

Syncing​

SymptomCause and fix
Test Connection failsRe-check every required field in the table above. Most failures are a mistyped secret, or credentials created for the sandbox while the connector 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 Logs view 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.

Version history​

Odoo versionCurrent shipped version
17.017.0.3.19.0
18.018.0.3.19.0
19.019.0.3.19.0

19.0.3.19.0 — 2026-09-26​

  • Shipping labels, packing slips and bills of lading now download. The module requested them from an address Wayfair does not publish and then tried to read the PDF as data, so no document could arrive. It now uses the download addresses in Wayfair's Registration & Shipping guide, keeps the file exactly as Wayfair sends it (PDF or ZPL, with Wayfair's file name) and attaches it to the sale order.
  • The Download Labels and Packing Slip buttons do the download. Before, they showed a message and fetched nothing. Each button now downloads the document, attaches it to the sale order's chatter and opens it. A new Bill of Lading button does the same for large-parcel orders.
  • Register for Shipping follows Wayfair's documented registration. The request now has the structure Wayfair documents, including the PO's warehouse, and a purchase order that is already registered is not registered again.
  • Shipment notifications (ASN) are sent as shipment notifications. The order export sent a registration request and called it an ASN. It now sends Wayfair's documented shipment notice. The notice carries the PO's ship speed and warehouse, the carrier's SCAC code, the ship date, the tracking number, and the parts and quantities inside the package.
  • Inventory feeds are accepted by Wayfair. Each row now carries the supplier ID Wayfair requires, and the feed kind (true-up or differential) goes in the field Wayfair documents. Catalogue fields that caused Wayfair to reject the whole feed are no longer mixed in, and Wayfair's transaction handle and per-item errors are read back.
  • Order acceptance matches Wayfair's documented request, including the ship speed and, per line, the part number, quantity, unit price and estimated ship date.
  • Tracking numbers are read from the labels Wayfair generated, so fulfilment status picks them up.

19.0.3.18.1 — 2026-09-25​

  • The supplier catalog read is removed, because it never worked. Version 3.16.0 added a direct supplier catalog read, on the stated grounds that Wayfair publishes the catalog on a second GraphQL host. There is no second host: the call went to a different domain that Wayfair does not serve, so every catalog read failed at the DNS lookup and the failure was invisible in the interface. Wayfair publishes one supplier GraphQL endpoint, and its catalog surface is a lookup by supplier part number, which this module already implements. Asking for a catalog listing now fails with a clear message naming the two supported routes. Products are still discovered from your purchase orders, and a known SKU can still be read directly.
  • Large suppliers no longer lose orders, and no longer see false cancellations. The order sync read a single page capped at 5,000 orders, so a supplier with more open purchase orders silently lost the remainder - and because the module treats a purchase order that has disappeared from Wayfair as cancelled in Odoo, a truncated read could cancel real orders. The sync now follows the pagination Wayfair documents to the last page, stops if the provider stops advancing, and reports when a read was cut short.
  • Risk assessment works again. Every risk assessment failed with "Unsupported tracking on field risk_indicators (type json)": the risk indicators field carried change-tracking, which Odoo cannot render for a structured value, so no risk record could be created at all. The field no longer carries tracking; the score and level beside it still do.
  • State-changing buttons require the Wayfair Manager group. Twenty actions across eight screens - activating a workflow, validating or reversing a payout, creating or deleting a webhook, assessing risk, testing a connection - wrote state with no permission check. Each now requires Wayfair Manager.
  • Kanban, pivot and graph views for Wayfair orders, and the dashboard charts now open the records behind them: clicking a slice of the order-status chart opens exactly the orders it counted, and clicking a point on the sales chart opens the sale orders summed into that day or month.
  • The listing shows the product. The store page carried no screenshot and no demo link; it now links the live demo and shows four captioned screens.
  • Every sync failure names its record. Seven error handlers logged a message with no order, file or job identifier, so a failure could not be traced back to what produced it.
  • Removed a 522 KB JavaScript charting library and its stylesheet, loaded into every backend page and used by nothing.

19.0.3.18.0 — 2026-09-25​

  • An order in another currency is never booked at a guessed rate. A purchase order priced in EUR, GBP or CAD was written into the sale order as if the figure were already in your company currency. The order sync now converts at your own exchange rates, and refuses an order whose currency is unknown or has no rate rather than assuming parity.
  • Dashboard totals convert before they add up, instead of adding amounts in different currencies and labelling the result in one of them.
  • Today's orders count. A dashboard window ending today stopped at midnight and dropped everything placed during the day.
  • The dashboard is readable in dark mode, and the charts say "no data yet" instead of drawing empty frames on a fresh install.

19.0.3.17.0 — 2026-09-25​

  • The same buyer is no longer filed twice. The order sync and the customer import each built the customer contact on their own, so a buyer seen by both appeared as two contacts, with orders and invoices split across them. Both now resolve the contact the same way: match on email, then on name, and create only when neither matched. An existing contact is filled in with what it was missing and never overwritten.
  • Dashboard figures use your currency. Every money tile and the sales chart now format amounts from the currency configured on your Wayfair instance, instead of printing a dollar sign on a EUR or GBP company.
  • The CastleGate (WFS) panel reports real numbers. Orders, revenue and warehouses read zero on every install; the figures were being calculated but never reached the panel. They are displayed now, with the revenue formatted as money.

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

Support​