Skip to main content

AliExpress Store Management

AliExpress Store Management connects an AliExpress seller account to Odoo: it imports your catalog, orders, buyers, returns, refunds and settlements, mirrors AliExpress Choice fulfilment programmes with SLA tracking, and puts every AliExpress fact it holds directly on the Odoo records you already use. This page is the installation and configuration guide for the aliexpress_store_management module as it ships today.

Technical namealiexpress_store_management
Odoo versions17.0, 18.0, 19.0 (Community or Enterprise)
Current shipped version17.017.0.2.0.3, 18.018.0.2.0.2, 19.019.0.2.1.2
Price$499 USD — one-time, per Odoo version
Odoo module licenceOPL-1
CategoryConnector

Each Odoo major version is a separate product and a separate purchase — buy the build for the version you actually run.

What the current release (19.0.2.1.2) brings

If you are upgrading from an older 19.0 build, the 19.0.2.1.x series changed how the module presents itself:

  • AliExpress data now lives on the Odoo records themselves. Sales orders, products and contacts each gain an AliExpress page in their form view (see below) — platform IDs, sync state, listing details and tax identifiers are filled in from the screen, not only in the database.
  • The Orders, Products and Customers menus show the module's own columns (order ID, platform status, sync status, SKU, GTIN readiness), and the Orders menu no longer conflicts with Odoo's own views.
  • The dashboard's Top Products panel ranks real revenue — aggregated from the order lines of your imported AliExpress orders — and every amount renders in your active company's currency.
  • Choice SLA thresholds are enforced. The handling-hours and delivery-days you set on a Choice fulfilment programme now count real violations (an order still awaiting dispatch past handling, or still open past delivery), alongside returns.
  • Choice eligibility gates GTIN compliance. A Choice-eligible listing counts as compliance-ready only once it carries a barcode, whatever the category's GTIN flag says.
  • Per-company isolation. Imported buyers, orders and listings are separated by company record rules, and API credentials are visible only to the System group.

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
Python packagesrequests
Platform accountAn AliExpress seller/partner account with Open Platform API access and your own Open Platform application

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, or use the ZIP you received from the Odoo App Store.

2. Extract into your addons path

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

The archive contains a single top-level aliexpress_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 aliexpress_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 AliExpress Store Management and click Install.

The module installs and runs standalone — there is no licence key, no activation step and no companion module to install first. When the install finishes, an AliExpress menu appears in the main Odoo app switcher.

Configuration

Connect to AliExpress

Open AliExpress → Configuration → Settings and create a record. The connection fields are:

LabelTechnical nameRequiredNotes
App Keyapp_keyYesFrom your AliExpress Open Platform application
App Secretapp_secretYesMasked; visible only to the System group
Access Tokenaccess_tokenNoFrom the platform's OAuth consent flow; masked
Refresh Tokenrefresh_tokenNoMasked; the connector refreshes the access token automatically

The record also carries an optional Timeout (seconds) (default 30), and seven 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 the switches on one at a time.

Credentials are issued from the AliExpress Open Platform — see openservice.aliexpress.com. The connector signs every call with HMAC-SHA256 (HMAC-MD5 remains supported for legacy applications) and talks to the Singapore gateway api-sg.aliexpress.com (/sync for TOP API methods, /rest for OAuth token create/refresh).

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

Onboarding wizard

AliExpress → Configuration → Onboarding Wizard walks through the same setup in four steps:

  1. Credentials — App Key, App Secret, Access Token, Refresh Token, and the sign method (HMAC-SHA256 recommended).
  2. Ship-From Country — CN origin, or US / EU / RU bonded.
  3. AliExpress Choice — opt in to the premium delivery programme with its strict handling SLA.
  4. Test Connection — a live round-trip against the platform before anything syncs.

Public endpoint this module exposes

The connector serves one externally reachable endpoint. The path is relative to your Odoo base URL (web.base.url), so the address you register on the platform looks like https://erp.example.com/aliexpress/webhook.

EndpointMethodAuthPurpose
/aliexpress/webhookPOSTPublic (unauthenticated)Receives AliExpress webhook deliveries. This is the URL to register as your notification destination in the AliExpress Open Platform message subscription.

/aliexpress/webhook fails closed. A delivery is acknowledged only after an active webhook record (model aliexpress.webhook, status Active) verifies the delivery's signature against the raw request body and headers, using the record's Secret Key. Anything that fails verification is answered HTTP 403 and nothing is processed from it, so the endpoint being publicly reachable does not make it publicly usable. Rejected deliveries are written to the Odoo log with the calling IP address.

The webhook record itself (model aliexpress.webhook) is a one-time setup: create it with the Secret Key the platform shows for your message subscription and set it Active before you register the URL — until one exists, every delivery is refused. This build does not yet expose a webhooks screen in the app menu, so the record is created once by your Odoo administrator (developer mode) or by ECOSIRE support ([email protected]) — after that the endpoint manages itself.

Internal endpoints

These JSON-RPC endpoints are called by the module's own dashboard and are not part of external integration. They require an authenticated Odoo user session:

EndpointPurpose
/aliexpress/dashboard/dataFeeds the OWL dashboard (KPIs, charts, activity)
/aliexpress/api/statusReports connection state and last-sync times
/aliexpress/api/syncTriggers a product / order / customer sync on demand

Scheduled actions

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

