Chapter 21

Dashboards & reports

Note: mostly a desktop feature. The dashboards in this chapter are the TechieCRM desktop application. The web portal's /dashboard/ page (and the local portal's) has the same dashboard selector and control toolbar: it opens your stored dashboards in their own layout and offers an Overview of six module summary cards and recent activity. The figures on a stored dashboard, editing, the wizard and emailing a dashboard are desktop-only for now; see Dashboards on the web portal below.

The web portal does have its own Reports module: seven ready-made summary reports over your live records, with a date window, printing and CSV export. It is described in Reports on the web portal below and is not the same thing as the desktop's Reports ribbon tab.

When a figure cannot be worked out

On the web portal's /dashboard/ page, a card whose figures could not be loaded shows a dash (–) and Couldn't load in place of the numbers, and a message appears at the top of the page: "Some figures could not be loaded." That is deliberately not the same as a zero: 0 means the module really has no records, while Couldn't load means the number is unknown, usually a momentary connection problem. The rest of the page keeps working, and refreshing normally clears it. If it persists, contact support: every one of these failures is recorded in the server log with the module named.

The same rule applies to the Agenda's Business Dashboard strip (Chapter 23): an indicator whose figure could not be loaded shows – with Couldn't load underneath, never a 0.

And in the desktop Dashboards window (October 2026 update). Every indicator follows the same rule: numbers, currency boxes, thermometers, dials, linear gauges, bar and pie charts and grids. If the database cannot be reached, the connection drops, or an indicator's query cannot be run, that tile shows – with Couldn't load instead of its figure; hover over it to see why. A chart shows Couldn't load as a whole if any one of its bars or slices could not be read, because a chart with a bar quietly missing (or drawn as 0) would be a wrong chart. A figure that really is zero still shows 0 (or $0.00), an empty chart still shows its empty frame, and a grid with no rows still shows its coloured headings. Before this update a dead connection made every query-based tile show a believable $0.00 or 0, while the saved-search tiles next to it already showed –; both kinds now behave the same. Each failure is recorded in TechieCRM's log (Settings ▸ Diagnostics, Dashboards) without any password or connection details. Right-click the tile ▸ Refresh to try again once the connection is back.

Source-CRM equivalents: Dashboards, Reports. Dashboards are the source CRM's own (the same definitions and indicators, rendered natively), plus the TechieCRM Entrepreneur Dashboard (Chapter 1).

In this chapter - Viewing dashboards; click-through - Editing: indicators, properties, wizard; shared dashboards - Saving: Save and Save As - Reports and printing (desktop) - Dashboards on the web portal - Reports on the web portal - Not yet available


Viewing

Icon bar ▸ Dashboards. The dashboard selector lists 🚗 Entrepreneur Dashboard first, then every dashboard in the database that you may see (last viewed is remembered). Toolbar: Save, Save As (see Saving below), Properties, Add Indicator, Email Dashboard, Print Dashboard, Dashboard Wizard; pinned at the right edge: 🔄 Refresh and ❌ Close.

Private dashboards (October 2026 update). A dashboard marked Private is listed only for the person who owns it and for your office administrator, in the desktop app and on the web. Your office administrator is the MASTER login or anyone whose rights let them modify users. Everyone else does not see it in the dashboard selector, in the Agenda's list of indicators to show, or in the Properties window's list of dashboards, and if it was the last dashboard they viewed, the Dashboards window opens on the first entry instead. When TechieCRM cannot tell who is signed in, no Private dashboard is listed. Dashboards that are not Private are shared with everyone, as before.

Indicators load in the background (October 2026 update). When you open a dashboard, switch to another in the selector, or press 🔄 Refresh, every indicator appears straight away in its exact place and size showing Loading..., and each one fills in with its figures as soon as they arrive. The rest of TechieCRM stays usable meanwhile: you can scroll, switch modules or pick another dashboard. Before this update the whole window froze until the last indicator's figures had been read, which on a remote or VPN connection could take several seconds on a busy dashboard. If you switch to another dashboard (or close the Dashboards window) while one is still loading, the figures still on their way for the old one are thrown away rather than appearing on the new one; if you closed the window mid-load, reopening it loads the dashboard afresh.

  • 🔄 Refresh on the toolbar re-reads every indicator on the dashboard.
  • Right-click a tile ▸ Refresh re-reads that tile only: it shows Loading... and then its new figures, and every other tile is left exactly as it is. (Before this update it reloaded the whole dashboard.)
  • Print Dashboard and Email Dashboard wait for any tiles still loading (up to 30 seconds, with the window still responsive) so the picture shows the figures, not Loading.... A tile still loading after 30 seconds is pictured as it is.

