> ## Documentation Index
> Fetch the complete documentation index at: https://docs.aquaops.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Dosing Chemicals

> Add your own chemical products to the dose-recommendation calculator on chemical records.

Dosing Chemicals lets an organization add its own chemical products — ones not on AquaOps' built-in dosing chart, or a different-strength bottle of one that is — to the dose calculator shown on chemical record detail pages.

## Purpose

Chemical record detail pages can show a **Recommended Dose** card telling an operator roughly how much of a product to add to move an out-of-range reading toward its ideal value. AquaOps ships with generic industry-standard (PHTA/CPO) dosing figures for common products. Use `Settings > Dosing Chemicals` when your facility uses a product that isn't in that standard list, or uses a different concentration of one that is.

This page is unrelated to the July 29, 2026 "Custom fields for chemical readings" changelog item — that feature lets admins add arbitrary extra fields (number, text, yes/no) to a specific pool's chemical record form from that pool's chemical-records settings. Dosing Chemicals, covered here, only affects the dose-recommendation calculator and is configured org-wide, not per pool. See [Chemical Records](https://docs.aquaops.dev/user-guide/chemical-records.md) for the custom-fields feature.

## How it connects to chemical records and pool profiles

* [Pools and Chemical Profiles](https://docs.aquaops.dev/user-guide/pools-and-chemical-profiles.md) defines each pool's ideal/alert/closure thresholds — those thresholds are what determine a reading is out of range in the first place.
* [Chemical Records](https://docs.aquaops.dev/user-guide/chemical-records.md) is where a reading is logged and evaluated against those thresholds.
* When a saved record is out of range, its detail page shows the Recommended Dose card, calculated from the pool's gallons (set in `Settings > Pools`) and the ppm the reading needs to move.
* For each out-of-range field, the card offers a product picker. That list combines AquaOps' built-in products with any org-wide custom dosing chemicals you've configured here.

Custom dosing chemicals defined on this page appear as extra choices in that product picker for every pool in the organization — they aren't scoped to one pool.

## Configuring a custom dosing chemical

Go to:

```text theme={null}
Settings > Dosing Chemicals
```

You enter each chemical the same way its product label reads: how much to add, for how big a ppm change, in how many gallons.

### Fields

* **Label** — the product name, e.g. "Acme Pool Shock 73%"
* **Form** — Dry (measured in oz) or Liquid (measured in fl oz)
* **Amount** and **Gallons** — the reference dose, e.g. "16 oz in 10,000 gal"
* **Effects** — one or more field/direction/ppm-change rows describing what that dose does. Most products affect a single field (e.g. raise free chlorine); some, like Dichlor, affect two (raise free chlorine and raise cyanuric acid) and need two effect rows on the same chemical.

Effect fields available: Free Chlorine, Alkalinity, Calcium Hardness, Cyanuric Acid (stabilizer), Combined Chlorine, pH.

AquaOps normalizes whatever you enter into a standard "amount per ppm per 10,000 gallons" rate at read time — it isn't stored pre-normalized, so the list always reflects your latest edit.

**1. Open Dosing Chemicals**

Go to `Settings > Dosing Chemicals`.

**2. Add a chemical**

Enter the label, form, and the reference dose exactly as the product label states it.

**3. Add effects**

Add one effect row per field the dose actually changes, with direction and ppm change.

**4. Save**

Select `Add chemical`. It's immediately available as a product option on every pool's dose recommendations.

**5. Edit or remove later**

Use `Edit` to update a chemical (this replaces all of its effect rows) or `Remove` to deactivate it.

### Removing a chemical

`Remove` is a soft delete (`deleted_at` is set) — the chemical drops out of the list and the product picker, but existing chemical records that referenced a dose calculated from it are not altered.

## The dosing disclaimer

The dose-recommendation card itself (on a chemical record's detail page, not this settings page) shows a liability disclaimer banner the first time a user sees it, regardless of whether the dose came from a built-in or a custom chemical:

> Dose recommendations are decision-support guidance for a certified operator to verify — not an instruction to blindly follow. Your facility remains responsible for chemical dosing decisions; see the Terms of Service for full details.

A user dismisses it by selecting **I understand**, which is recorded per account (`dosing_disclaimer_acknowledged_at` on their user record) — once acknowledged, it stops appearing anywhere for that person. The card also always shows a persistent footer note that the figures are generic industry guidance, not a substitute for the actual product label.

## Who can manage this

Anyone can view the Dosing Chemicals list. Adding, editing, or removing a custom chemical requires the `org:manage` or `chemical_records:edit` permission. This page is also gated behind the `chemical_records` feature flag for the organization.

## Best practices

* enter the reference dose exactly as printed on the product label — don't round or convert units
* add a separate effect row for every field a single dose actually changes (check the label for secondary effects like Dichlor's cyanuric acid contribution)
* use a new custom chemical entry for a different-strength bottle of an existing product rather than editing the built-in figures
* always verify a recommended dose against the physical product label before adding chemicals to a pool

## Suggested screenshots

* Dosing Chemicals settings list with a couple of custom entries
* add/edit custom dosing chemical form showing multiple effect rows
* Recommended Dose card on a chemical record showing a custom chemical selected in the product picker
* the dosing disclaimer banner on first view


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.