Amazon Store Management
Amazon Store Management connects an Amazon selling-partner account to Odoo through the Selling Partner API (SP-API). This page is the installation and configuration guide for the module you downloaded from your ECOSIRE dashboard. Everything below describes the amazon_store_management module as it ships today.
| Technical name | amazon_store_management |
| Odoo versions | 17.0, 18.0, 19.0 (Community or Enterprise) |
| Current shipped version | 17.0 → 17.0.2.1.0, 18.0 → 18.0.2.1.0, 19.0 → 19.0.2.1.0 |
| Price | $499 USD — one-time, per Odoo version |
| Odoo module licence | OPL-1 |
| Category | Connector |
This module installs and runs standalone. Since version 19.0.2.1.0 (and its
17.0/18.0 counterparts) it has no licence client and no activation step — there
is no licence key to paste and no ECOSIRE.COM menu in Odoo Settings. Your right to
use the software is the purchase itself (the OPL-1 licence). If an older guide told
you to install ecosire_license_client or visit Settings → ECOSIRE.COM, that no
longer applies: nothing in this build asks for it.
What's new in the current build
- Standalone install (
2.1.0) — the separate licence-client module is gone from the requirements. One ZIP, one install, no activation. Order-import enrichment (buyer legal name, country, state) moved into the connector itself, so it works exactly as before. - Listing export that actually sends images and variants (
2.0.10) — the Include Product Images and Include Product Variants toggles on the export wizard are now wired: images are pushed as SP-API listing image attributes built from yourweb.base.url(and omitted automatically while that URL is still a localhost default, because Amazon fetches image links server-side), and variants export one listing per sellable variant without touching the siblings' shared SKU fields. - Sync Frequency that reschedules the jobs (
2.0.10) — choosing a frequency on the import wizard now really reschedules the product, order, customer and inventory scheduled actions (and Manual disables them). Previously the setting was stored and ignored. - Resilient syncs (
2.0.9) — every record is processed in its own savepoint, so one bad Amazon record is skipped and logged instead of aborting the whole run and rolling back every good record with it. - Correct order-line prices (
2.0.8) — imported order lines used to store an Amazon item price of 0.00; the line price now carries the real SP-APIItemPrice.Amount, and the Odoo unit price is derived from 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, product, contacts — Odoo installs any that are missing automatically |
| Python package | python-amazon-sp-api (import name sp_api) in the interpreter that runs Odoo: pip install python-amazon-sp-api |
| Platform account | An Amazon seller/partner account with SP-API access |
Installation
1. Download the ZIP for your Odoo version
Sign in at ecosire.com and open your dashboard downloads. Take the file matching your Odoo version — each major version is a separate build.
2. Extract into your addons path
unzip amazon_store_management_v19_*.zip -d /opt/odoo/addons/
ls /opt/odoo/addons/amazon_store_management/__manifest__.py # sanity check
The archive contains a single top-level amazon_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 amazon_store_management/.
3. Restart Odoo and install
sudo systemctl restart odoo
- Go to Apps and click Update Apps List (developer mode must be on).
- Search for Amazon Store Management and click Install.
- Odoo pulls in the Odoo apps listed above automatically.
When the install finishes, an Amazon menu appears in the main Odoo app switcher.
Configuration
Connect to Amazon
Open Amazon → Configuration → Settings and create a record (model amazon.configuration). The connection fields are:
| Label | Technical name | Required | Values |
|---|---|---|---|
| Seller ID | seller_id | Yes | Text |
| LWA Client ID | client_id | Yes | Text |
| LWA Client Secret | client_secret | Yes | Text |
| LWA Refresh Token | refresh_token | Yes | Text |
| AWS Access Key ID (legacy) | aws_access_key | No | Text |
| AWS Secret Access Key (legacy) | aws_secret_key | No | Text |
| API Region | region | Yes | Selection: na, eu, fe |
| Marketplace | marketplace | Yes | Selection: US, CA, MX, BR, UK, DE, FR, IT, ES, NL, SE, PL, TR, AE, IN, JP, AU, SG |
The LWA Client ID, LWA Client Secret and LWA Refresh Token come from the
Login-with-Amazon application attached to your SP-API app; Seller ID is your
merchant token. The two AWS ... fields are marked legacy in the module and are
not required by current SP-API auth — leave them empty unless an older credential
set specifically needs them.
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 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 Amazon Seller Central / Solution Provider Portal —
see developer-docs.amazon.com/sp-api. The
connector talks to sellingpartnerapi-na.amazon.com,
sellingpartnerapi-eu.amazon.com, sellingpartnerapi-fe.amazon.com (chosen by API
Region), with LWA tokens from api.amazon.com/auth/o2/token.
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 6 scheduled actions (Settings → Technical → Scheduled Actions):
| Scheduled action | Runs every | Enabled on install |
|---|---|---|
| amazon: Sync Products | 1 hours | Yes |
| amazon: Sync Orders | 30 minutes | Yes |
| amazon: Sync Customers | 6 hours | Yes |
| amazon: Sync Inventory | 15 minutes | Yes |
| amazon: Test Connection | 1 days | Yes |
| amazon: Cleanup Old Logs | 1 days | Yes |
Intervals above are the shipped defaults. You can adjust them directly, or set Sync Frequency on the import wizard (Manual, Every Hour, Every 6 Hours, Daily) and let it reschedule the product, order, customer and inventory jobs for you — Manual switches them off. Be aware that Amazon, not Odoo, sets the API rate limits, and shortening a sync interval is the usual cause of throttling errors in the logs.
Endpoints this module exposes
Public endpoint
The connector serves one externally reachable endpoint. The path is relative to your
Odoo base URL (web.base.url), so the address would look like
https://erp.example.com/amazon/webhook.
| Endpoint | Method | Auth | Purpose |
|---|---|---|---|
/amazon/webhook | POST | Public (unauthenticated) | Receives Amazon event deliveries for webhook records (model amazon.webhook) |
/amazon/webhook fails closed. A delivery is acknowledged only after an active
webhook record whose status is active verifies the delivery's signature against the
raw request body and headers; anything else is answered HTTP 403 and nothing is
processed from it. Rejected deliveries are written to the Odoo log with the calling IP
address.
Amazon's delivery-signature scheme is not pinned for this connector yet, so signature verification deliberately rejects every inbound delivery rather than accept an unauthenticated payload. Do not rely on webhooks for your data today — the scheduled actions and the import/export wizards are the data path. The endpoint and the webhook records (topic per configuration, delivery URL, secret key, pause/resume, webhook log) exist so the surface is stable and observable while order-event processing waits on signature verification.
Internal endpoints
Three JSON-RPC endpoints (login required — auth='user') serve the dashboard and
quick actions; they need no external wiring:
| Endpoint | Purpose |
|---|---|
/amazon/dashboard/data | Aggregated KPIs, chart series, status and recent activity for the dashboard |
/amazon/api/sync | Triggers a products / orders / customers sync from the dashboard's Sync Now |
/amazon/api/status | Reports connection state and per-type last-sync times |
Using the module
The Amazon menu is laid out as:
- Amazon → Dashboard
- Amazon → Products
- Amazon → Orders
- Amazon → Customers
- Amazon → Operations — Import Wizard, Export Wizard, Mapping Wizard, Test Connection, Logs, Reports
- Amazon → Configuration — Settings
A normal first run is:
- Test Connection until the instance reads connected.
- Review the mapping records (product categories, order statuses, payment methods, shipping methods, customer groups, product attributes) so imported data lands on the right Odoo records.
- Run a small import first — restrict it with the wizard's Import Limit and by a handful of products — and check the results before letting the scheduled actions take over.
- 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.
Importing
Amazon → Operations → Import Wizard chooses what to pull from Amazon: products,
orders, customers and/or inventory, with an Import Limit, and the options Create
Missing Products, Create Missing Customers, Update Existing and Map Only
(analyse the mapping without writing). Imported orders carry their Amazon fulfillment
channel (FBA AFN / merchant FBM), shipping, tax and discount totals; imported
products carry ASIN, SKU, brand, category, listing status, Buy Box price and winner
flag; FBA stock levels land on the product's FBA Quantity.
Exporting to Amazon
Amazon → Operations → Export Wizard pushes data the other way: products (listings), orders, customers and/or inventory, with Update Existing / Create Missing and an Export Limit. The two listing toggles matter:
- Include Product Images — sends the product's image URLs to Amazon as listing
image attributes. The URLs are built from
web.base.url, so set that system parameter to your real public HTTPS URL first; while it is still a localhost default, image attributes are omitted (Amazon fetches image locations server-side, and a localhost link would fail ingestion silently). - Include Product Variants — exports one listing per sellable variant, writing only variant-scoped fields so sibling variants are not overwritten.
Dashboard
Amazon → Dashboard shows revenue, order, customer and product KPIs with period-over-period deltas, a 30-day sales trend chart, an order-status breakdown, recent sync activity, quick-action buttons (Products, Orders, Customers, Queue, Logs, Settings), Sync Now / Refresh buttons and a status footer (queue jobs, errors, out-of-stock, sync success rate). Period filters run Today / 7D / 30D / 90D / Year / Custom, and the dashboard refreshes itself every 60 seconds.
Module-specific notes
- Authentication is Login-with-Amazon (LWA), not the legacy AWS signature: LWA Client ID, LWA Client Secret and LWA Refresh Token are the required trio.
- API Region (
na,eu,fe) selects the SP-API host and must match the marketplace you sell in. - Marketplace is required and covers 18 Amazon marketplaces: US, CA, MX, BR, UK, DE, FR, IT, ES, NL, SE, PL, TR, AE, IN, JP, AU and SG. One configuration connects one marketplace — create one configuration record per marketplace you sell in.
- A failed record never kills the run: each record syncs in its own savepoint and a failure is logged per record.
Troubleshooting
| Symptom | Cause and fix |
|---|---|
Install fails on No module named sp_api | pip install python-amazon-sp-api into the Python environment that runs Odoo, then restart. |
| Test Connection fails | Re-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 fine | The scheduled actions are disabled at the Odoo level (check the import wizard's Sync Frequency — Manual disables them), 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 Logs view for that run. Rate limiting and rejected field values are the two common causes; both are logged with Amazon's own error text. A single bad record is skipped, not the cause of a stop — look for a repeated error instead. |
| Records import but map to the wrong Odoo values | Fix the mapping records under Amazon → Operations → Mapping Wizard, 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. |
| Exported listings carry no images | web.base.url is still a localhost default, so image attributes are deliberately omitted. Set it to your public HTTPS URL and export again. |
| Webhook deliveries all answered 403 | Expected today — see the warning above. Signature verification is not enabled for Amazon deliveries yet; use the scheduled actions. |
Version history
| Odoo version | Version you download today |
|---|---|
| 17.0 | 17.0.2.1.0 |
| 18.0 | 18.0.2.1.0 |
| 19.0 | 19.0.2.1.0 |
ECOSIRE module versions are <odoo major>.<module major>.<minor>.<patch>, so
19.0.2.1.0 is the Odoo 19 build of module version 2.1.0. Your installed version is
shown in Apps.