Scheduled actionRuns everyEnabled on install
aliexpress: Sync Products1 hoursYes
aliexpress: Sync Orders30 minutesYes
aliexpress: Sync Customers6 hoursYes
aliexpress: Sync Inventory15 minutesYes
aliexpress: Test Connection1 daysYes
aliexpress: Cleanup Old Logs1 daysYes
AliExpress: Daily Digest1 daysYes

Intervals above are the shipped defaults; the Import Wizard's Sync Frequency choice reschedules the product, order, customer and inventory actions (setting it to Manual deactivates them). 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 AliExpress menu is laid out as:

  • AliExpress → Dashboard
  • AliExpress → Products — imported listings, with GTIN-required and compliance columns
  • AliExpress → Orders — imported orders, with the module's own list columns
  • AliExpress → Customers — imported buyers
  • AliExpress → Operations — Import Wizard, Mapping Wizard, Test Connection, Logs, Reports, and under Workflows: Workflows (per region) and Auto Workflow Rules
  • AliExpress → AliExpress Records — Orders (Shadow), Products (Shadow), Customers (Masked), Collections, Returns, Refunds, Risk, Analytics
  • AliExpress → Finance — Settlements, Daily Digests
  • AliExpress → Logistics — Locations, Carriers (Cainiao), Fulfillment Programs (Choice SLA)
  • AliExpress → Configuration — Settings, Onboarding Wizard

A normal first run is:

  1. Test Connection until the instance reads connected.
  2. Review the mapping records (Operations → Mapping Wizard: 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; a failure on one record is contained to that record and is recorded there rather than aborting the whole run.

AliExpress data on native Odoo records

Every form the module extends gains an AliExpress page:

  • Sales order — platform order ID and reference, platform status, Choice flag, ship-to country, sync state and last error.
  • Product — marketplace ID, SKU, Choice eligibility, GTIN-required and compliance-ready flags, the listing's English/Russian/Spanish/French/German/Portuguese titles, sync state.
  • Contact — marketplace ID and sync state, plus the tax identifiers the compliance flows need: EU OSS and IOSS numbers, US sales-tax nexus states, UK VAT number, KSA VAT registration and CR number, and Brazil CPF/CNPJ.

Listing compliance: GTIN and Choice

The Products list carries a GTIN Required column (AliExpress enforces GTIN per category) and a computed Compliance Ready flag. A listing is compliance-ready when it has a barcode, an English title, a price and taxes configured. Choice-eligible listings get no GTIN exemption on AliExpress — a Choice listing is compliance-ready only once it actually carries a barcode, whatever the category flag says. Fix flagged listings before publishing them to the marketplace.

AliExpress Choice SLA tracking

Logistics → Fulfillment Programs (Choice SLA) holds one record per Choice programme with its handling-SLA hours and delivery-SLA days. A violation is counted when a Choice order is still awaiting dispatch past the handling SLA, or is still not closed out past the delivery SLA; returns count alongside. The record shows violation counts and the SLA compliance percentage — tune the two thresholds to the programme terms AliExpress gave you.

Dashboard

AliExpress → Dashboard renders KPI tiles computed from your real records — total sales, order count, average order value, customers, new customers in the period, imported products, out-of-stock listings and sync success rate — each with its change versus the previous period, in your active company's currency. Filter by period (today / 7 days / 30 days / 90 days / year / custom range). The sales-trend and order-status charts are clickable and open the underlying AliExpress orders; Top Products ranks your five best-selling listings by the revenue of their real order lines; the activity feed streams the latest sync log entries. The dashboard refreshes itself every 60 seconds, and with no configuration yet it says so and links you to Settings instead of showing empty numbers.

Daily digest

The AliExpress: Daily Digest scheduled action mails an HTML summary of activity. Configure the digest under Finance → Daily Digests.

Boundaries — what the connector does not do

The connector is import-first:

  • Product and inventory export to AliExpress is not implemented. The Export Wizard states this boundary before you start; if an export of products or a stock push is attempted anyway, it raises a clear message instead of pretending to succeed.
  • The Sync Inventory action does not change stock quantities. It runs, matches listings to Odoo products, and logs honestly that quantity update is not implemented in this build — check the Logs view if you enabled it.
  • Per-record push operations (individual order/product/customer export from a record's Action menu) raise the same clear not-implemented message.

Access and multi-company

  • Imported buyers, orders and listings carry a company and are isolated by multi-company record rules — a user in one company never sees another company's AliExpress records.
  • API credentials (App Key, App Secret, tokens) are stored masked and are readable only by the System group.
  • State-machine actions (process / retry / cancel on queued work) require the AliExpress Manager access right; ordinary users can read but not drive them.

Troubleshooting

Syncing

Symptom / error codeCause 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. A single bad record is contained — the rest of the run completes.
Records import but map to the wrong Odoo valuesFix the mapping records under 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.
Webhook deliveries answered with HTTP 403The delivery failed signature verification: no webhook record is Active, or its Secret Key does not match the platform's subscription. Fix the record, then re-register the URL on the platform.
Export or stock push refuses with "not implemented"Expected — the connector is import-first by design (see Boundaries above).
Dashboard shows the no-configuration messageNo active aliexpress.configuration record exists. Create one under Configuration → Settings and connect it.
The requests library is requiredrequests is missing from Odoo's Python environment. Install it into the interpreter that runs Odoo.

Version history

Odoo versionVersion you download today
17.017.0.2.0.3
18.018.0.2.0.2
19.019.0.2.1.2

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

Support