Bob Shop (bidorbuy) Store Management
This is the installation and operations guide for Bob Shop (bidorbuy) Store
Management. Bob Shop is the South African marketplace formerly known as
bidorbuy (www.bobshop.co.za).
| Technical name | bidorbuy_store_management |
| Odoo versions | 17.0, 18.0, 19.0 (Community or Enterprise) |
| Current version | 17.0 → 17.0.1.0.13, 18.0 → 18.0.1.0.14, 19.0 → 19.0.1.1.0 |
| Price | $349 USD — one-time, per Odoo version |
| Odoo module licence | OPL-1 |
| Category | Connector |
Bob Shop publishes no REST API for sellers: there is no order endpoint, no product endpoint and no location or stock endpoint that any integration can call. Its help centre documents orders as an XML feed at a URL that Bob Shop issues to each seller on request, and products as a seller-hosted feed that Bob Shop polls. This module therefore never calls an invented endpoint and never reports a sync it did not do. What it gives you is the Odoo side: the connection record, location and warehouse mapping, order, customer, product, payout and refund records, signed import endpoints, a queue with retries, logs, dashboards and an audit trail. The section What is automatic and what is manual lists exactly which is which.
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, portal, product, contacts, digest — Odoo installs any that are missing |
| ECOSIRE dependency | None |
| Python packages | requests |
| Platform account | A Bob Shop seller account (seller panel at www.bobshop.co.za) |
Install the Python package into the same interpreter that runs Odoo:
sudo -u odoo pip install requests
Installation
1. Download the module for your Odoo version
Download the build for your Odoo major version from the Odoo Apps Store after purchase. Do not install a build made for a different Odoo major version.
2. Extract into your addons path
unzip bidorbuy_store_management-*.zip -d /opt/odoo/addons/
ls /opt/odoo/addons/bidorbuy_store_management/__manifest__.py # sanity check
The module must end up as a single top-level bidorbuy_store_management/
directory with __manifest__.py directly inside it.
3. Restart Odoo and install
sudo systemctl restart odoo
- Go to Apps and click Update Apps List (developer mode must be on).
- Search for Bidorbuy Store Management and click Install.
- Odoo installs the standard Odoo apps listed above automatically.
When the install finishes, a Bidorbuy menu appears in the main Odoo app switcher.
Configuration
Create the connection record
Go to Bidorbuy → Configuration → Instances and create a record. The fields
the module defines for the connection (bidorbuy.instance) are:
| Field | Technical name | Required | What to enter |
|---|---|---|---|
| Instance Name | name | Yes | Any label, for example "Bob Shop ZA" |
| Bidorbuy Shop URL | shop_url | Yes | Your shop's domain. The signed import endpoints use it to find this record (see below) |
| Company | company_id | Yes | The Odoo company that owns the shop |
| API Key / Client ID | api_key | Needed for Test Connection | Any non-empty reference. Bob Shop issues no API key, so nothing is sent to Bob Shop with it |
| Client Secret | shared_secret | Needed for the import endpoints | A long random secret you choose. It signs requests to the import endpoints |
| Default Warehouse | warehouse_id | No | Warehouse used for orders that have no location mapping |
| Payout Journal | journal_id | No | Journal for payout reconciliation |
| Pricelist, Salesperson | pricelist_id, salesperson_id | No | Defaults applied to imported sale orders |
Credential fields are visible to Settings administrators only.
The same record carries behaviour checkboxes — auto_confirm_order,
auto_create_invoice and auto_validate_invoice. All are off on install.
Turn them on one at a time, once orders are reaching Odoo the way you expect.
Test Connection
Test Connection checks one thing, and says so: that this Odoo server can
reach the Bob Shop seller panel at https://www.bobshop.co.za/. Because Bob
Shop has no API to authenticate against, a green result means "the seller
panel is reachable", not "credentials accepted". A red result names the URL
it could not reach; allow outbound HTTPS to www.bobshop.co.za through your
firewall or proxy. The result is recorded on the instance (Connected or
Error), and the scheduled actions only consider instances marked
Connected.
The Connect to Bidorbuy button on the instance opens www.bobshop.co.za in a
new tab, where you sign in with your Bob Shop seller username and password.
Locations
Go to Bidorbuy → Configuration → Locations to map where your Bob Shop
stock ships from to Odoo warehouses. Since 19.0.1.1.0 you fill these fields
in yourself from your Bob Shop seller panel:
| Field | Technical name | Required |
|---|---|---|
| Location Name | name | Yes |
| Bob Shop Location ID | bidorbuy_location_id | Yes — the identifier you use for this location on Bob Shop |
| Warehouse for Orders | warehouse_id | No |
| Export Stock Warehouses | export_stock_warehouse_ids | No |
| Import Stock Warehouse | import_stock_warehouse_id | No |
| Primary Location | is_primary | No |
| Address, City, Province, Country, ZIP | address1, city, province, country, zip_code | No |
Signed import endpoints
The module exposes these HTTP routes on your Odoo server. Bob Shop itself does not send webhooks; these endpoints are for a feed reader or middleware you run (for example a job that reads your Bob Shop XML order feed and posts each order as JSON), so records reach Odoo through the module's queue instead of by hand.
| Route | Method | Creates a queue job of type |
|---|---|---|
/bidorbuy/webhook/order | POST | Import Order |
/bidorbuy/webhook/product | POST | Import Product |
/bidorbuy/webhook/customer | POST | Import Customer |
/bidorbuy/webhook/refund | POST | Import Refund |
Every request must carry two headers:
X-Bidorbuy-Shop-Domain— the value of the instance's Bidorbuy Shop URL; it selects the instance.X-Bidorbuy-Hmac-SHA256— the Base64-encoded HMAC-SHA256 of the raw request body, keyed with the instance's Client Secret.
A request with a missing or wrong signature, or for an unknown shop, is refused and logged; nothing is created. An accepted request creates a pending queue job (Bidorbuy → Operations → Queue Jobs) and a log row.
Two further routes, /bidorbuy/install and /bidorbuy/callback, exist only so
that old links do not break. Bob Shop has no OAuth authorisation flow, so they
do not authorise anything and you never need to register them anywhere.
Scheduled actions
The module installs 13 scheduled actions (Settings → Technical → Scheduled Actions, or Bidorbuy → Configuration → Scheduled Actions):
| Scheduled action | Runs every | Enabled on install |
|---|---|---|
| Bidorbuy: Sync Products | 30 minutes | Yes |
| Bidorbuy: Sync Orders | 15 minutes | Yes |
| Bidorbuy: Sync Customers | 60 minutes | Yes |
| Bidorbuy: Sync Inventory | 10 minutes | Yes |
| Bidorbuy: Process Queue Jobs | 5 minutes | Yes |
| Bidorbuy: Import Payout Reports | 6 hours | Yes |
| Bidorbuy: Import Refunds | 30 minutes | Yes |
| Bidorbuy: Auto Risk Detection | 30 minutes | Yes |
| Bidorbuy: Generate Analytics | 4 hours | Yes |
| Bidorbuy: Webhook Health Check | 60 minutes | Yes |
| Bidorbuy: Cleanup Old Logs | 24 hours | Yes |
| Bidorbuy: Process Workflows | 10 minutes | Yes |
| Bidorbuy: Daily Summary Report | 1 day | Yes |
The four Sync actions and Import Payout Reports / Import Refunds would read from Bob Shop, and Bob Shop has nothing for them to read. They do nothing until an instance is Connected; after that, each run records a failed queue job whose log explains that Bob Shop exposes no endpoint for it. If you bring records in through the import endpoints or by hand, archive those six actions so the queue stays clean. Process Queue Jobs is the one that processes what the import endpoints receive — keep it on.
What is automatic and what is manual
| Task | How it works with Bob Shop |
|---|---|
| Orders into Odoo | Through /bidorbuy/webhook/order from your own feed reader, or entered by hand under Bidorbuy → Orders. No direct pull from Bob Shop |
| Products to Bob Shop | Bob Shop polls a seller-hosted product feed that you register in the seller panel. The module does not create, update or delete listings on Bob Shop |
| Stock levels on Bob Shop | Through your product feed. There is no stock API to push to |
| Shipping and order status on Bob Shop | Updated in the Bob Shop seller panel. There is no endpoint to confirm a shipment or change a status |
| Payouts and refunds | Recorded in Odoo (Bidorbuy → Payouts, Bidorbuy → Refunds) and reconciled against your journal; the figures come from your Bob Shop statements |
| Dashboards, analytics, risk flags, logs | Automatic, on the records that are in Odoo |
Bob Shop's own help centre (help.bobshop.co.za) explains how to request your
order feed URL and set up a product feed.
Using the module
The menu is laid out as:
- Bidorbuy → Dashboard
- Bidorbuy → Orders
- Bidorbuy → Refunds
- Bidorbuy → Products
- Bidorbuy → Customers
- Bidorbuy → Payouts
- Bidorbuy → Analytics
- Bidorbuy → Operations — Run Operations, Queue Jobs, Logs
- Bidorbuy → Configuration — Instances, Locations, Payment Gateways, Scheduled Actions, Webhooks
Run Operations opens a wizard where you pick an instance, an operation and a date range and run it once. Logs and Queue Jobs show when each entry was created and last updated and can be sorted by date. Old log rows are cleaned up by Cleanup Old Logs according to the retention setting.
One failing record never undoes the others: every import and sync loop handles records one at a time, so a bad record is rolled back and logged on its own while the rest of the run is kept.
What's new in 19.0.1.1.0
- Links to Bob Shop work again. Every message that sent you to Bob Shop —
Test Connection, payouts, refunds, categories, payment gateways — pointed at
sell.bobshop.co.za, a host that no longer exists. Test Connection therefore blamed your server's internet when the fault was our link. All of them now use the live seller pages atwww.bobshop.co.za. - Dates appear in Logs and Queue Jobs. The "Created On" and "Last Updated" columns were empty and could not be sorted; they now show real dates, and the log-retention setting now removes old rows as intended.
- You can create Locations. "Bob Shop Location ID" was read-only and required at the same time, so no location could be saved and stock mapping was unreachable. The Location ID, name, address and flags are now fields you fill in.
- Two fields that could never work are gone. "Granted Scopes" (Bob Shop has no OAuth server to grant one) and "Legacy (Fulfillment Service)" (no code ever read it) were removed from the forms rather than left looking broken.
These fixes are in the Odoo 19 build. The Odoo 17 (17.0.1.0.13) and Odoo 18
(18.0.1.0.14) builds carry the per-record rollback protection described
above; their seller-panel links still point at the old sell.bobshop.co.za
host, so open www.bobshop.co.za directly on those versions.
Uninstalling
When you uninstall, Odoo removes the module's menus, scheduled actions and its own Bidorbuy records. Sale orders, invoices, customers and products it created in standard Odoo stay in Odoo.
Support
Write to info@ecosire.com with your Odoo version, the module version shown in
Apps, and the relevant rows from Bidorbuy → Operations → Logs.