Octibiz
Demo

Durchsucht Website und Dokumentation gemeinsam. Enter zeigt alle Treffer, Esc schließt.

Reports & dashboards

Reports & dashboards screen in Octibiz

Overview

This area answers questions about your own data. Four building blocks work together:

  • Reports are saved questions — metric, period, filters, grouping.
  • Dashboards place several reports side by side.
  • Targets put a target value next to the metric, so you see deviation rather than only level.
  • Time series record metric values per reporting date — the basis for trends.

Metrics come from the modules themselves; what is not installed delivers no metric.

Core tasks

Build a report. You choose the metric, set period and filters and group. The result can be saved and shared.

Drill down to employee or line item. A click on a row opens the next level: total → brand → customer → project → employee. At project level, Drill down by lets you choose the project's invoice line items instead of the employees. Each level shows only the values of the entry you clicked. Line items exist only for document metrics such as revenue — time costs know no line item, so a margin per line item is rejected with a reason.

Jump to the source record. Next to the name of a row there is a small arrow icon: it opens the customer, project, employee, contract or — for line items — the invoice. The icon only appears if you may see the record in its own area (permission in the record's brand); otherwise the row stays plain text.

Revenue and margin per project and employee. Revenue comes from the invoices. Per project, the share of every invoice line item carrying the project counts; per employee, an invoiced time line item is split by the minutes of the employees involved. Fixed-price and flat-fee line items of a project without invoiced time are split by the minutes recorded in the project — non-billable time counts too, which is the rule for fixed prices. Line items with an article (goods, licence, external service), line items without a project and projects without recorded time stay without a person. The margin in Reporting is the invoiced margin: revenue from invoices minus time costs minus external costs; external costs cannot be assigned to an employee. Quota utilization is also available per retainer contract.

Open items and payment duration. Open items are calculated to the cut-off date from your own invoices: at the end of the period, the invoice amount minus the payments and partial corrections received up to then counts. What happened later — a payment, a correction, a cancellation, the cash discount — does not change an earlier cut-off date. Cancellation and correction credit notes do not count a second time; a stand-alone credit note (return, goodwill) reduces open items until it is refunded. Payment duration is the time from invoice date to payment receipt, weighted by amount; prepayment counts as 0 days.

Cash flow forecast. The Cash flow forecast (expected receipts) shows per month which money to expect. It consists of two parts:

  • Expected receipts from open items: the amount still open today on every sent invoice (gross, less

partial payments and corrections) on its due date. Without an entered due date the analysis uses the invoice date plus the invoice's payment terms. Overdue amounts count from today. Free-standing credit notes reduce it; invoices in a foreign currency count in euros at the rate frozen on the document.

  • Planned billing: the next runs of active recurring invoices (gross amount on the run date plus

the series' payment terms) and active billing plans (retainers, licences — net amount per cycle, because tax only arises on the invoice; that is why this part carries "net" in its name). Paused or ended series and plans do not count.

The forecast only looks ahead: for a past period it is empty. The period Next 3 months (current and the two following months) with the period Month fits best — this is how it appears as a line chart in the controlling cockpit. The template Cash flow forecast by customer shows the same values per customer. Can be broken down by brand and customer; permission reporting.kpi.financial.

Assemble a dashboard. Tiles are arranged; a dashboard can be personal or shared for a role. In the tile dialog a preview shows the tile while you set it up — with real figures, exactly as it will appear after saving; nothing is saved until Add or Apply. An open dashboard refreshes itself: next to the period it says Live while the live channel is connected — new bookings, invoices or deals then appear within seconds. If it says Polling, no live channel is set up; the figures then reload every minute while the window is visible. A role cockpit needs a role: with the scope Role, pick it in the field Role; without a role it cannot be saved. Only members of that role see it; if you move it to another role, it disappears for the previous ones.

Arrange a cockpit. Cockpits use the same grid as the home page: Edit enables dragging and resizing, arrow keys on the handle move tiles without a mouse, Save stores the layout. A new tile appears at half width below the existing ones.

Tile as image or PDF. Hover over a tile and click the download icon at the top left: As image (PNG) produces a 16:9 graphic (960 × 540 pixels), As PDF a page in the same format — with title, metric, period and date, for a presentation for example. The figures are the same as in the cockpit, including the chosen period and brand. Tiles with a metric you are not allowed to see and list tiles from the modules cannot be exported. Permission reporting.report.export; every export is logged.

Keep an eye on profitability. The profitability cockpit (Dashboards → Profitability, permission reporting.kpi.financial) lists projects with invoiced revenue, costs, invoiced margin and margin % — weakest margin first, losses in red, thin margins below 20 % in yellow. The invoiced margin uses the invoices. What a project has already earned — billable time, milestones, fixed price, even if no invoice has been written yet — is shown by the project itself in the Profitability tab as earned margin (Projects). Both figures are correct; they answer different questions. Both count a freelancer's costs only once: if their time and their supplier's orders overlap in the same project, only the cost path set in the project team counts. Filter by period, brand, status and project lead. It only shows projects you may see in the projects area. Save as report creates the template Profitability by project as a report of your own; the same template is in the report template gallery.

Track acquisition and follow-up. Sales gets these metrics:

  • New leads, Leads with deal, Leads won and from them Conversion lead → deal, *Conversion

deal → won* and the Conversion rate (lead → won). Counted are the leads created in the period and what became of them; split by brand, source, owner, pipeline and customer.

  • Leads from campaigns (first touch), Won leads from campaigns and the Campaign conversion — per

campaign, source or the campaign's brand, from marketing's first-touch attribution.

  • The Follow-up rate: follow-ups done on time divided by follow-ups due. Due is every CRM

activity with a due date in the period whose due day has been reached — what only falls due tomorrow does not count yet. On time means: done on the due day or earlier. Split by owner and brand (the brand comes from the activity's deal, lead or customer).

Ready-made templates: Lead conversion by source, Leads by campaign, Follow-up rate.

Expense per cost center. The metric Expenses from Incoming Invoices sums the net amount of approved and paid incoming invoices by invoice date, in euro (foreign currency at the frozen rate); recorded and voided invoices do not count. With the axis Cost center a report shows the expense per cost center of accounting — labelled "number · name". The invoice's cost center counts, otherwise the supplier's default (as in the DATEV batch); without or with an unknown cost center the amount goes to Without cost center. It can also be split by brand; permission reporting.kpi.financial.

Plan vs. actual from planning as a trend. The month-end snapshots of resource planning are available as metrics: Plan vs. actual: planned, available, booked plus the planned and booked utilization (personal data, permission reporting.kpi.hr). A month counts in the period that contains its first day. In planning's capacity view, Trend in reporting leads straight to the time series of booked utilization; the template Plan vs. actual by employee shows the values per person. Without active planning the metric reports "no source".

Set targets. A target applies to a period and is shown next to the actual value — in a tile as Target … with attainment and traffic-light colour, in a report as the colour of the figure. Built in, the target billing ratio ≥ 95 % per month for all brands is ready (marked built-in in the list). Value, comparison, validity and brand can be changed; metric and level are fixed and it cannot be deleted — end it via Valid to if it should no longer apply.

When a target reports. If the actual value misses a target, the authorised people get a notification. By default a target reports only in the last week of its period and once more on the first day of the new period for the completed period — early in the month the billing ratio is almost always below the target, so a daily message would just be noise. If you want to see the status every day, set Report deviation to Daily on the target.

Recalculate values from an older formula. Trends rely on stored values per period. If the way a metric is calculated changes (most recently: open items to the cut-off date), the nightly run detects the old values and recalculates them in the background. Until then KPI time series shows a notice with the number of affected values; Recalculate starts it right away (permission reporting.report.manage and cross-brand reporting.brand.all).

Schedule reports. A schedule sends a report regularly — to people or roles.

Reports to recipients without an account. An email address without an account in the distribution list no longer gets an attachment but a signed download link. The link is valid for a configurable number of days (7 by default, see Settings & permissions); afterwards it reports "expired", and the recipient needs the next delivery. If you remove an address from the list, its link stops working at once — the same happens if the report owner is deactivated or loses the export permission. Every download is logged on the export run (on behalf of the owner, the address as a checksum). Calling the link wrongly several times blocks access for fifteen minutes. Reports with financial or HR figures are still not sent to addresses without an account.

Hand metrics over to a BI system. Under Dashboards → Scheduled exports, section Metrics to BI, you choose per outgoing webhook which metrics go to your BI system after each daily run. The webhook then receives the event KPI snapshot written (reporting.kpi_snapshot_written) with the monthly values of the previous and the current month — for the webhook's brand, or as a total for a webhook without a brand. You can choose the metrics the daily run stores (revenue, costs, margin, utilization, MRR, open items and more). Only what the person who saved the selection may see in that brand is sent: if they lose a permission, the metric drops out of the payload and only appears as a key under withheld. The webhook itself — target address, signing secret, active/inactive — is managed under Settings → Integrations; saving the selection adds the event to its subscription. The target missed event also reaches webhooks with actual and target values only if the metric is not restricted or the person behind the selection may see it; otherwise without values (valuesWithheld).

Track the portal share. The metric Portal share (approvals + tickets) shows which part of customer input arrives via the customer portal rather than by email — as a percentage, for period and brand like every other metric. It counts tickets arriving via the portal or by email (reporting date: arrival) and accepted quotes that the customer approved in the portal or that were accepted by your staff (reporting date: acceptance). The building blocks sit next to it on their own — Tickets via portal, Tickets via email, Quote approvals via portal, Quote approvals outside the portal — and add up to Inbound via portal, Inbound via email and Inbound total. Tickets of other origins (created by hand, form, phone) are not counted.

Fields in detail

The area has five masks: report, dashboard (with its widget dialog), schedule, KPI target and metrics to BI. Each writes to a resource of its own.

Report

Creation asks for name, dataset, description and scope; everything else lives in the configuration on the report detail page.

FieldRequiredValues / formatWhat it does
Name nameyestext, max. 200 charactersWhat the report is called in the list, in schedules and in exports.
Dataset datasetno (defaults to custom)key from the dataset catalogue, max. 60 charactersThe source area of the report — finance, time & utilisation, sales. It determines which metrics are available at all.
Description descriptionnotext, max. 1000 charactersWhat the report is for.
Measures measuresyeslist of metric keysWhat is calculated — the columns of the report. Without at least one metric the report cannot be saved.
Dimension chain dimensionsnolist of dimension keysHow the result is split. The first dimension is the row axis, every further one a drill-down step. Empty means a single total row.
Filters filtersnoparentDimension + parentValueWhich single value of an axis the report is restricted to — e.g. the projects of one customer: axis Customer, value Customer North. In the mask the field is called Restrict to; the values come from the chosen axis. Axis and value belong together; the row axis itself and the brand (own field) cannot be chosen. If a metric cannot carry the restriction, saving is rejected with a reason instead of showing unrestricted figures.
Sort field sortFieldnofield name, max. 60 charactersWhat the result is sorted by; empty = default order.
Sort direction sortDirnodesc or ascIn which direction.
Period dateRangenothis_month, last_month, this_quarter, this_year, ytd, last_12_months, customWhich period is reported on. Everything except custom is rolling and keeps the saved report current without anyone updating it.
From customFromnodateStart of the period — only with dateRange: custom; with any other period the entry is cleared on save.
To customTonodateEnd of the period, same condition.
Granularity periodnoday, week, month, quarter, yearIn which steps the period is broken down.
Comparison comparisonnonone, previous_period, previous_yearWhether a comparison column runs alongside, and against which period.
Visualization visualizationno (default bar)table, bar, lineHow the result is shown: table only, or bars or a line above the table.
Scope scopenopersonal, role, sharedWho sees the report.
Brand brandFilternoone of your brandsWhich brand the report refers to. With scope: personal the field is cleared on save.

Start export creates a run in the background; the chosen format (csv, xlsx, pdf) is the only value of that dialog and belongs to the action, not to the report.

Dashboard

FieldRequiredValues / formatWhat it does
Name nameyestext, max. 200 charactersWhat the dashboard is called.
Scope scopenopersonal, role, shared (max. 10 characters)Who sees it. A role dashboard is the way to give every salesperson the same view without building it ten times.
Role roleIdwith scope: role yesan existing roleWhich role the cockpit applies to. Only members of that role see it; without a role a role cockpit cannot be saved.
Brand brandFilternoone of your brandsWhich brand the tiles refer to.
Default dashboard isDefaultnoyes/noWhether this dashboard opens first when the area is entered.
Tiles widgetsnolist of tile definitionsThe entire tile set. One write replaces it completely — which is why the interface sends all tiles with every change.
Grid layoutnogrid data (columns/positions)The free grid placement of the tiles on the start page. Maintained by the start page, not by this dialog.

The tile dialog writes no field of its own but an entry in widgets:

Tile keyValues / formatMeaning
Widget typekey from the widget catalogueWhich kind of tile. Operational tiles bring content and size themselves; there only the title can be chosen.
Metricmetric keyWhat the tile shows. Mandatory for non-operational tiles.
TitletextHeading of the tile; empty = name of the metric.
Dimensionglobal, brand, customer, project, employee, team, position, contract, campaign, cost_centerHow it is split. Only for tile types that need a dimension — mandatory there. team splits by the team set on the employee; a role limited to "own team only" sees just the rows of its own teams — likewise for employee (the employee's home team) and owner (the user's teams); people without a team stay visible.
Periodlike dateRange, but without customWhich period. A custom period is not offered on a tile.
Granularityday, week, month, quarter, yearIn which steps.
Comparisonnone, previous_period, previous_yearWhether a comparison figure runs alongside.
Width / height1 or 2Size in the dialog grid. For operational tiles the start-page grid size stays untouched.

Schedule

FieldRequiredValues / formatWhat it does
Report reportDefinitionUlidyesa saved reportWhich report is sent.
Name namenotext, max. 200 charactersWhat the schedule is called; empty = name of the report.
Frequency frequencyyesdaily, weekly, monthlyHow often a run falls due. The next run is set to 6:00 am German time (Europe/Berlin) — the next day, one week later or on the first of the next month, also across the clock change.
Format formatyescsv, xlsx, pdfIn which format it is exported.
Recipients recipientsyeslist of email addresses or user ULIDsWho receives the file. Users with an account get a notification with the download; an email address without an account gets a mail with a signed, time-limited download link (template "Reports: scheduled report to recipient without account", each address separately, the delivery is recorded on the schedule). Reports with financial or HR figures are not sent to addresses without an account — no permission can be checked there. Without a recipient the mask does not accept the schedule.
Link validity externalLinkDays— (read only)daysHow long the download link of an address without an account is valid — from the setting reporting.report_link.ttl_days.
Active activenoyes/noOff pauses the schedule without deleting it.

KPI target

FieldRequiredValues / formatWhat it does
Metric metricKeyyesmetric key, max. 60 charactersWhat the target applies to.
Dimension dimensionKeyno (defaults to global)global, brand, customer, project, employee, team, owner, channel, stage (max. 30 characters)At which level the target applies; team makes it a team target. If your role is limited to "own team only", you see and maintain team and person targets only for your teams — such a target "for all" (empty value) only as a cross-team manager.
Dimension value dimensionValuenotext, max. 60 charactersFor which concrete value of the dimension — empty means: for all. With global the field is disabled.
Period periodno (defaults to month)day, week, month, quarter, yearWhich time slice the target value refers to.
Target value targetValueyeswhole number in the metric's canonical unitThe target. In the mask you type money in euros, ratios in percent (95 = 95.00 %), duration in hours and minutes, otherwise days or a count — the matching input appears with the metric. Stored in the canonical unit: money in cents (150000 = 1,500.00), duration in minutes, ratios in basis points (9500 = 95.00 %).
Comparison comparisonno (defaults to gte)gte = reach or exceed · lte = stay belowIn which direction the target applies. lte is the case for metrics where small is good — days sales outstanding, for instance.
Report deviation alertTimingno (defaults to period_end)period_end = only in the last week of the period and for the completed period · daily = every dayWhen falling short arrives as a notification.
Valid from validFromnodateFrom when the target applies; empty = no start.
Valid to validTonodateUntil when; empty = no end.
Brand brandIdnoone of your brandsWhich brand the target applies to; empty = all brands.

Metrics to BI

FieldRequiredValues / formatWhat it does
Metrics metricKeysnolist of metric keys, only from selectableMetrics (what you may see in the webhook's brand and what the daily run stores)Which monthly values the webhook receives after each daily run in the event reporting.kpi_snapshot_written. Empty removes the selection; then only the run's header data goes out. The permissions of whoever saves cut the payload.

You see only what you may see. The permission cut sits inside the report — the same saved report can return different figures for two people without anything being broken. An export outputs exactly what was on screen; it is not a way around permissions.

Settings & permissions

  • Dashboards: reporting.dashboard.view / reporting.dashboard.manage
  • Reports and targets: reporting.report.view / reporting.report.manage
  • Financial metrics (revenue, margin, DSO, MRR): reporting.kpi.financial
  • People metrics (utilisation, cost rates): reporting.kpi.hr
  • Own utilization (your own employee record only): reporting.utilization.view_own
  • Export and schedule: reporting.report.export · Cross-brand: reporting.brand.all
  • Recalculate stored metric values: reporting.report.manage and reporting.brand.all (the run touches

all brands)

  • Tile as image or PDF: reporting.report.export and access to the cockpit
  • Metrics to BI (selection per webhook): platform.webhook.manage and reporting.report.export in the

webhook's brand — for a webhook without a brand in all brands

  • Setting reporting.report_link.ttl_days (Settings → System, category reporting): validity of the

download link to recipients without an account in days, 7 by default, effective 1 to 90

The two metric permissions stand on their own because their content does: being allowed to analyse projects does not imply being allowed to see salary cost rates.

My utilization. Every employee sees their own utilization — even without reporting.kpi.hr. The tile My utilization on the home page shows, for the current month, the billable time (approved, billable time entries) relative to the available time (weekly hours × working days). It can be placed on any dashboard via Add widget (area Personal). All internal roles hold the permission reporting.utilization.view_own; it never reaches beyond your own employee record — other people cannot be queried through it. Without a linked employee record the tile stays empty.

Roles with the "own team only" option see only their team on team and person axes — and the overall total and the total per brand are also built only from the people they can see (own team, people without a team). This applies to metrics, time series, saved reports and dashboard tiles; otherwise another team could be worked out as the total minus one's own team. Metrics without any person or team reference stay unchanged.

Module flag: module.reporting.

FAQ & troubleshooting

A metric is missing from the selection. Then the module supplying it is not active, or you lack the metric permission.

Two people see different numbers. That is correct: reports run within the viewer's permission and brand scope.

The download link does not work. "Expired": the validity is over, the next delivery brings a new link. "No longer valid": the address is no longer in the distribution list, or the report owner may no longer export. "Too many invalid requests": after several wrong calls, access is blocked for fifteen minutes.

A scheduled report did not arrive. Check schedule and recipients. Scheduled reports run on behalf of and with the permissions of the report owner: if there is no owner, the owner is deactivated or lacks the export or view permission, no export is created — the run shows the reason among the export runs.

reporting.reporting · Available from version 0.5.6