Subscriptions
Every retainer, its own record
A subscription records what a client pays per period, and for what scope: a recurring agreement attached to the client, with a status, a type and a price that never rewrites itself.
Attached to the client, not floating
A subscription hangs off the client, alongside contacts, projects and domains: one panel on the client page shows which recurring agreements are running. It is a revenue concept (what the client pays per period), separate from a project's hour budget. The two reference each other; they are not the same row.
Types and templates you set up yourself
Hosting, maintenance, SEO: the categories are not code. You configure them yourself under Settings → Subscriptions, with labels in every language. A template like "Hosting Basic, €25 per month, 1 hour included" prefills the create form, so a new agreement stands up in seconds. The first time you activate a subscription, its type can spawn the matching onboarding tasks.
- Tenant-owned types with per-language labels
- Templates that prefill the form, no server-side copy
- Task templates that fire on first activation
A price that never rewrites itself
The price lives in append-only history with an effective date. A rate change appends a row, it overwrites nothing, so the amount on last year's invoice stays answerable. Raise the fee on 1 January and December keeps its old number. And an invoice is not one opaque figure: its lines are spelled out one by one.
Included hours, measured against real work
A subscription can include hours. Consumption is measured against the time logged on the linked projects: exactly the same total every budget bar and burn colour reads, not a separate counter drifting out of step. Unused hours lapse or carry over by a rollover rule you set yourself, not law written in code. Overage is flagged, never silently billed.
The list is a worksheet, the revenue one glance
Every subscription sits in the same DataTable as the rest of the platform: sort by name, status, start date or next invoice, filter by client, status and type, show or hide columns. Select a run of rows and switch their status or delete them in one move. A daily cron finds what is due, advances the next invoice date by a period and hands the lines to your accounting integration; the Revenue overview sums MRR and ARR and shows what falls due in the coming month.
- Filter by client, status and type
- Bulk: switch status or delete
- Four statuses: Draft, Active, Paused, Cancelled
- MRR, ARR and upcoming invoices in one place
Want to know more?
The documentation describes every module in detail, from installation to permissions.