When a whole dashboard, or the list of dashboards, cannot be loaded (October 2026 update). The dashboard's layout (which indicators it has and where they go) is now read in the background too: the page shows Loading dashboard... for a moment, then the tiles appear. If the layout cannot be read (the database cannot be reached, the connection drops, or the dashboard has been deleted by someone else), the page shows This dashboard couldn't be loaded. in the middle, the reason on the line below (hover over the heading to see it too), and a Try Again button that reads the dashboard again. A dashboard that really has nothing on it still says No indicators configured for this dashboard. Before this update a dashboard that could not be read also said No indicators configured, so it looked empty when it was not.

The same goes for the dashboard selector. If the list of dashboards cannot be read, the selector still offers the 🚗 Entrepreneur Dashboard and shows a greyed-out entry, Dashboard list couldn't be loaded, with the reason when you hover over it. If the dashboard you last viewed was one of the stored dashboards, the page says The dashboard list couldn't be loaded. with the reason and Try Again, instead of quietly showing you a different dashboard. Try Again, or 🔄 Refresh on the toolbar, reads the list again and takes you back to the dashboard you last viewed once it is available. A database that simply has no stored dashboards is not an error: the selector then lists only the Entrepreneur Dashboard, with no greyed-out entry.

The reason shown is a short description of what went wrong (for example There is no database connection or The dashboard's layout could not be read); it never includes a password or the connection details. The same reason is recorded in TechieCRM's log (Settings ▸ Diagnostics, Dashboards).

Email Dashboard (the toolbar button, or the ribbon's Edit ▸ Output ▸ Email; October 2026) takes a picture of the dashboard exactly as Print Dashboard does and opens a New Email window with it attached as a PNG image named after the dashboard, the subject Dashboard: and a one-line message with today's date. Add the recipients, change anything you like and press Send yourself; nothing is sent until you do, and Cancel discards it. If the dashboard has not been drawn yet, TechieCRM says There is nothing to email yet. Before October 2026 the button only described what it would do one day. Indicators are laid out exactly as the source CRM lays them (column breaks), scrolling as needed; gauges, dials, bars, pies, tables, numeric boxes and thermometers all render. A broken indicator (one whose settings TechieCRM cannot draw) shows a red "Could not render" tile instead of blanking the page. That is different from Couldn't load (see When a figure cannot be worked out above), which means the indicator is fine but its figures could not be read from the database this time.

Indicator tiles follow the theme (September 2026 update). Switching between Light and Dark in Settings ▸ Theme Layout used to leave the indicator tiles exactly as they were; you had to reopen the dashboard (or restart TechieCRM) before the tiles matched the rest of the window. Every tile now repaints while you are looking at it: the card face, its border, the caption strip across the top and the text inside all move to the theme you just chose. Two things deliberately do not move, because they are your data and not the window's chrome: the colours you set in Indicator Properties (needle, digits, alarm band, grid header and row colours) and the numeric box's own coloured background. Those come from the indicator itself and look the same in both themes.

The dashboard backdrop follows your theme (October 2026 update). The area the indicators sit on, in the Dashboards window and in the Agenda's dashboard section, takes the colour of the theme you choose in Settings ▸ Theme Layout (dark in the dark themes, light in the light ones) and changes the moment you switch, while the indicators' own colours stay exactly as you or your colleagues set them.

Both September limitations are now closed. When this was first written, two things were still wrong, and both have since been fixed and measured:

  • Changing the theme no longer touches the database, and no longer empties a tile. Bar, pie and table tiles used to re-read their figures as they repainted, which made a theme change slow on a busy connection and (if the connection had dropped since the dashboard loaded) could replace a chart's bars with an empty frame or a full grid with no rows until you pressed 🔄 Refresh. Each tile now keeps the figures it loaded with and simply redraws them in the new colours, so switching Light ⇄ Dark costs no database queries at all and cannot take numbers off the screen. 🔄 Refresh and changing the dashboard in the selector are still what re-read the figures; that has not changed, and is still how you get fresh numbers.
  • The red "Could not render" placeholder follows the theme too. It used to stay on a white card with dark red text no matter which theme you chose, which looked like a bug on top of a bug. In Dark it now sits on the same dark card face as its neighbours with a brighter red message, and it changes the moment you change the theme. Its Light appearance is unchanged. (It also no longer prints the word "None" when the broken indicator has no name.) Double-click an indicator → the module it measures opens with that indicator's records (saved-search indicators load the exact record set; others apply the closest filter: sales status, open/resolved cases, traditional/automated campaigns, today's tasks…). Right-click a tile: Properties… · Refresh · Move Up · Move Down · Start New Column Here · Remove from Dashboard. Refresh here re-reads only that tile; Move Up, Move Down, Start New Column Here and Remove change the layout, so they redraw the whole dashboard (each tile showing Loading... briefly).

Double-clicking a Clients indicator now opens a filtered Clients list (October 2026 update). An indicator that counts clients (for example Partners Marked Compliant) used to open the whole, unfiltered Clients list. It now opens the Clients list showing exactly the entries its saved search finds, the same as Service, Sales and Marketing indicators already did. The title bar reads N Client Entries Displayed (search: followed by the indicator's name), and Undo Search or Clear List brings the full list back, like any other search. If the indicator's filter cannot be applied (its saved search uses something TechieCRM cannot translate yet, or the module it opens, such as the Calendar, To-Do list or Quotas, has no way to show just those records), the module still opens and a message, Opened without the indicator's filter, says why, so a full list is never mistaken for the indicator's records.

Spreadsheet views now list their records (October 2026 update). A grid indicator whose only source is a saved search (a spreadsheet view, such as Work Orders Added Today - Spreadsheet View) now shows one row per record that search finds, with the columns the indicator was set up with (built-in fields such as Ticket #, Company/Individual, Status and Subject, and your own fields such as Products/Services, Categories or a case number field, under their own names). Rows are sorted by the indicator's Sort by field in its chosen order, and the grid shows as many rows as the indicator's Rows to display setting (50 when none is set). When more records match than are shown, a line under the grid says so, for example 20 of 37 shown. Double-click the title to open them all.; double-clicking the tile's title opens the module with every one of them. Double-click a row to open that record on its own in Service, Sales or Marketing. Before this update these grids stayed empty (just their coloured headings). If a spreadsheet view uses a column TechieCRM cannot show yet (some Marketing statistics columns, for example), the tile shows Couldn't load and names the column when you hover over it, rather than a grid with a blank column.

Which saved searches an indicator can count (October 2026 update)

Most indicators count the records of a saved search from your source CRM. TechieCRM reads those searches the way the source CRM itself does:

  • Every date range the source CRM offers: Today, Yesterday, Tomorrow, Before Today, Before Tomorrow (up to and including tomorrow, exactly as the source CRM counts it), After Today, This / Next / Last Week (Sunday to Saturday), Week to Date, This / Next / Last Month, Month to Date, Current / Next / Last Calendar Year, Calendar Year to Date, Next and Last 30, 60, 90, 180 and 365 Days (both counting today), Next 2, 3, 6 and 12 Months, Last 2, 3, 6 and 12 Months (from the first day of that month up to today), and Current / Next / Last Fiscal Quarter, Current / Next / Last Fiscal Year and Fiscal Year to Date, which follow the fiscal year start month set in the source CRM's Quotas setup (January when none is set). A fixed date, and a "from ... to ..." pair of dates or numbers, work too. Before this update many of these (Current Calendar Year above all) made the tile show Couldn't load.
  • "All of these" and "any of these". A search set to match any of its conditions is now counted that way; before, every search was treated as all. Bracketed groups of conditions (such as Status is A or B) are counted as groups.
  • Several values for one field in a search that must match all of its conditions, such as Status is A and Status is B, are counted literally: a record counts only when it has every one of those values, exactly as your original CRM's own search code reads them. So Status is A and Status is B counts nothing, and a field that can hold several values (such as Categories) counts only records holding all of them. (They used to show Couldn't load; for a few days in October 2026 they were counted as "is any of".) This is to be confirmed against your original CRM on a full copy of the database; see Counts that differ below.
  • Status conditions written by a script are ignored, as your original CRM ignores them. Some Service searches carry extra condition rows that store a status number where the field belongs (written straight into the database by a customization script, not with the search window). Your original CRM skips those rows, and so does TechieCRM now; before, TechieCRM read them as Status is ..., which made such searches (the CAN and USA Active Cases with Non-Compliant Partners searches, for example) count 0.
  • A text condition with one value on a user-defined field means "begins with", as in your original CRM: City = Vic also counts Victoria, and an asterisk (*) in the value matches anything. (Before, only an exact match was counted.)
  • Searches with very many conditions (one walk-through search has 54) now run; the database server used to refuse them as too complex.

What still shows Couldn't load, with the reason when you hover over the tile:

  • a date range that matches on month and day only (Ignore Year);
  • a text condition whose value contains _, [ or %, or a "from ... to ..." pair of text values;
  • a few kinds of condition TechieCRM does not translate yet (named in the reason), and a search that no longer exists;
  • assigned to me-style searches when no one is signed in.

The reason now says which of these it is: uses something TechieCRM cannot translate yet: ..., is too complex for the database server to run, or the database could not be read.

Counts that differ from your original CRM: check these first (administrators)

To make a dashboard figure agree with the one your original CRM shows, TechieCRM counts the saved searches stored in your original CRM's database with a few of that CRM's own rules, some of which are not how a search would normally work. If a TechieCRM count and your original CRM's count for the same indicator ever differ, check the indicator's saved search against these, in this order:

  1. Text with one value means "begins with". City = Vic also counts Victoria. This is the first thing to check.
  2. Several "is" values for one field must ALL match in a search that must match all of its conditions (Status is A, Status is B counts nothing). This follows your original CRM's own search code. One note from earlier work on a customized database says the original CRM treats such values as "any of" instead; if your original CRM shows a figure where TechieCRM shows 0 for such a search, this is the rule to report, and it can be switched in one place.
  3. A Service condition that stores a status number where the field belongs is ignored (rows a script wrote into the database, not the search window), as your original CRM ignores it.
  4. "All" or "any" for a Service search is read from the saved search's own setting, which your original CRM stores the other way round for Service searches.
  5. "Before Tomorrow" includes tomorrow.
  6. Weeks run Sunday to Saturday (This Week, Next Week, Last Week, Week to Date).
  7. A condition on a built-in field your original CRM does not search for that module is ignored.
  8. An indicator's own query is read with your original CRM's stored form of "=" turned back into "=".

These rules apply only to searches and dashboards that come from your original CRM's SQL database. TechieCRM's own searches (and the dashboards TechieCRM will build on its own cloud database) count the usual way: "is" means exactly that value, "any of" is chosen explicitly, weeks start on Monday and "Before Tomorrow" ends today.

Editing

  • Dashboard Properties: name (rename), description, background colour, indicator list with Add… / Remove / Remove All / Properties…, Delete Dashboard, Save As Copy….
  • Background colour: click the swatch, pick a colour, then OK or Apply. From the September 2026 update the colour is stored: before, the swatch changed but nothing was saved, so reopening Properties showed the old colour again and no message explained why. The picker now also opens on the colour currently in the swatch rather than always on the same default. The colour is written in the source CRM's own format, so the source CRM sees the same colour you picked. If you do not touch the swatch, the stored colour is left exactly as it was. What it does not do yet: TechieCRM does not yet paint the dashboard canvas with this colour; the dashboard area follows your TechieCRM theme. The value is stored for the source CRM and for a future TechieCRM release.
  • Full Access and Read Access on this tab are display-only: they show the access stored on the dashboard, but changing them does not save. Dashboard is available for Mobile Access is not wired at all; it always starts unticked and is never read or saved. Set dashboard access and mobile availability in the source CRM for now.
  • Indicator Properties (also from double-click when no module target exists): Details (name, description), Indicator Type (presets valid for the metric's shape), Alarm/Target (alarm level), Color Settings (title colour/size/bold, plus gauge text, needle/digit and alarm digit/band colours), Gauge Settings (currency symbol, decimals, text size, scale min/max), Metrics: Change Data Source… rebinds the indicator to another saved search (a private copy, so other dashboards are unaffected).
  • Style pictures (Indicator Type tab). Under Type and scaling, the Style box shows the nine control types as picture tiles, each with its name underneath: Bar Chart, Pie Chart, Table/Grid, Numeric Gauge (a number in a framed box), Odometer (a digital readout), Horizontal Gauge (a coloured ruler with a pointer), Speedometer (a dial with a needle), Thermometer (a bulb thermometer with a target arrow) and Bar Thermometer (a colour bar with a scale and a target arrow). Click a tile to choose that style; the chosen tile has the highlighted border, and only one tile is chosen at a time. The tile and the Type and scaling list always agree, and use the same names: the list offers Odometer, Numeric Gauge, Speedometer and Thermometer for a single-value indicator, and Bar Chart, Pie Chart and Table/Grid for a chart or table. Clicking a tile picks the matching entry in the list, and choosing from the list moves the highlight. Press OK or Apply to save, as for any other change on this dialog. (Earlier versions named the list entries Numeric, Numeric Box, Dial Gauge and Grid. Only the names changed: an indicator saved before keeps its type and opens and saves exactly as it did.)
  • Greyed tiles (dashed border) are styles this indicator can't switch to: a chart or a table needs an indicator that reports grouped data, and a single-value indicator can't become one (and the other way round). Hover over a greyed tile to see why. Horizontal Gauge and Bar Thermometer can't yet be chosen from here for an existing indicator; their tooltip reads "Not available for existing indicators yet." An indicator that already uses one of them shows its tile highlighted.
  • The tiles follow your theme: their background, border, hover and highlight colours change with Settings ▸ Theme, Primary and Accent, even while the dialog is open (the highlight is green unless you pick another Accent). The tiles and pictures grow when you make the dialog bigger, and the names under them are never cut off.
  • Colours are stored in the source CRM's own format, so a dashboard looks the same in TechieCRM and in the source CRM, and a colour you pick here is the colour the source CRM shows (and vice versa). Reopening Indicator Properties shows exactly the colour you saved. A new indicator's alarm band defaults to red, matching the source CRM. (Dashboards viewed before 1 September 2026 had red and blue swapped on every non-grey colour, e.g. the source CRM's standard blue title rendered tan; that is fixed, and no stored data was changed by the fix.)
  • Money on an indicator (an indicator with Show currency ticked in Gauge Settings) is written the accounting way when it is negative: -$50.00, with the minus sign in front of the dollar sign. Until the September 2026 update it read $-50.00. Positive amounts are unchanged. An indicator can legitimately be negative: a margin below cost, a credit balance, a shortfall against target.
  • Add Indicators: filter + tick existing indicators to add.
  • Dashboard Wizard: create a new blank dashboard (name, description); indicators are then added from the picker. The wizard's indicator tabs don't save yet; see below.
  • Every step is a tab (October 2026 update): Start, Dashboard Details, Indicator Properties, Control Selection, What to Report, Click Through and Done. Click any tab to jump to it and back, so you can see every step before you fill any of them in. Next > moves to the next tab; there is no Back button (click the tab instead). Finish saves and closes; Cancel closes without saving.
  • Dashboard Details only applies when you choose Create a new dashboard or Edit current dashboard on Start. With an indicator option chosen the tab is greyed out (hover over it to see why) and Next skips it.
  • Required: with Create a new dashboard chosen, Dashboard Name must be filled in. If you click Finish without it, nothing is saved: the wizard opens Dashboard Details, puts the cursor in the name box, turns the tab red and shows a note under the tabs saying what is missing. The red goes as soon as you type a name (or choose a path that doesn't need one). If the dashboard can't be written, the wizard says so and stays open with what you typed.
  • Required for an indicator: with Create a new indicator or Edit an existing indicator chosen, two things must be filled in before Finish will close the wizard:

    • the Indicator name on Indicator Properties, and
    • what the indicator reports on What to Report: with Use an existing SQL metric chosen, pick an SQL metric from the list; with Use a catalog search chosen, pick a Saved search to use. The first entry of each list, (Select an SQL metric) or (Select a saved search), means nothing is chosen yet and does not count. Records to search always has a value, so it never holds you up.

    If you click Finish with either one missing, nothing happens except that the wizard opens the first tab that needs something, puts the cursor in it, turns each tab that needs something red and lists what is missing in the note under the tabs. Each tab's red goes as soon as its field is filled, and comes back if you empty it again (or switch to a source with nothing picked). The saved-search list is empty for now, so choose an SQL metric to finish. - The indicator options don't save yet. Once the name and what to report are filled in, Finish closes the wizard, but no indicator is created or changed. To put an indicator on a dashboard, use Add Indicators or Change Data Source. - Control Selection shows the same nine Style picture tiles as Indicator Properties. - The wizard follows your Theme, Primary and Accent choices live, and grows with the window; tab names and buttons always show in full. - Shared/system dashboards can't be edited in place: any change asks to save a copy you own (" (Copy)") and applies the change there.

Saving

You do not have to press Save. Every dashboard edit is written to the database the moment you make it: adding or removing an indicator, Move Up / Move Down, Start New Column Here, renaming the dashboard, and anything you change in Indicator Properties. Each of those checks that the write succeeded before the dashboard redraws, so if a change stays on screen it is stored.

  • Save therefore has nothing left to write. Rather than doing nothing silently, it tells you the dashboard is already saved, explains that edits save themselves, and points you at Save As. It never touches the database.
  • Save As is the one button that creates something new. It asks for a name (pre-filled " (Copy)"), then copies the whole dashboard (every indicator, colour, size and column break exactly as it is) into a new dashboard that you own, and switches the panel to it. The dashboard you copied from is left untouched. This is also the way to get an editable copy of a shared/system dashboard without waiting to be asked mid-edit. If the copy cannot be written, TechieCRM says so and leaves you on the original; it never reports a copy that was not created.
  • Neither button applies to the 🚗 Entrepreneur Dashboard: it is a built-in TechieCRM view drawn live from your data rather than a stored dashboard, so there is nothing to save and nothing to copy. Both buttons say so if you press them there.

Reports and printing

  • Print Detailed Report (Reports ▸ Clients ▸ Detailed Report, the client dialog's Print button, Activities, Org Chart, UDF tab) prints the current entry in full. Tick the sections you want: mailing address, contacts, related entries (the entry's Sales and Tickets), user-defined fields (only fields with a value), meetings, To-Do List tasks, document summary, notes (all, or the most recent only). Print options: number of copies, Draft quality (compact, no rules), Suppress heading (drops the report banner, keeps the entry name); New page for each entry has no effect while one entry is printed. Send report to: Printer (system print dialog), File (PDF Format) and HTML format (you choose the file), Preview (print preview), Email (opens Compose to the entry with the report as the message body). Rich Text Format and Document are greyed out (not produced in this version); PDF or HTML are the equivalents. Page Setup… (orientation, margins, paper size) is honoured. Page Setup has OK and Cancel only: your choices take effect when you press OK. (Its old Apply button did nothing and was removed in October 2026.) From the September 2026 update, a Detailed Report is never printed with a section silently missing: if a section's data could not be read from the database (the connection dropped, or your sign-in isn't allowed to read the database catalogue), TechieCRM stops before printing and says "Could not read the entry's details" with the reason. Before, the page came out with, say, no Notes at all, which reads as this client has no notes. A section that genuinely has nothing still prints its "None." line, as it always did.
  • Print Column Report / Print List print the module's current list, with its current columns, to a print preview (landscape). Only the rows you can see are printed, so a filter or Quick Search narrows the report; if the filter matches nothing, TechieCRM says "There is nothing to print." rather than opening a preview with column headings and no rows. Export to Sheet writes the list to .xlsx or .csv.
  • Reports ▸ Associated Entries ▸ User-Defined Fields (October 2026 update) prints every user-defined field definition as a Column Report: one row per field with its Module (Clients, Sales, Marketing, Service, Users, 3rd Party Integration), Folder, Field, Type, Requested by and whether it is Hidden: the same definitions Setup ▸ User-Defined Fields shows, in the same order. It reads only. If no definitions could be read it says so instead of printing an empty page (check the database connection if your database has them).
  • Reports ▸ Clients ▸ Contacts and ▸ Related Entries (Column Report, Contacts' Detailed Report) are not built: there is no separate contacts or related-entries list to print, and each now says so. To print an entry's contacts or its related Sales and Tickets, select the client and use Reports ▸ Clients ▸ Detailed Report with Print contacts / Print related entries ticked.
  • Interactions ▸ right-click ▸ Print prints one Note / Document / Task / Meeting / Email: header (type, date, creator), the full body (rich text for notes and documents), then its fields.
  • Print Dashboard prints the dashboard exactly as rendered, fitted to a landscape page, via print preview.
  • Meeting and To-Do dialogs print a preview of the record.
  • Quotas Report prints the Quotas list as filtered, with its columns, to a print preview. On the Reports tab the button is Personal ▸ Quota (it said Quota Report before 12 Oct 2026).
  • Reports ▸ Service ▸ Library ▾ (it said Knowledge Base before 12 Oct 2026). The Library and the Knowledge Base share one panel, so the drop-down offers both: Library opens the panel on the Company Library folders, Knowledge Base opens it on the article list (the same as the icon bar's Knowledge Base button), Knowledge Base Column Report prints the article list as shown, and Knowledge Base Article prints the selected article in full.
  • Still placeholders: Envelopes / Labels, Contacts and Related Entries reports. (Dashboard Email works from October 2026; see Viewing.) (Crystal Report was removed in October 2026: TechieCRM cannot create or open Crystal Reports files.)

Win/loss report

Desktop app, October 2026. Reports ▸ Sales ▾ ▸ Win/Loss shows why your sales were won or lost, who you lost them to, and how much won business came with a partner. It only reads; it changes nothing. Anyone who can open Sales can open it.

Choosing what to count. - Closed from / to: the sales whose close date falls in these dates (both days included). The window opens on this calendar year. After changing a date, press Refresh. A sale with no close date is in no date range, so it is never counted. - Leader: count only the sales one person leads, or All leaders. - Include Abandoned and Suspended: off by default. When ticked, those sales get their own columns in By reason; on a competitor they count as "on the sale" but neither won nor lost. - The leader and the tick box re-count straight away without reading the database again.

The three tabs. - By reason: one line per completion reason, with the number of sales, their value and their share, once for Won and once for Lost. A reason offered for both can appear in both columns. Sales with no reason are the line No reason given, always shown last. A reason that has since been removed from the list keeps its line, called "Reason number (no longer in the list)". The share is that reason's part of all Won (or all Lost) sales. - By competitor: for each competitor, the sales it was on, how many of those were won and lost, the win rate when present (won divided by won plus lost), how many sales were lost to it (the sale's Lost to), and the value lost to it. Unknown counts Lost sales with no Lost to. A competitor someone lost to without listing it on the sale shows with 0 sales on. - Partner-sourced revenue: won sales with at least one partner, their value and their share of all won value, then one line per partner. A sale with two partners counts once in the total and once under each partner, so the partner lines can add up to more than the total (the tab says so). - Value is the sale's Actual revenue when it is set, otherwise its Forecast revenue: the same amount a Work Order, Invoice or Project made from the sale carries. A rate or share with nothing to divide by shows n/a, not 0%.

Seeing the sales behind a number. Click any figure: the sales behind it are listed under the tabs (sale, client, status, close date, value, reason, Lost to, leader). Clicking a line's name lists every sale on that line. Double-click a sale, or select it and press Open Sale, to open it in the Sale window.

Export and print. Export CSV... saves the tab that is showing as a CSV file (amounts as plain numbers, so a spreadsheet can add them up). Print... prints all three tabs through the print preview. Both are greyed out when there is nothing to report.

When something is wrong. If the sales cannot be read (no connection to the office database, for example), one line says so and there is no report. If no sale closed in the dates, the window says "No sales were closed between ..." rather than showing empty tabs.

On the web portal (October 2026). Sidebar ▸ Reports ▸ Win/Loss (address /crm-reports/win_loss/) shows the same three views with the same numbers as the desktop window: the web page runs the same calculation on the sales your office computer has synced to the cloud, plus the sales made on the web. - Set Closed from and Closed to (this calendar year to start with; one date on its own runs to the end of, or from the start of, that date's year), pick a Leader or All leaders, tick Include Abandoned and Suspended if you want them, and click Run. This year puts the dates back. - Choose a tab: By reason, By competitor or Partner-sourced revenue. Click any number, or a line's name, to list the sales behind it under the table; click a sale's name to open it. - Export CSV downloads the tab that is showing, with the same columns as the desktop's file, named win-loss-<tab>-<from>-to-<to>.csv. Print prints the page without the sidebar. - Sales that have not synced yet are left out, never guessed. A sale from your office database whose reason, Lost to or competitors have not reached the cloud yet is not counted anywhere (it would otherwise look like "No reason given" or "Unknown"), and a line above the tables says how many were left out. They are counted once the office computer sends them. The same line also counts sales left out because they have no client (as on the desktop), carry a value that cannot be read, or are stored twice. A sale made on the web has nothing to wait for: when no reason or Lost to was recorded on it, it counts as No reason given or Unknown, and a line says how many such sales there are. - Security: the report needs the right to read Sales. If your security group denies Sales, the card is not offered and the page, its CSV and its sale lists answer You don't have access to Sales.

Dashboards on the web portal

Sidebar ▸ Dashboards (address /dashboard/), on the cloud portal and on your own local portal. (October 2026 update: before this the page was a fixed summary with no way to change dashboards.)

The dashboard selector sits at the left of the toolbar. It lists Overview first, then every stored dashboard you may see, by name: the same dashboards as the desktop's selector, as they were last synced from your office. Pick one and the page opens it. The page remembers your choice: the next time you open Dashboards it opens on the dashboard you last picked, on any browser. With nothing picked yet it opens on Overview. (The desktop remembers its own last dashboard separately, so the two can differ.)

Overview is the web's own summary: cards for Clients, Sales, Service, Tasks, Calendar and Notes, recent activity, quick actions and totals, read live.

A stored dashboard is drawn in its own layout, the same rule the desktop uses: indicators in their saved order, each column starting where the dashboard starts one, narrow tiles side by side within a column, at the dashboard's own sizes. Each tile shows its title and its style (Speedometer, Numeric Gauge, Bar Chart, Table/Grid and so on). Its figure shows a dash (–) and "Not on the web yet": figures are worked out by the desktop app from your office database and are not sent to the cloud yet. Hover over a tile to see why, and open the dashboard in the desktop app for its figures. The dash is never a zero. A dashboard with nothing on it says No indicators configured; one whose layout cannot be read says This dashboard couldn't be loaded. with the reason and Try Again.

Who sees which dashboard. Dashboards are shared with everyone who can open the Dashboards module (your security group decides that). A dashboard marked Private is listed only for its owner and for your workspace administrator; a colleague does not see it in the selector, and opening it by its address shows "That dashboard isn't available to you, or no longer exists."

The toolbar, in the desktop's order: Save, Save As, Properties, Add Indicator, Email Dashboard, Print Dashboard, Dashboard Wizard, and at the right Refresh and Close. - Print Dashboard prints the dashboard without the menu, sidebar or toolbar. To send one by email, print it and choose your browser's Save as PDF, then attach the file. - Refresh reloads the dashboard you are on. Close returns to your start page. - Save, Save As, Properties, Add Indicator, Email Dashboard and Dashboard Wizard open a Not connected yet message saying where to do it today: dashboards are changed, saved and emailed from the TechieCRM desktop app, and the web shows the result after the next sync.

If the list cannot be read, the selector shows Dashboard list couldn't be loaded (hover for the reason). Overview still works. If you were on a stored dashboard, the page says the list couldn't be loaded, with Try Again, rather than quietly showing a different dashboard.

Reports on the web portal

Sidebar ▸ Reports (address /crm-reports/). Released 3 September 2026; it no longer needs the beta-tester role. Reports has no records of its own: each report reads the live records of one module, so the figures are always as current as that module's list.

The eight reports

Report What it summarises The date window applies to
Client Summary Total clients, companies and individuals, and the most recent client entries Created date
Sales Pipeline Open opportunities grouped by stage, with count, total and average forecast revenue Created date
Sales Won/Lost Won and lost counts and revenue, the win rate, and the deals themselves Last-updated date (when the deal closed)
Open Service Tickets Every ticket that is still open work, by priority, with its assignee Created date
Overdue Tasks To-dos not yet completed whose due date (or, failing that, scheduled date) has passed Created date
Activity by User Notes, tasks and appointments counted per user Created date
Campaign Performance Sent, responses and response rate per campaign Created date
Win/Loss Why sales were won or lost, who they were lost to, and partner-sourced revenue (see Win/loss report above) Close date

Running a report. Click Run Report on its card. Enter a from and/or to date and click Run to narrow the report to that window (the card and the page both say which date the window applies to); Clear removes the window. The summary figures at the top count every matching record; the table beneath lists the 50 most recent, and says so when the cap is reached; narrow the window to reach the others.

Reading the figures. - Reports use each module's own status rules, so they agree with that module's list. A sale the desktop or an import from your previous CRM recorded as New or In Progress is open; Won / Lost are counted whichever way they were capitalised; the per-user @USER.OPP bookkeeping rows are hidden. A ticket is open unless its status is Resolved, Closed or Abandoned or it carries a resolved/closed date; every other status your workspace uses (Assigned, Escalated, Wait for Customer, Call Back…) counts as open work. A to-do is overdue by the same rule the To-Do list's Overdue view uses. - Priorities imported as a letter (A/H/M/L) are shown as Urgent/High/Medium/Low. - A campaign that Mailchimp or Constant Contact actually sent reports the provider's figures (sent, and clicks as responses) when no counts were typed in by hand. - Money is shown as $1,234.50 (a negative amount as -$50.00); percentages to one decimal.

Export CSV downloads the report as it is on screen (the same date window, the summary block first, then the table), named <report>-<date>.csv, and opens cleanly in any spreadsheet program. Print prints the summary and table without the sidebar or the filter form.

Empty results are explained. "Nothing matched this date window" means the records exist but the window excluded them (clear the dates to see them); "No records to report yet" means the module really has none. "Failed to generate report" means the report could not be produced, most often a mistyped date, and the failure is recorded in the server log.

Security. Reports borrows the rights of the module it reads: if your security group denies Service, the Open Service Tickets report is not offered, its address answers You don't have access to Service, and so does its CSV. Activity by User drops the column for a denied module rather than showing zeros. (Administrator's manual, A3 ▸ Security Groups.)

Not on the web yet. A report designer or saved-report catalogue, the desktop's per-entry Detailed Report and Column Report/Print List, the Quotas report, and sheet (.xlsx) export; CSV is the export. The ribbon's Reports tab on the web opens the report cards; its per-module entries that have no web report say so when clicked.

Not yet available

Creating new indicators (the wizard's indicator tabs check that a name and what to report are filled in, but don't save; use existing indicators or Change Data Source), dashboard export to a file, a report designer or saved-report catalogue, sheet export, standalone charts. (Print Dashboard and Email Dashboard are available; see "Viewing" and "Reports and printing" above. The web portal's own Reports module is covered in "Reports on the web portal".)