Skip to main content

Blibli Store Management

This is the installation and configuration guide for Blibli Store Management, the ECOSIRE connector that links your Odoo database to your Blibli seller account — products, orders, customers, stock, payouts and refunds, with a scheduled-action and queue-driven sync engine. Everything on this page describes the blibli_store_management module exactly as it ships today — the facts below were read out of the released build, not from a roadmap.

Technical nameblibli_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$499 USD — one-time, per Odoo version
Odoo module licenceOPL-1 (Odoo Proprietary License v1.0)
CategoryConnector
Supportinfo@ecosire.com

Each Odoo major version is a separate product and a separate download — buy and install the build that matches the Odoo version you run.

Licence-free build

Since version 1.1.0 the module installs and runs standalone. There is:

  • no activation key to paste anywhere,
  • no licence-client module to download first,
  • no phone-home check that can block the connector after install.

The module is licensed contractually under OPL-1: you need a valid purchase to use it, but nothing in the code gates installation, connection or syncing. Every capability documented on this page works the moment the module is installed.

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 — all standard Odoo; Odoo installs any that are missing
Python packagesrequests
Platform accountA Blibli seller account with API access — the API Key and API Secret come from Blibli's Merchant Tools Administration (MTA)

There is no separate ECOSIRE dependency to install. Install the Python package 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 download the build matching your Odoo version from your dashboard.

2. Extract into your addons path

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

The module must end up as a single top-level blibli_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 Blibli Store Management and click Install.
  3. Odoo pulls in the standard Odoo apps listed above automatically.

When the install finishes, a Blibli menu appears in the main Odoo app switcher. Nothing else is required — no licence activation step exists.

Configuration

Connect to Blibli

Go to Blibli → Configuration → Instances and create a connection record. The connection fields are:

FieldTechnical nameTypeRequired
Instance NamenameCharYes
Companycompany_idMany2oneYes
API Keyapi_keyCharNo
API Secretapi_secretCharNo
Merchant IDmerchant_idCharNo

The fields marked Yes are enforced by the model — Odoo will not let you save the record without them. The API Key and API Secret come from Blibli's Merchant Tools Administration; they are stored as password fields visible only to system-level users.

Save the record, then use the Test Connection action on the instance to verify the credentials before importing anything. The instance status moves between Draft, Connected and Error so you can see at a glance whether the last connection attempt succeeded.

The same record carries the settings the sync engine uses when it creates Odoo documents:

  • Order automation — three checkboxes, all off by default: auto_confirm_order (confirm imported sales orders), auto_create_invoice (create the customer invoice), auto_validate_invoice (post it). Turn them on one at a time, only when you are ready for the module to act without a human in the loop.
  • Mapping defaults — default warehouse, pricelist, salesperson, and the journal used for payout postings. Point these at the Odoo records you want imported data to land on before the first import.
  • Risk thresholds — critical, high and medium score cut-offs used by the risk-detection scheduled action to flag suspicious orders.

The module's outbound API traffic goes to api.blibli.com (the seller API MTA proxy — every sync call). Customer address enrichment additionally makes a best-effort lookup at api.zippopotam.us to derive a state from a country + postcode when Blibli did not send one. Your firewall must allow outbound HTTPS to both hosts.

Scheduled actions

The module installs 9 scheduled actions (Settings → Technical → Scheduled Actions), all enabled on install:

Scheduled actionRuns every
Blibli: Sync Customers60 minutes
Blibli: Process Queue Jobs5 minutes
Blibli: Import Payout Reports6 hours
Blibli: Auto Risk Detection30 minutes
Blibli: Generate Analytics4 hours
Blibli: Webhook Health Check60 minutes
Blibli: Cleanup Old Logs24 hours
Blibli: Process Workflows10 minutes
Blibli: Daily Summary Report1 day

The heart of the engine is Process Queue Jobs: imports, exports and webhook payloads are queued as jobs and drained by this action, so a burst of platform traffic is worked through at a controlled pace. Product, order and stock transfers are triggered through the operations wizard (below) or incoming webhooks rather than by their own crons — you decide when the bulk work runs.

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.

Webhooks

The module exposes four externally reachable webhook endpoints so Blibli can push events to your Odoo instead of waiting for the next scheduled pull:

EndpointQueues an import of
POST /blibli/webhook/producta product
POST /blibli/webhook/orderan order
POST /blibli/webhook/customera customer
POST /blibli/webhook/refunda refund

