See it in actionBook a demo →

Chemical usage and cost analytics

See how much of each chemical you are using, what it cost you, what customers were billed, and the margin — on a chemical's Insights tab, the Chemicals tab of Profitability, and on customer, job, location, and pool pages.

Updated August 28, 2026

Where the chemical numbers live

Every chemical a technician records on a completed visit is priced two ways: what it cost you and what the customer was billed. Those two numbers drive every chemical analytic in the dashboard. There are three places to read them:

  • One chemical — the Insights tab on a chemical's page (Chemicals in the sidebar → click a chemical).
  • Your whole company — the Chemicals tab on the Profitability page (/dashboard/analytics/profitability).
  • One customer, job, service location, or body of water — the Chemical Usage & Cost section on each of those pages.

All of this is on the web dashboard. The technician mobile app records chemical usage but has no usage or cost charts.

The Insights tab on a chemical's page

  1. 1Click Chemicals in the sidebar and click the chemical you want.
  2. 2The page has three tabs: Overview (details, inventory, pricing, QuickBooks), Insights, and History. Click Insights.
  3. 3Pick a range with the presets at the top right: Last 30 Days, Last 90 Days, or All Time. Everything on the tab follows that range.

An Ask George about this button sits next to the presets — it hands George the chemical and the range you are looking at.

Four tiles run across the top:

  • Used — the quantity recorded in the range, in the chemical's own unit, with "N uses across N visits" underneath.
  • Spend at cost — what that chemical cost you over the range.
  • Billed — what customers were charged for it, with the margin and margin % underneath.
  • Stock runway — roughly how many days your current stock will last at the usage rate in this range.

Those middle two tiles change when there is no money to show. If nothing was billed in the range, the Billed tile is replaced by Avg per visit (the quantity, captioned "Not billed separately · included in the service rate") rather than showing $0 and a margin against nothing. If there was no cost and nothing billed, Spend at cost is replaced by Visits as well — the section "If you do not bill for chemicals" below covers that case in full.

The Insights tab reads visits that have been completed. Chemicals sitting on a job that has not been completed yet are not in these numbers.

Spend at cost vs. Billed vs. Margin

These three words mean specific things everywhere chemicals are reported — the chemical page, the Chemicals analytics tab, and the sections on customer/job/location/pool pages:

  • Spend at cost — what your company paid. It comes from the weighted average cost built from your restock entries (see chemicals inventory), not from the customer price.
  • Billed — what the customer was actually charged for that chemical on their invoice.
  • Margin — simply Billed − Spend at cost. The percentage next to it is margin against what was billed.

Billed $0 does not mean a billing mistake. On jobs where chemicals are included in the monthly (or weekly) rate, individual chemicals bill $0 on their own — the customer is paying for them inside the flat rate, so the profit lives in the service rate rather than in the chemical line. Their cost still shows in full. When a range has no billing at all, the pages stop reporting Billed and Margin rather than showing the whole cost as a loss — see "If you do not bill for chemicals" below.

So a chemical shows Billed above $0 when the job bills chemicals separately, when it uses the job-inventory billing mode, when the job only includes some chemicals and this one went over the included amount, or when the chemical has Always Charge turned on (which bills it even on all-inclusive jobs). See maintenance billing modes for the modes themselves.

If a chemical has no average cost on file, the Insights tab shows an amber "No average cost set for this chemical" notice: uses recorded without a cost fall back to the customer price, so spend reads high and margin reads near zero. (If that chemical is never billed either, the same notice instead says it is tracked by quantity only, with no spend to report.) Fix it by recording a restock with the real purchase cost from the Overview tab's Inventory card.

If you do not bill for chemicals

Plenty of pool companies never price chemicals separately — they are covered by the monthly rate, so Billed is $0 everywhere. Some also never set costs on their chemicals, so Spend at cost is $0 too. Rather than fill the screen with $0.00 tiles and a margin percentage calculated against nothing, these pages notice and lead with quantities instead. Nothing is hidden permanently and there is no setting to change — it follows the data in the range you have selected.

When nothing was billed but your chemicals do have costs, billing and margin step aside and cost stays:

  • On a chemical's Insights tab, the Billed tile becomes Avg per visit, captioned "Not billed separately · included in the service rate". Used, Spend at cost, and Stock runway are unchanged.
  • On the Chemicals tab of Profitability, the Billed and Margin columns come off the table (leaving Chemical, Quantity, Spend at Cost, Visits), and the totals beside the chart read Spend at Cost, Chemicals, and Visits.
  • In a Chemical Usage & Cost section on a customer, job, location, or pool, the tiles become Spend at cost, Visits, and Chemicals used.

