Skip to main content

Bold Commerce Store Management

This is the installation and configuration guide for Bold Commerce Store Management, the module you downloaded from your ECOSIRE dashboard or the Odoo App Store. Everything on this page describes the boldcommerce_store_management module exactly as it ships today — the facts below were read out of the released build, not from a roadmap.

Technical nameboldcommerce_store_management
Odoo versions17.0, 18.0, 19.0 (Community or Enterprise)
Current shipped version17.017.0.1.1.0, 18.018.0.1.1.0, 19.019.0.1.1.0
Price$349 USD — one-time, for the Odoo 19 build (each series is priced separately, see Version history)
Odoo module licenceOPL-1
CategoryConnector
One purchase per Odoo version

Each Odoo major version is a separate product — the 17.0, 18.0 and 19.0 builds are purchased and downloaded separately. Buy the build that matches the version you actually run.

No activation step

This module installs and runs standalone. There is no licence key to activate, no separate licence module to install, and no activation screen anywhere in Settings — after installation the connector is ready to configure. The module licence (OPL-1) is part of your purchase: it is the contract under which you may use the software, and it requires nothing to be typed into Odoo.

If you are upgrading from an older build that depended on the separate ecosire_license_client module: that dependency no longer exists. Odoo upgrades the connector on its own, and the licence client is simply no longer used by it — you can leave it installed or remove it, provided no other module you run still needs 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, portal, product, contacts, digest — Odoo installs any that are missing automatically
Python packagesrequests
Platform accountA Bold Commerce 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, or download the build for your series from the Odoo App Store. Pick the file that matches the Odoo version you run — a 19.0 ZIP will not install on an Odoo 17 database.

2. Extract into your addons path

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

The module must end up as a single top-level boldcommerce_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
  1. Go to Apps and click Update Apps List (developer mode must be on).
  2. Search for Bold Commerce Store Management and click Install.
  3. Odoo pulls in the Odoo apps listed above automatically.

When the install finishes, a Boldcommerce menu appears in the main Odoo app switcher.

Configuration

Connect to Bold Commerce

Create a connection record on the boldcommerce.instance model (Boldcommerce → Configuration → Instances). The fields the module defines for the connection are:

FieldTechnical nameTypeRequired
Instance NamenameCharYes
Boldcommerce Shop URLshop_urlCharYes
Companycompany_idMany2oneYes
API Key / Client IDapi_keyCharNo
API PasswordpasswordCharNo
Client Secretshared_secretCharNo
Access Tokenaccess_tokenCharNo

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.

Notes on the credential fields:

  • API Password is a legacy field — Bold Commerce deprecated private app passwords in 2022. It is only read when no access token is set; new connections should not need it.
  • Access Token is obtained automatically through the OAuth handshake described below, or manually from a Custom App in your Bold Commerce admin.
  • Credential fields are visible only to system administrators and are stored as secrets.

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: developer.boldcommerce.com and api.boldcommerce.com, plus your own shop domain during the OAuth handshake. Your firewall must allow outbound HTTPS to them.

Set your public URL first

The OAuth flow builds its redirect URI from Odoo's base URL, so set it before connecting:

  1. Turn on developer mode.
  2. Settings → Technical → System Parameters, find web.base.url.
  3. Set it to the real HTTPS URL your users browse to, e.g. https://erp.example.com.

If this is left at a placeholder, Bold Commerce is handed a redirect URI that points nowhere and the handshake cannot complete.

Public endpoints this module exposes

The connector serves six externally reachable endpoints, all relative to your Odoo base URL (web.base.url). Two carry out the OAuth handshake; four receive real-time webhooks from Bold Commerce.

EndpointMethodAuthPurpose
/boldcommerce/installGETPublic (unauthenticated)Entry point for the install / connect request coming from your Bold Commerce admin. It resolves the shop to a saved connection record and redirects the browser on to the Bold Commerce authorization screen.
/boldcommerce/callbackGETPublic (unauthenticated)OAuth redirect target — Bold Commerce sends the authorization code here and the module exchanges it for an access token. Register https://erp.example.com/boldcommerce/callback as the redirect URI in your Bold Commerce app.
/boldcommerce/webhook/productPOSTPublic (HMAC-verified)Receives product updates from Bold Commerce and queues a product import job.
/boldcommerce/webhook/orderPOSTPublic (HMAC-verified)Receives order events and queues an order import job.
/boldcommerce/webhook/customerPOSTPublic (HMAC-verified)Receives customer events and queues a customer import job.
/boldcommerce/webhook/refundPOSTPublic (HMAC-verified)Receives refund events and queues a refund import job.

