ASOS Store Management
ASOS Store Management connects an ASOS Marketplace boutique to Odoo. It holds the
configuration, the mappings and the monitoring around the ASOS feed, and it ingests the files
ASOS sends you. This page is the installation and configuration guide for the module you
downloaded from your ECOSIRE dashboard, and everything below describes the
asos_store_management module as it ships today.
| Technical name | asos_store_management |
| Odoo versions | 17.0, 18.0, 19.0, 20.0 (Community or Enterprise) |
| Current shipped version | 17.0 → 17.0.1.1.0, 18.0 → 18.0.1.1.0, 19.0 → 19.0.1.1.0, 20.0 → 20.0.1.1.0 |
| Price | $499 USD — one-time, per Odoo version |
| Odoo module licence | OPL-1 |
| Category | Connector |
What ASOS integration actually is
ASOS Marketplace does not publish a public REST API and runs no OAuth authorisation flow. Sellers integrate through SFTP/AS2 drop-zones and EDI messages provisioned by ASOS Technology Partnerships — purchase orders (EDI 850), acknowledgements (855), advance shipping notices (856), inventory advice (846), invoices (810) and RMA notifications.
This module is the Odoo side of that integration: it stores the partner credentials, maps ASOS-side identifiers to your Odoo records, receives feed posts on signed webhook endpoints, runs the scheduled syncs, and reports what happened. The transport itself — the SFTP or middleware client that moves files between ASOS and you — is provisioned outside Odoo and is not part of this module.
It does not call an ASOS REST API, because there is none to call. Screens that would need one (import locations, import stock levels, export stock levels) say so and name the route that does work. Nothing in this module pretends a remote call happened.
Installation
- Back up your database.
- Install the module from Apps (search for ASOS Store Management), or upload the package and press Install.
- Open ASOS → Configuration → Instances and create your boutique record.
- Set Partner Account ID, Partner Password and Feed Signing Secret to the values ASOS Technology Partnerships issued to you. They are stored for reference and for verifying inbound feed signatures; the module sends nothing to an ASOS API.
- Fill in the Asos Boutique URL and, if you use one, the delivery and payment defaults.
Both credential boxes are restricted to the Settings group (base.group_system), so a
shop-floor user never sees them.
Where everything lives
| Menu | What it holds |
|---|---|
| ASOS → Dashboard | Sales, order and sync KPIs for the selected period |
| ASOS → Orders | ASOS orders mapped to Odoo sales orders, with financial and fulfilment state |
| ASOS → Refunds | Refunds and their lines, with restock classification |
| ASOS → Products | Catalogue mappings and product images |
| ASOS → Customers | ASOS customer identities linked to Odoo contacts |
| ASOS → Payouts | Payout reports, fees and bank-statement matching |
| ASOS → Analytics | Trend data generated on a schedule |
| ASOS → Operations | Manual sync wizard, queue jobs and sync logs |
| ASOS → Configuration | Instances, locations, carriers, collections and payment gateways |
Mapping your ASOS data
- Locations. One record per ASOS-side location, mapped to the Odoo warehouse that fulfils it. The ASOS location identifiers come from your onboarding pack; nothing in ASOS sends them to us, so they are transcribed once and then editable.
- Products. Each ASOS product and variant maps to an Odoo product. Variants are unique per instance, so the same variant cannot be mapped twice on one boutique — the database rejects the duplicate rather than the screen warning about it.
- Payment gateways and carriers are local mappings used when orders and refunds are translated into Odoo records.
- Orders. The ASOS order number is stored, shown on the form and searchable, and a second mapping of the same order on the same instance is rejected.
Scheduled actions
The module ships these scheduled actions. They can be disabled per instance with the sync flags on the instance form.
| Action | Interval | What it does |
|---|---|---|
| Sync Orders | 15 minutes | Imports the orders present in your drop-zone |
| Sync Products | 30 minutes | Refreshes catalogue mappings |
| Sync Customers | 60 minutes | Refreshes customer mappings |
| Sync Inventory | 10 minutes | Reads the inventory columns of the catalogue feed |
| Process Queue Jobs | 5 minutes | Runs queued import/export jobs |
| Import Payout Reports | 6 hours | Reads payout reports |
| Import Refunds | 30 minutes | Reads refund notifications |
| Auto Risk Detection | 30 minutes | Flags high-risk orders |
| Generate Analytics | 4 hours | Builds the analytics trend |
| Webhook Health Check | 60 minutes | Reports feed endpoints that stopped receiving posts |
| Process Workflows | 10 minutes | Runs configured automation workflows |
| Cleanup Old Logs | 1 day | Deletes sync logs past the retention window |
| Daily Summary Report | 1 day | Posts the day's numbers |
Every action that finds nothing to do logs an informational line and exits — a quiet ASOS account is not an error.
Feed endpoints (webhooks)
Feed posts are received on these public endpoints. Each accepts POST and is intended to be
called by your SFTP/middleware layer or by ASOS, not by a browser:
| Path | Purpose |
|---|---|
/asos/webhook/product | Catalogue feed updates |
/asos/webhook/order | Purchase orders (EDI 850) and acknowledgements |
/asos/webhook/customer | Customer records |
/asos/webhook/refund | RMA / refund notifications |
Every post must carry the shop-domain header and, when Verify Signature is on (the default), a valid HMAC signature computed with the instance's Feed Signing Secret. A post that fails verification is rejected and logged; an unsigned post with verification enabled is never processed.
Two further routes are informational and exist so that a stale link does not 404:
| Path | Purpose |
|---|---|
/asos/install | Explains that ASOS has no install/OAuth flow and redirects to instance configuration |
/asos/callback | Explains that ASOS has no OAuth callback; safe to ignore |
Operations Center
ASOS → Operations → Manual Sync runs one operation on demand. Order, product, customer, refund, payout, payment-gateway and automation operations run locally or from the feed. Three operations — import locations, import stock levels and export stock levels — are deliberately answered with an explanation instead of a green "completed successfully" notification, because ASOS publishes no API for them: locations come from your onboarding pack, and stock moves via the EDI 846 inventory advice or the stock column of your catalogue feed.
Troubleshooting
Nothing is imported. The module reads files; it does not open the connection itself. Check that your SFTP or middleware client is delivering to the drop-zone ASOS gave you, then look at ASOS → Operations → Sync Logs and the queue jobs for the failing step.
A feed post is rejected. Signature verification is on by default. Confirm that the secret on the instance matches the one used to sign the post, and that the shop-domain header is present.
The dashboard is empty. The dashboard windows on the selected period. With no orders in that period it says so; widen the period or check that imports are landing.
A duplicate is rejected. That is the identity guard working: the same ASOS order, variant, location or payout cannot be mapped twice on one instance.
What changed in 1.1.0
- Duplicate-record guards now exist. Fourteen uniqueness rules were declared in a form the running Odoo version does not read, so they were silently dropped at install. They are now declared in each series' own syntax, so the "already mapped" message you see is enforced by the database.
- Operations that could not work say so. Import Locations, Import Stock Levels and Export Stock Levels no longer report a false success; they explain the ASOS boundary and name the route that does work.
- Location mappings can be created. The name and ASOS location identifier are editable, so the screen can hold a record at all.
- Dead settings removed. An internal OAuth-state field, a "Feed Access Token" box and a Shopify-only location flag were read by no code and are gone.
- Malformed timestamps no longer collapse to a bare year. The date fallback strips only a trailing timezone offset.
Support
Two weeks of post-delivery support are included with every purchase. Write to info@ecosire.com with your Odoo version, the module version shown above, and what you expected to happen — a defect in this module is fixed free of charge.