Register these URLs in your Blibli seller portal webhook configuration, pointing at your Odoo base URL (for example https://erp.example.com/blibli/webhook/order). Every endpoint expects POST with a JSON body and answers with a small JSON status object ({"status": "ok"}, or {"status": "error", "message": ...} when the request is rejected).

Each request is authenticated with two headers:

  • X-Blibli-Shop-Domain — identifies which configured instance the event belongs to (matched against your instance records);
  • X-Blibli-Hmac-SHA256 — the request signature: Base64 of HMAC-SHA256 computed over the raw request body with the instance's API Secret as the key.

A request with a missing header, an unknown instance, or a signature that does not match the body is rejected before anything is queued — a misconfigured secret on the Blibli side shows up in Odoo as rejected webhook calls, not as corrupted data. Accepted payloads are queued as import jobs (visible under Blibli → Operations → Queue Jobs) and processed by the Process Queue Jobs scheduled action, with every received event written to the log.

Outbound webhook behaviour (events Odoo sends or forwards) is configured per instance under Blibli → Configuration → Webhooks: each record defines the trigger action, payload format, retry count, timeout and batch size, plus its own HMAC secret for signature verification and optional custom headers.

Using the module

The module's menu is laid out as:

  • Blibli → Dashboard
  • Blibli → Orders
  • Blibli → Refunds
  • Blibli → Products
  • Blibli → Customers
  • Blibli → Payouts — visible to users in the Blibli Finance access group
  • Blibli → Analytics — visible to users in the Blibli Analytics access group
  • Blibli → Operations — Run Operations, Queue Jobs, Logs
  • Blibli → Configuration — Instances, Locations, Payment Gateways, Scheduled Actions, Webhooks

Access is controlled by the module's own user groups (Blibli User, Manager, Administrator, Finance, Analytics, Operations, Developer) under Settings → Users, so you can give warehouse staff read access to orders without exposing payout or configuration screens.

A normal first run is:

  1. Save the connection record and click Test Connection — confirm the status shows Connected before importing anything.
  2. Set the mapping defaults (warehouse, pricelist, journal) so imported data lands on the right Odoo records.
  3. Run a small import first — Blibli → Operations → Run Operations, restrict it by date or by a handful of record IDs — 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.

Run Operations (the operations wizard)

Blibli → Operations → Run Operations is the manual control room. Pick the instance and one of thirteen operations:

  • Imports — products, orders, unshipped orders, customers, stock levels, locations, payment gateways
  • Exports — products, customers, stock levels, and Update Order Status / Export Fulfillment (pushes fulfilment and tracking back to Blibli)
  • Finance — import a payout report, import refunds

Each run can be narrowed with a date range (for order, payout and refund imports), a Specific IDs list (comma-separated Blibli IDs for a targeted import), Skip Existing Records (import only what is not already in Odoo), and Import Product Images.

Re-running an operation is safe: existing records matched on their Blibli identifier are updated, not duplicated. If a first attempt half-finished, check the existing records before re-running rather than importing on top.

One bad record in a batch no longer ruins the run: each record is processed in its own protected transaction, so a single malformed product or order is skipped and logged while the rest of the batch completes. Check Blibli → Operations → Logs for the per-record failure detail instead of re-running the whole import blind.

Troubleshooting

SymptomCause and fix
The connection will not validateRe-check the fields 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.
Webhooks always answer Instance not foundThe X-Blibli-Shop-Domain header sent by the platform does not match any configured instance record. Align the value in the seller portal with the instance name in Odoo.
Webhooks always answer Invalid signatureThe signature was computed with a different secret than the instance's API Secret field. Re-copy the secret into both the seller portal and the Odoo instance.
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. Individual bad records are skipped and logged, not silently lost.
Records import but map to the wrong Odoo valuesFix the mapping defaults on the instance (warehouse, pricelist, journal), then re-run the import.
Customers import without a stateThe state-from-postcode enrichment is best-effort — if the external lookup or the platform data fails, the state is left empty and the rest of the address still imports. Fill it manually or re-run the customer import.
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.1.1.0
18.018.0.1.1.0
19.019.0.1.1.0

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

What changed in 1.1.0

  • Standalone install. The separate licence-client dependency, the activation key flow and every licence check were removed. The connector now installs and runs with only standard Odoo apps — nothing to activate, nothing that can lock you out later.
  • Fault-tolerant imports. Every per-record sync and import loop now runs in its own protected transaction. A single malformed record from Blibli is skipped and logged instead of aborting the whole run — and a mid-run database error can no longer make the closing step silently roll back every good record that came before it.
  • Unchanged behaviour elsewhere. Customer address enrichment (text cleaning, country and state resolution, state-from-postcode) works exactly as before; the helpers it relies on are now carried by the module itself.

Support