Skip to main content

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 nameamazon_store_management
Odoo versions17.0, 18.0, 19.0 (Community or Enterprise)
Current shipped version17.0 → 17.0.2.1.6, 18.0 → 18.0.2.1.6, 19.0 → 19.0.2.1.6
Price$499 USD — one-time, per Odoo version
Odoo module licenceOPL-1
CategoryConnector
What changed in 2.1.6

The Mapping wizard works, and the dashboard is legible.

  • Every mapping type was a dead end. The Mapping wizard offers six mappings (Product Categories, Order Statuses, Payment Methods, Shipping Methods, Customer Groups, Product Attributes), and each one's Create Mapping requires both sides of its pair. The form rendered a single field per type — and for five of the six the wrong one, the shared Amazon Status box instead of the payment, shipping, customer-group or attribute field it reads — so Create Mapping refused with "please provide both…" and no field on screen could satisfy it, in the module's own default mode. Each group now collects both sides, with a placeholder on every field and a line telling you what to do next, and the result of the run is shown instead of being written to a field the form did not display.
  • Wizard actions moved to the dialog footer. Start Import, Preview, Start Export and Create Mapping sat in the dialog header with only Close in the footer; they now sit beside Close, where Odoo puts a dialog's actions. The title each dialog repeated in its body is gone — the dialog header carries it.
What changed in 2.1.5

Accessibility, dashboard states and the Sync Logs screen.

  • The dashboard failed WCAG 2.2 AA contrast on 21 elements. Muted labels, pills, badges and status deltas were too light to read — the secondary grey measured 3.33:1 and the tertiary grey 2.10:1. Every foreground use now has a dedicated token at or above 5.5:1 in light and dark mode, so the design reads the same while the text is legible.
  • A failed or unconfigured dashboard painted a full board of zeroes — "Total Revenue $0.00", "Orders 0", "Sync Health 100%" — beside the error banner, which read as real data. The board now renders only when there is data, and otherwise says so plainly.
  • The Sync Logs screen hid every successful sync, opening with an invisible Errors-only filter, so a store with hundreds of good runs looked broken. It now opens on the full history.
  • The Sales Trend and Order Status charts could stay blank while a full set of KPI figures sat above them; chart creation is now idempotent and retries until the canvas is ready.
  • The dashboard ignored Odoo's dark mode, and the loading state claimed there was no data. Both are fixed, and a long store name no longer breaks the mobile header. The brand also read lowercase in several user-visible names and now reads "Amazon".
What changed in 2.1.4

Hardened against 36 known real-world failure cases. Every item below is a defect that reached a customer on some connector of this family, turned into a behaviour this module now proves it handles on every release.

  • Order import follows every page. Amazon answers a large order list one page at a time with a NextToken; the connector used to read the first page and discard the token, so a busy seller silently imported a fraction of their orders. Import now follows every page to the end, and a run that resumes from a stored cursor continues from that cursor instead of starting over.
  • Foreign-currency orders are booked correctly. An order in EUR used to be recorded at a 1:1 rate as if it were company currency. An unknown currency code, or a currency with no exchange rate at or before the order date, is now refused with a clear message instead of guessed. Amazon's own amounts stay verbatim on the order's Amazon fields.
  • Truthful dashboard counters. Re-syncing the same catalogue used to inflate the KPI counters without limit; they now describe the run that just happened. A run with failures stays a warning and no longer advances the last-successful -sync timestamp.
  • Records stay with their store. Order and product lookups are scoped to the store and company they came from, so a second Amazon account can no longer take over the first account's order for the same Amazon order ID.
  • Re-import refreshes the whole order. Importing an existing order again used to only re-stamp its status. It now refreshes status, finance figures, dates and payment evidence, and updates the order lines in place instead of duplicating them.
  • Only real image URLs are stored. A catalog-relative reference such as images/I/x.jpg used to be saved as a URL and produced a broken link; only absolute http(s) references are stored now.
  • Failure evidence is redacted. A provider error reproduced into the sync log or the queue record is redacted before it is written, so tokens and buyer contact details are never retained.
  • Dashboard and forms. The dashboard includes the current day in its totals, announces its loading, empty and error states to screen readers and stays legible in dark mode. Connector actions open this module's own list and form screens, and Amazon identifiers are shown and searchable.
  • Honest capability forms. Affiliate attribution, affiliate reporting and creator refresh are declared unsupported (Amazon Associates has no SP-API surface); variant mapping is real and sets the variant ASIN from the item.