Connecting through OAuth. Create the connection record first with at least the Shop URL, API Key and Client Secret filled in. Then start the connection from your Bold Commerce admin — the app's launch URL is https://<your-odoo>/boldcommerce/install?shop=<your-shop-domain>. /boldcommerce/install refuses a shop domain it cannot match to a saved boldcommerce.instance record, verifies the HMAC when Bold Commerce sends one, and issues a single-use state nonce before redirecting to the authorization screen. /boldcommerce/callback re-verifies the HMAC, rejects a state that does not match the nonce just issued, and refuses a request that carries no authorization code. When the checks pass, the token is stored on the connection record and its state becomes connected; a failure at any check ends the handshake on an error page and no token is stored.

Webhooks. Point Bold Commerce's product, order, customer and refund webhooks at the four /boldcommerce/webhook/... URLs above. Every webhook request must carry two headers:

  • X-Boldcommerce-Shop-Domain — the shop the event belongs to. The module matches it against the Shop URL of your saved connection records to find the right one.
  • X-Boldcommerce-Hmac-SHA256 — a Base64 HMAC-SHA256 signature of the raw request body, computed with that connection's Client Secret.

A verified webhook is not imported on the spot: the payload is stored as a pending queue job (Boldcommerce → Operations → Queue Jobs) and a receipt is written to the module log. The Process Queue Jobs scheduled action (every 5 minutes by default) picks the jobs up, so the data lands in Odoo within minutes of the event. A request whose shop domain matches no connection, or whose signature does not verify, is rejected — nothing is imported — and the reason is recorded in Boldcommerce → Operations → Logs.

Scheduled actions

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

Scheduled actionRuns everyEnabled on install
Boldcommerce: Sync Products30 minutesYes
Boldcommerce: Sync Orders15 minutesYes
Boldcommerce: Sync Customers60 minutesYes
Boldcommerce: Sync Inventory10 minutesYes
Boldcommerce: Process Queue Jobs5 minutesYes
Boldcommerce: Import Payout Reports6 hoursYes
Boldcommerce: Import Refunds30 minutesYes
Boldcommerce: Auto Risk Detection30 minutesYes
Boldcommerce: Generate Analytics4 hoursYes
Boldcommerce: Webhook Health Check60 minutesYes
Boldcommerce: Cleanup Old Logs24 hoursYes
Boldcommerce: Process Workflows10 minutesYes
Boldcommerce: Daily Summary Report1 dayYes

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:

  • Boldcommerce → Dashboard
  • Boldcommerce → Orders
  • Boldcommerce → Refunds
  • Boldcommerce → Products
  • Boldcommerce → Customers
  • Boldcommerce → Payouts
  • Boldcommerce → Analytics
  • Boldcommerce → Operations — Run Operations, Queue Jobs, Logs
  • Boldcommerce → Configuration — Instances, Locations, Payment Gateways, Scheduled Actions, Webhooks

A normal first run is:

  1. Save the connection record and complete the OAuth handshake before importing anything.
  2. Review the mapping records 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 log records during the first full sync. Failures are recorded there rather than raised at the user.

Troubleshooting

Syncing

SymptomCause and fix
The connection will not validateRe-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 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 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. A single malformed record no longer aborts the run (see Version history) — it is skipped and logged, and the rest of the batch imports.
Records import but map to the wrong Odoo valuesFix the mapping records under the module's configuration, 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.

Webhooks

SymptomCause and fix
Webhooks are rejected or never importEach webhook must carry X-Boldcommerce-Shop-Domain matching a saved connection's Shop URL, and a valid X-Boldcommerce-Hmac-SHA256 signature computed with that connection's Client Secret. Check Boldcommerce → Operations → Logs — every rejection is recorded there with its reason.
Verified webhooks import lateWebhook payloads are queued and processed by the Process Queue Jobs scheduled action. If imports lag, check that this action is enabled and watch Boldcommerce → Operations → Queue Jobs for stuck jobs.

Version history

Odoo versionVersion you download today
17.017.0.1.1.0 — $249 USD
18.018.0.1.1.0 — $249 USD
19.019.0.1.1.0 — $349 USD

ECOSIRE module versions are <odoo major>.0.<module major>.<minor>.<patch>, so 19.0.1.1.0 is the Odoo 19 build of module release 1.1.0. Your installed version is shown on the module's page in Apps.

What the recent releases change for you as a user:

  • 1.1.0 (all series) — nothing to activate. The module no longer depends on the separate ecosire_license_client module, so installation is a single ZIP: no licence key, no activation screen, no daily licence re-verification running in the background. Every capability that used to sit behind the licence check is still there and now runs without it. See No activation step.
  • 1.0.13 — a bad record can no longer lose a whole sync run. When Bold Commerce returns one malformed or unexpected record in a batch, the module now isolates it: that record alone is rolled back and written to the logs, and every other record in the batch still imports. Before this change a single bad record could abort the run, roll back records that had already imported, and still leave the log claiming success.

Support