Skip to content

Trakline

Multi-tenant subscription delivery in one Odoo database: catalog, orders, routes, billing.

The short answer

Trakline is a free, LGPL-3 Odoo app for subscription delivery operators running more than one business in one database. Platform, vendor group, vendor and sub-vendor are company types arranged as a tree, and every business model inherits a tenant mixin, so isolation is a company-scoped record rule rather than a habit. Catalog, orders, subscriptions, routes, drivers, returnable containers and billing all live in the same model set.

Request this module

Last updated

What it is for

A subscription delivery business is a stack of products pretending to be one. Catalog here, orders there, routes in a third place, driver attendance in a spreadsheet and billing reconciled by hand at month end. Each piece works on its own. The joins between them are where the business actually lives, and they are held together by people remembering things. The multi-vendor version is worse: an operator with vendor groups underneath, each with their own vendors, either runs a database per tenant and upgrades them forever, or runs one database and hopes nobody queries across the boundary.

Platform
Odoo
Category
Field service
Works with
Odoo 19
Technical name
trakline
Status
Direct from webbox
Pricing
Free

What is inside it

  1. 01

    Tenancy

    Every business model inherits a tenant mixin giving it a company and a root vendor group, so isolation is a record rule. The dashboard runs as the user, not a superuser, so a broken rule shows on the board first.

  2. 02

    Orders

    A cart checkout and a recurring subscription line both become the same commerce order, which makes fulfilment a single number. Subscriptions carry their own cycle, and pause, resume and renewal are states rather than diary entries.

  3. 03

    Verticals

    Cattle farms, water cans and gas cylinders ship as first-class models instead of a pile of custom fields on a partner, because a returnable asset is its own problem.

  4. 04

    The board

    Six tiles across the platform, obeying the same tenant rules as everything else, so a vendor opening it sees their own book. Orders by channel puts cart, manual and subscription on one ledger.

What it looks like in practice

  1. A vendor opens the board and must see only their own book

    Several vendors and sub-vendors trade inside the same database, and one of them opens the overview.

    The dashboard queries as the logged-in user instead of escalating, so the company record rules that fence orders, routes, drivers and invoices bound every tile as well. Clicking a tile opens the orders it counted, under those same rules.

    Orders
    81
    Delivered
    53
    Fulfillment rate
    65.4%

    Figures from the module's own demo data, on a fresh install. Install with demo data; the overview opens populated across every tenant.

    TenancyThe board

  2. A standing weekly line and a walk-up cart land on the same ledger

    A recurring order and a one-off checkout both need fulfilling on the same day, and somebody has to report one fulfilment figure.

    Both become the same commerce order, so fulfilment is one number rather than two half-numbers added up by whoever knows the difference. The subscription holds its cycle and generates its order when the cycle comes round.

    Active subscriptions
    11
    Revenue
    $2.1k
    Average order value
    $26

    Figures from the module's own demo data, on a fresh install. On a demo install, open Orders and group by channel.

    OrdersThe board

  3. A retired module is already sitting in the target database

    The database you want this in still carries one of the older single-purpose modules that this one replaces.

    Their table names are near-identical, so the install aborts on a duplicate key instead of half-migrating. The retired modules remain in the tree marked uninstallable, for migration reference only.

    Behaviour of the shipped code.

    Tenancy

What it deliberately does not do

Do not install a retired trakop module beside it
This module supersedes seventeen of them and their table names are near-identical, so the install aborts on a duplicate key. They stay in the tree marked uninstallable, for migration reference only.
Odoo 19 only
There is no 18.0 branch of this module today. If you are on 18, this is not yet portable to you.
No route optimisation engine
Routes, stops and batches are modelled and dispatchable. Choosing the best sequence for a day's driving is not solved here.
No payment gateway
Wallets, payments, refunds and reconciliation are modelled. Taking the money is your provider's job.

Questions

Can I install this on Odoo Online?
No. Odoo Online cannot install modules that contain Python, so this runs on Odoo.sh or a self-hosted instance. Check the versions listed above for the series and edition it is verified against.
Can I install it next to the older trakop modules?
No. This one supersedes seventeen of them and their table names are near-identical, so the install aborts on a duplicate key instead of half-migrating. They remain in the tree marked uninstallable, for reference. Moving an existing database across is a migration job, not an install.
Is there a licence key or an activation form?
No. It is LGPL-3 and free, with no key, no activation step and no registration form. The one setup decision that matters is your company type, since platform, vendor group, vendor and sub-vendor each change what the record rules beneath them do.
Does it run on Odoo 18?
Not today. There is no 18.0 branch of this module, so it targets Odoo 19 only, in Community or Enterprise. It depends on base, mail and web, every one of which ships with Odoo, and it needs no external Python packages and no extra services.

Have something to build?

Tell us the problem. We'll come back with a plan, a price, and who'd actually build it.

  • Free scoping call
  • Reply within 1 business day
  • No lock-in