Jane Store Management
The ECOSIRE Jane Store Management module connects an Odoo 19 instance to the Jane partner API. It imports your product menu and your orders, exports stock levels, receives signed webhooks, and gives you an Odoo-side dashboard over the result — all from your own database, with no ECOSIRE service in the loop.
Compatibility: Odoo 17.0, 18.0 and 19.0 (Community or Enterprise)
Current shipped version: 19.0 → 19.0.1.1.1, 18.0 → 18.0.1.1.1, 17.0 → 17.0.1.1.1
Price: $349 USD (one-time, per Odoo major version)
Licence: OPL-1 — no key required
This page is the overview. The step-by-step download, configuration, operations and troubleshooting guide lives at Jane Store Management — installation & configuration.
This module integrates the Jane partner API (default host api.iheartjane.com), which is
partner-gated: it only works with credentials issued under a Jane partnership agreement.
It does not integrate jane.com, the boutique flash-sale marketplace. jane.com publishes no public seller API, so no module can sync it; those sellers fulfil through ShipStation. If that is your setup, you want a ShipStation integration, not this module.
What this module does
- Orders — imports pickup/delivery orders from
GET /v1/orderswith a date range, matched idempotently into Odoo sale orders. Re-running an import updates rather than duplicates, and one bad order is counted and skipped instead of losing the batch. Each imported sale order carries its Jane order ID, instance and payment/fulfilment status on a Jane tab, searchable from Sales - Currencies — an order in a currency that is not active in Odoo, or has no exchange rate, is refused and reported as failed rather than stored as if it were your company currency
- Products — imports your store menu from
GET /v1/dispensary/{id}/menuinto product mappings, with per-record containment so a single unmappable item cannot abort the run - Stock — pushes Odoo stock levels to each mapped location through
PUT /v1/dispensary/{id}/inventory - Webhooks — four inbound endpoints (
/jane/webhook/product,/order,/customer,/refund) verified by an HMAC-SHA256 signature over the raw body against your Shared Secret, with the store resolved from the request headers. Rejected deliveries are logged with their reason, never processed quietly - Locations — an explicit map of Jane location to Odoo warehouse, entered by you from your Jane dashboard, so stock lands in the warehouse you chose
- Dashboard — order, product, customer and queue counts, error counts, average order value and a sales chart, filtered by period and by instance, computed entirely from your own records, with every order converted into the company currency at its date before totals are added up
- Analytics — daily, weekly and monthly analytics records generated on a schedule
- Operations and logs — a wizard that runs the three documented operations and reports real processed / created / updated / skipped / failed counts, plus a log of every sync and rejected webhook
Honest boundaries
We would rather state these up front than have you find them after configuring.
- Access is gated by Jane, not by this module. No credentials, no sync. There is no self-service signup and nothing here works around that.
- Only documented routes are called. Three operations plus a health probe. Where Jane's reference publishes no route for a capability, the module says so and stops rather than guessing — a fabricated endpoint installs cleanly, passes its own tests, and then silently does nothing against the real API.
- No response schemas are claimed. Responses are read defensively; a record whose fields cannot be mapped is skipped and counted.
- Stock import from Jane is not available. There is no documented read route for it, so the module does not invent one. Stock changes reach Odoo through the webhook.
- Loyalty, reservations, age verification, compliance tags, reviews and sales reports are not implemented. Jane records these as partner-gated operations with no published request or response shapes. They are documented as not built rather than half-built.
- Locations are not auto-discovered. You enter them.
Prerequisites
- Odoo 17.0, 18.0 or 19.0 (Community or Enterprise)
- Your ECOSIRE purchase of this module (no key is entered in Odoo)
- Jane partner API credentials: Store ID, Access Token / API Key, and a Shared Secret if you will receive webhooks
- The Python
requestspackage in the interpreter that runs Odoo
Quick start
- Download the ZIP from your ECOSIRE dashboard.
- Extract it into your addons path and restart Odoo. No ECOSIRE dependency is required.
- Apps → Update Apps List, search for Jane Store Management, install.
- Jane → Configuration → Instances → create a connection with your Store ID and API key, then press Connect to Jane (or Test Connection). Both check your credentials against Jane and set the instance to Connected or Error from the real answer, with the reason on the record.
- Jane → Configuration → Locations → add the location(s) you operate and map each to an Odoo warehouse.
- Jane → Operations → Run Operations → import your menu and your orders, one operation at a time, and check the counts it reports.
Full detail — connection fields, webhook headers, scheduled actions, the dashboard and troubleshooting — is in the installation & configuration guide.
What's new in 1.1.1
Released for all three series (19.0.1.1.1, 18.0.1.1.1, 17.0.1.1.1):
- Order and menu imports work: each record is counted as created, updated, skipped or failed instead of failing with an internal error.
- Connect to Jane now contacts Jane and records the real result.
- Stock export pushes stock on every run instead of reporting each location as failed.
- Tips sent as
total_tip_receivedare kept. - Orders in an unknown currency are refused, and dashboard totals are in one currency.
- Imported sale orders carry their Jane identifiers on a Jane tab.
- A manual run with failures is shown as a warning and does not move Last sync forward.
- Product images are stored correctly, and a media reference that is not a web address is reported instead of fetched.
The 18.0 and 17.0 builds now carry the same code as 19.0, including every 1.1.0 fix.