When there is no cost and nothing billed, the money drops out completely and everything is counted in quantities and visits:

  • The Insights tiles become Used, Visits, Avg per visit, and Stock runway. The Usage over time chart opens on Qty, and Where it's used is ranked by quantity used instead of cost ("Ranked by quantity used") with the quantity as each row's headline number.
  • The Chemicals tab of Profitability sorts by Quantity, highest first, and shows Chemical, Quantity, and Visits. The spend chart is replaced by a note, since there is nothing to plot.
  • A Chemical Usage & Cost section shows Visits, Chemicals used, and Uses recorded, drops the spend chart, and ranks By chemical by quantity.

The money columns are still there if you want them: on the Chemicals tab of Profitability, a Show money columns link under the table brings Spend at Cost, Billed, and Margin back (and Hide money columns puts them away again). Every column stays sortable either way.

This is presentation only — no number is deleted or changed. Record a restock with a real purchase cost, or bill chemicals separately on a job, and the money view comes back on its own for any range that contains it.

The Usage over time chart

Below the tiles, Usage over time plots the range. Two controls sit on its header:

  • Qty (unit) | $ — switch between quantity used and money. In money mode the bars are Spend at cost and the line is Billed to customer.
  • Restocks — toggles a dashed Restocked line onto the chart, so you can see purchases against usage and spot the moment stock went in.

The chart opens on $, except when the range has no chemical cost and nothing billed — then it opens on Qty. Either way the toggle still works, and your choice sticks while you stay on the tab. The Billed to customer line is left off the chart entirely when nothing was billed in the range, rather than drawing a flat line along zero.

Bucket width follows the preset: Last 30 Days is charted by day, Last 90 Days by week, and All Time by month.

"Where it's used": jobs, customers, locations, bodies of water

The Where it's used card ranks where the chemical went, by what you spent at cost. Four pills switch the breakdown: Jobs, Customers, Locations, Bodies of Water. Each row shows the quantity and how many uses, and clicks straight through to that job, customer, location, or pool. Six rows show at a time — Show all N expands the list.

  • Uses that were never tied to a specific body of water are grouped as Unassigned in the Bodies of Water view.
  • This breakdown covers at most the last 12 months. On the All Time preset the card says so directly ("Covers the last 12 months"), while the tiles and the chart above it still cover the full history.

Stock runway: when to reorder

The Stock runway tile is the only forward-looking number on the page: how many days of stock you have left before you run out of that chemical. It is current stock ÷ average daily usage over the selected range, shown as a number of days with a small progress bar.

  • Under 14 days the tile turns red — roughly one reorder cycle.
  • It reads when you have stock but recorded no usage in the range (nothing to divide by).
  • It reads when the chemical has no stock tracked at all.
  • Because it uses the selected range, a shorter preset makes it react faster to a recent change in usage.

Stock runway is a projection, not an alert. The alerting mechanism for stock is the per-chemical Low Stock Alert threshold in chemicals inventory — there is no automatic reordering and no email when runway gets short.

The History tab: purchases and every recorded use

  • Purchase History — every restock and removal, with quantity, cost per unit, total, date, notes, and photos. Click an entry to edit it.
  • Usage History — every visit that recorded this chemical, newest first: the quantity, the customer, the job and technician, what that use cost you, and the date. Click a row to open the job. It loads 25 at a time with a Load more button.

The Chemicals tab on the Profitability page

For the company-wide view, open Profitability (Profitability in the sidebar, /dashboard/analytics/profitability) and click the Chemicals tab, alongside Jobs, Customers, Routes, Technicians, and Recurring Revenue. It follows the date preset at the top of the Profitability page.

  • Chemical spend over time — one chart for the whole company, with Spend at Cost, Billed, and Margin totals beside it.
  • A sortable table underneath: Chemical, Quantity, Spend at Cost, Billed, Margin (with its percentage), and Visits. Click any column header to sort; it opens sorted by Spend at Cost, highest first. If nothing in the range was billed — or there is no cost either — the dead money columns come off and the table leads with quantity instead; see "If you do not bill for chemicals" above.
  • Click a row to jump straight to that chemical's Insights tab.
  • A chemical recorded under a name that is not in your Chemicals catalog is still listed, tagged not in catalog, and its row does not link anywhere. Adding it to the catalog (or matching the spelling technicians use) connects it.

On this tab, All Time reaches back at most 24 months. When your range is longer than that, the footer under the table says "· last 24 months" so the total is never mistaken for your whole history.

Chemical Usage & Cost on a customer, job, location, or pool

The same analysis is embedded, scoped to one entity, as a Chemical Usage & Cost section ("What was added, what it cost, and what was billed") on four pages:

  • a customer's page, right under the Customer Profitability card;
  • a job's page, under its Profitability card;
  • a service location's page;
  • a body of water's page.

