Skip to main content

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 namebidorbuy_store_management
Odoo versions17.0, 18.0, 19.0 (Community or Enterprise)
Current version17.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 licenceOPL-1
CategoryConnector
Read this first: Bob Shop has no public REST API

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​

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
ECOSIRE dependencyNone
Python packagesrequests
Platform accountA 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
  1. Go to Apps and click Update Apps List (developer mode must be on).
  2. Search for Bidorbuy Store Management and click Install.
  3. 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:

FieldTechnical nameRequiredWhat to enter
Instance NamenameYesAny label, for example "Bob Shop ZA"
Bidorbuy Shop URLshop_urlYesYour shop's domain. The signed import endpoints use it to find this record (see below)
Companycompany_idYesThe Odoo company that owns the shop
API Key / Client IDapi_keyNeeded for Test ConnectionAny non-empty reference. Bob Shop issues no API key, so nothing is sent to Bob Shop with it
Client Secretshared_secretNeeded for the import endpointsA long random secret you choose. It signs requests to the import endpoints
Default Warehousewarehouse_idNoWarehouse used for orders that have no location mapping
Payout Journaljournal_idNoJournal for payout reconciliation
Pricelist, Salespersonpricelist_id, salesperson_idNoDefaults 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:

FieldTechnical nameRequired
Location NamenameYes
Bob Shop Location IDbidorbuy_location_idYes — the identifier you use for this location on Bob Shop
Warehouse for Orderswarehouse_idNo
Export Stock Warehousesexport_stock_warehouse_idsNo
Import Stock Warehouseimport_stock_warehouse_idNo
Primary Locationis_primaryNo
Address, City, Province, Country, ZIPaddress1, city, province, country, zip_codeNo

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.

RouteMethodCreates a queue job of type
/bidorbuy/webhook/orderPOSTImport Order
/bidorbuy/webhook/productPOSTImport Product
/bidorbuy/webhook/customerPOSTImport Customer
/bidorbuy/webhook/refundPOSTImport 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 actionRuns everyEnabled on install
Bidorbuy: Sync Products30 minutesYes
Bidorbuy: Sync Orders15 minutesYes
Bidorbuy: Sync Customers60 minutesYes
Bidorbuy: Sync Inventory10 minutesYes
Bidorbuy: Process Queue Jobs5 minutesYes
Bidorbuy: Import Payout Reports6 hoursYes
Bidorbuy: Import Refunds30 minutesYes
Bidorbuy: Auto Risk Detection30 minutesYes
Bidorbuy: Generate Analytics4 hoursYes
Bidorbuy: Webhook Health Check60 minutesYes
Bidorbuy: Cleanup Old Logs24 hoursYes
Bidorbuy: Process Workflows10 minutesYes
Bidorbuy: Daily Summary Report1 dayYes

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​

TaskHow it works with Bob Shop
Orders into OdooThrough /bidorbuy/webhook/order from your own feed reader, or entered by hand under Bidorbuy → Orders. No direct pull from Bob Shop
Products to Bob ShopBob 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 ShopThrough your product feed. There is no stock API to push to
Shipping and order status on Bob ShopUpdated in the Bob Shop seller panel. There is no endpoint to confirm a shipment or change a status
Payouts and refundsRecorded in Odoo (Bidorbuy → Payouts, Bidorbuy → Refunds) and reconciled against your journal; the figures come from your Bob Shop statements
Dashboards, analytics, risk flags, logsAutomatic, 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 at www.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.