Back Market Store Management
This is the installation and configuration guide for Back Market Store Management, the module you downloaded from your ECOSIRE dashboard. Everything on this page describes the backmarket_store_management module exactly as it ships today — the facts below were read out of the released build, not from a roadmap.
| Technical name | backmarket_store_management |
| Odoo versions | 17.0, 18.0, 19.0 (Community or Enterprise) |
| Current shipped version | 17.0 → 17.0.2.4.0, 18.0 → 18.0.2.4.0, 19.0 → 19.0.2.4.0 |
| Price | $499 USD — one-time, per Odoo version |
| Odoo module licence | OPL-1 |
| Category | Connector |
This module installs and runs on its own. It carries no licence key, no activation step and no phone-home check — once the files are in your addons path it is fully functional. If you have used an older ECOSIRE connector that required activation, that flow is gone and nothing replaces it.
Requirements
| Requirement | Detail |
|---|---|
| Odoo | 17.0, 18.0 or 19.0, Community or Enterprise. Self-hosted or Odoo.sh — Odoo Online (SaaS) cannot install third-party modules |
| Odoo apps | base, sale_management, stock, account, delivery, mail, web, portal, product, contacts, digest — Odoo installs any that are missing |
| Python packages | requests |
| Platform account | A Back Market seller 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.
2. Extract into your addons path
unzip backmarket_store_management_v19_*.zip -d /opt/odoo/addons/
ls /opt/odoo/addons/backmarket_store_management/__manifest__.py # sanity check
The module must end up as a single top-level backmarket_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
- Go to Apps and click Update Apps List (developer mode must be on).
- Search for Back Market Store Management and click Install.
- Odoo pulls in the Odoo apps listed above automatically.
When the install finishes, a Backmarket menu appears in the main Odoo app switcher.
Configuration
Connect to Back Market
Create a connection record on the backmarket.instance model. The fields the module defines for the connection are:
| Field | Technical name | Type | Required |
|---|---|---|---|
| Instance Name | name | Char | Yes |
| API Key | api_key | Char | Yes |
| Company | company_id | Many2one | Yes |
| API Base URL | api_base_url | Char | No |
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.
How the API key is sent. The key goes into the Authorization header as its raw value, with no
scheme prefix (the Mirakl-classic pattern Back Market uses). If your key was issued with a Bearer
prefix already attached, store it exactly as issued — it is passed through untouched. Do not
prefix it with Basic: a Basic-encoded value is rejected with 401 Unauthorized.
The same record carries 4 behaviour checkboxes — auto_validate_inventory, auto_confirm_order, auto_create_invoice, auto_validate_invoice. 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.backmarket.com, api.backmarket.dev. Your firewall must allow outbound HTTPS to them.
Public endpoints this module exposes
The connector serves one externally reachable endpoint. The path is relative to your Odoo base URL
(web.base.url), so its full address looks like https://erp.example.com/backmarket/webhook.
| Endpoint | Method | Auth | Purpose |
|---|---|---|---|
/backmarket/webhook | POST | Public (unauthenticated) | Reserved for Back Market notification deliveries. |
/backmarket/webhook is a reserved placeholder, not a working webhook laneBack Market's seller API is poll-based: it does not push order or stock events, and it does not use
the HMAC webhook-validation scheme the rest of the ECOSIRE connector fleet relies on. The handler
shipped in this build only logs the delivery's topic and answers {"status": "ok"}. It performs
no signature validation and no dispatch. Do not rely on it to move data, and do not read its ok
response as proof that a notification was processed. Back Market data reaches Odoo through the
scheduled actions below, not through this endpoint.
Scheduled actions
The module installs 13 scheduled actions (Settings → Technical → Scheduled Actions):
| Scheduled action | Runs every | Enabled on install |
|---|---|---|
| Backmarket: Sync Products | 30 minutes | Yes |
| Backmarket: Sync Orders | 15 minutes | Yes |
| Backmarket: Sync Customers | 60 minutes | Yes |
| Backmarket: Sync Inventory | 10 minutes | Yes |
| Backmarket: Process Queue Jobs | 5 minutes | Yes |
| Backmarket: Import Payout Reports | 6 hours | Yes |
| Backmarket: Import Refunds | 30 minutes | Yes |
| Backmarket: Auto Risk Detection | 30 minutes | Yes |
| Backmarket: Generate Analytics | 4 hours | Yes |
| Backmarket: Webhook Health Check | 60 minutes | Yes |
| Backmarket: Cleanup Old Logs | 24 hours | Yes |
| Backmarket: Process Workflows | 10 minutes | Yes |
| Backmarket: Daily Summary Report | 1 day | 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:
- Backmarket → Dashboard
- Backmarket → Orders
- Backmarket → Refunds
- Backmarket → Products
- Backmarket → Customers
- Backmarket → Payouts
- Backmarket → Analytics
- Backmarket → Premium — Refurb Certificates, Pro Buyers (B2B), BuyBack Trade-Ins, Battery Attestations
- Backmarket → Operations — Run Operations, Queue Jobs, Logs
- Backmarket → Configuration — Instances, Locations, Payment Gateways, Scheduled Actions, Webhooks
A normal first run is:
- Save the connection record and confirm the module reports a successful connection before importing anything.
- Review the mapping records so imported data lands on the right Odoo records.
- 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.
- Watch the log records during the first full sync. Failures are recorded there rather than raised at the user.
Troubleshooting
Connecting
| Symptom / error code | Cause and fix |
|---|---|
401 Unauthorized | The API key is wrong, or it is prefixed with Basic. Send the raw token with no scheme prefix. |
403 Forbidden | The key is valid but lacks access to the endpoint or the marketplace you are targeting. Check the key's permissions in your Back Market back office. |
429 Too Many Requests | The platform is throttling you. The client honours Retry-After automatically; widen the sync intervals rather than retrying by hand. |
The requests library is required | requests is missing from Odoo's Python environment. Install it into the interpreter that runs Odoo. |
Syncing
| Symptom | Cause and fix |
|---|---|
| The connection will not validate | Re-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 fine | The 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-way | Read 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 values | Fix the mapping records under the module's configuration, then re-run the import. |
| Duplicated products or customers | Run the initial import once. If a first attempt half-finished, check the existing records before re-running rather than importing on top. |
| Orders stop arriving and the same window is retried | Fixed in 19.0.2.4.0 / 18.0.2.4.0 / 17.0.2.4.0. Upgrade to that build or later. |
Version history
| Odoo version | Version you download today |
|---|---|
| 17.0 | 17.0.2.4.0 |
| 18.0 | 18.0.2.4.0 |
| 19.0 | 19.0.2.4.0 |
ECOSIRE module versions are <odoo major>.<module major>.<minor>.<patch>, so 19.0.2.4.0 is the Odoo 19 build of module version 2.4.0. Your installed version is shown in Apps.
What changed in 2.4.0
- Order import could stop importing orders entirely. Back Market sends order dates ending in
Z(for example2026-08-01T10:15:00Z). On some servers that date was not recognised, and the fallback kept only the year — the bare text2026— which the database refuses to store as a date. The order was skipped and the sync never moved forward, so it retried the same window forever and no new order arrived. Dates are now read in full, and anything that is not a complete date is rejected. - The same buyer is no longer created twice. Importing orders and importing customers each decided on their own whether a contact already existed, so a buyer appearing in both ended up as two contacts. Both now use one shared lookup: email, then phone, then full name.