The section is always visible — nothing to expand, it loads with the rest of the page. Inside: Spend at cost, Billed, Margin (%), and Visits tiles, a Spend over time chart, and a By chemical list ranked by cost where each chemical links to its Insights tab. It starts on Last 90 Days and has its own preset selector in the section header.

  • When nothing was billed separately, the Billed and Margin tiles are replaced by Visits and Chemicals used, and a line under the list explains that these chemicals are included in the service rate.
  • When there is no cost either, the tiles become Visits, Chemicals used, and Uses recorded, the spend chart is dropped, and the By chemical list is ranked by quantity.
  • Totals in this section cover at most the last 24 months.

What these pages do not do

  • No export. There is no CSV, PDF, or print button on the chemical charts, the Where it's used breakdown, or the Chemicals analytics table.
  • Not in the technician mobile app. Technicians record chemicals on a visit, but usage and cost analytics are web-dashboard only.
  • No scheduled reports or emails. Nothing about chemical spend is emailed on a schedule; you read it in the dashboard.
  • No automatic reordering or purchase orders. Stock runway tells you when you will run out; ordering is still manual (companies using Heritage see an Order from Heritage button on matched chemicals).
  • No forecast beyond stock runway — there is no projected future spend or budget feature.
  • No chemical-level price change history. Purchase entries record what you paid each time; there is no separate report charting your customer price over time.

Numbers here update on their own as visits are completed and as completions are edited — there is nothing to refresh. The Recalculate button on the Profitability page is for the wider profitability figures (see profitability analytics); after correcting a purchase cost, the checkbox on the purchase entry — "Also update past job completions that used this chemical and recalculate profitability" — is what pushes the corrected cost back through past visits.

Frequently asked questions

Where can I see how much of a chemical I am using and what it costs me?

Chemicals in the sidebar → click the chemical → the Insights tab. It shows the quantity used, Spend at cost, what was Billed with the margin, and a stock runway, for Last 30 Days, Last 90 Days, or All Time — plus a usage-over-time chart and a breakdown of which jobs, customers, locations, or bodies of water it went to. For every chemical at once, use the Chemicals tab on the Profitability page.

Why does Billed show $0 when the chemical clearly cost me money?

Because those visits are on jobs where chemicals are included in the monthly or weekly rate — individual chemicals bill $0 on their own, so the customer is paying for them inside the flat rate. When nothing in the range was billed, the pages stop showing Billed and Margin altogether rather than reporting a margin against zero: the chemical's Billed tile becomes Avg per visit, and the Billed and Margin columns come off the Chemicals table. Your cost is still shown in full. To bill a specific chemical even on all-inclusive jobs, turn on Always Charge for it in the Chemicals catalog.

I don't bill for chemicals separately, so every chemical total is $0. Can I see usage quantities instead?

Yes, and it happens automatically. When a range has no chemical cost and nothing billed, the chemical pages switch to a usage-first view: the Insights tiles become Used, Visits, Avg per visit, and Stock runway, the usage chart opens on Qty instead of $, "Where it's used" ranks by quantity used, and the Chemicals tab of Profitability sorts by Quantity and drops the $0 money columns. A Show money columns link under that table brings them back if you want to see them. Nothing is deleted — set an average cost on a chemical and the money view returns on its own.

My spend looks far too high and the margin is near zero — why?

That chemical probably has no average cost on file, so uses fall back to the customer price. The Insights tab shows an amber "No average cost set for this chemical" notice when that is the case. Record a restock with the real purchase cost per unit and the weighted average cost is set from then on.

What exactly is stock runway?

Current stock divided by your average daily usage over the date range you have selected. Under 14 days the tile turns red. It shows ∞ if you have stock but recorded no usage in the range, and — if the chemical has no stock tracked. It is a projection only; the Low Stock Alert threshold on the chemical is what actually flags low stock.

Can I export the chemical usage charts or the Chemicals table?

No. There is no CSV, PDF, or print export on the chemical analytics charts, the "Where it's used" breakdown, or the Chemicals tab table.

Can my technicians see chemical costs and usage in the app?

No. Technicians record chemicals used on a visit from the mobile app, but the usage and cost analytics — the Insights tab, the Chemicals analytics tab, and the Chemical Usage & Cost sections — are on the web dashboard only.

Why does All Time on the Chemicals tab only cover the last 24 months?

The company-wide chemical breakdown is capped at 24 months to stay fast. When your range is longer, the note under the table reads "· last 24 months". The per-chemical "Where it's used" breakdown is capped at 12 months in the same way — the tiles and chart above it still cover the full range.

Related articles

Make Monday easier than last Monday.

30-day free trial. No credit card required. Cancel anytime.