What changed in 2.1.3

Dashboard and sync endpoints now respect company boundaries.

  • Company boundaries. In a database with more than one company, the dashboard and the status and sync endpoints could reach the Amazon connection, orders and sync activity of another company. They now work only with the connections of the companies you are currently working in (the company switcher), and a connection of another company is refused without returning anything about it. We recommend every multi-company installation upgrades.
  • Only Amazon Managers start a sync. Starting a sync from the dashboard, the Sync buttons or the sync endpoint now requires the Amazon Manager group. Amazon Users keep their read access. Scheduled syncs are unaffected.
  • Record identifiers always sent. Amazon requests that address one record — an order, a listing SKU, a shipment, a feed, a report — now carry that record's identifier, URL-encoded; a request missing one is refused before it reaches Amazon.
  • Dashboard. Top Products now ranks the period's best sellers from your confirmed Amazon orders (it was always empty), the Failed slice counts orders whose sync failed (it repeated the cancelled count), and Recent Activity reads "Order import: 24 processed, 6 created" with a readable time.
  • AWS keys optional. A configuration saves with Login with Amazon credentials alone; the connector never signed with AWS keys.
  • Report Requests (Odoo 19) gained a kanban board by status and search filters for in-progress, downloaded and failed requests.
Nothing to activate

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 your web.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-API ItemPrice.Amount, and the Odoo unit price is derived from it.

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 automatically
Python packagesNone beyond Odoo's own — the module talks to the SP-API over HTTPS with requests, which Odoo already ships
Platform accountAn 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
  1. Go to Apps and click Update Apps List (developer mode must be on).
  2. Search for Amazon Store Management and click Install.
  3. 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:

LabelTechnical nameRequiredValues
Seller IDseller_idYesText
LWA Client IDclient_idYesText
LWA Client Secretclient_secretYesText
LWA Refresh Tokenrefresh_tokenYesText
AWS Access Key ID (legacy)aws_access_keyNoText
AWS Secret Access Key (legacy)aws_secret_keyNoText
API RegionregionYesSelection: na, eu, fe
MarketplacemarketplaceYesSelection: 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 actionRuns everyEnabled on install
amazon: Sync Products1 hoursYes
amazon: Sync Orders30 minutesYes
amazon: Sync Customers6 hoursYes
amazon: Sync Inventory15 minutesYes
amazon: Test Connection1 daysYes
amazon: Cleanup Old Logs1 daysYes

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.

EndpointMethodAuthPurpose
/amazon/webhookPOSTPublic (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.

Webhook deliveries are currently all rejected

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:

EndpointPurpose
/amazon/dashboard/dataAggregated KPIs, chart series, status and recent activity for the dashboard
/amazon/api/syncTriggers a products / orders / customers sync from the dashboard's Sync Now
/amazon/api/statusReports 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:

  1. Test Connection until the instance reads connected.
  2. 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.
  3. 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.
  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.

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 and listing status; 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​

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 (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-wayRead 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 valuesFix the mapping records under Amazon → Operations → Mapping Wizard, 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.
Exported listings carry no imagesweb.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 403Expected today — see the warning above. Signature verification is not enabled for Amazon deliveries yet; use the scheduled actions.

Version history​

Odoo versionVersion you download today
17.017.0.2.1.6
18.018.0.2.1.6
19.019.0.2.1.6

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.

Support​