The formula is the asset, not the appointment
A colour client is loyal to a result, not to a chair. The salon that can rebuild last visit's formula on demand keeps that client; the salon that improvises loses them the first time the regular colorist is out sick.
F9.contact treats the formula as a first-class record. Every colour or bleach event is logged as a chemical service with its colour formula attached in the same transaction — a colour event never exists in the system without the recipe that produced it.
What a formula record holds
Each mix component is stored as product code · grams · role:
- Product code — the manufacturer's tube identifier, exactly as the colorist reads it off the tube (Wella/L'Oréal
7.43, Schwarzkopf Igora7-77, Redken6NN— the format is brand-specific, F9 doesn't force one). - Grams — how much of that tube went into the bowl.
- Role — primary, secondary, toner, or additive (bond builders, intensifiers, gold drops).
Alongside the mix:
- Developer volume — 10 / 20 / 30 / 40 vol, the strength that drives the lift.
- Developer grams — so the next colorist reproduces the consistency, not just the colour.
- Level transition — starting level and target level on the 1–10 scale, plus the target tone in plain words ("warm copper", "cool ash").
The point is reproducibility. At the next visit the colorist sees exactly what worked last time — and, through the encrypted result notes, what didn't.
A chemical service log that holds up
Colour is one chemical event among several. The chemical service log is the foundational record for colour, bleach, relaxer, perm, keratin and other treatments, with four encrypted free-text fields the chair actually needs: scalp condition, adverse reactions, result notes, and the next-appointment recommendation.
Every event carries its own per-visit photos, each tagged by role — formula card, reference look, result, or documentation — so the before/after and the recipe live together, not in three different phones.
Patch tests, tracked and expiring
EU colour and lash chemistry means patch tests, and patch tests mean expiry. F9 records each patch test through a Pending → Pass / Fail / Inconclusive state machine. A passing test gets a calculated expiry date driven by a tenant-configurable validity window, with encrypted reaction notes and an optional result photo. The salon sees, per client, whether the test on file is still valid — before the colour goes on, not after.
Consultations and consents, signed before the colour goes on
Chemical work is also a consent-and-paperwork business. F9 lets the salon author versioned consultation forms — structured intake questionnaires with typed questions, per-locale wording, and a configurable refill cadence — and versioned consent forms (chemical hair colouring, lash extensions, and any slug the salon needs) under a Draft → Published → Archived lifecycle.
The client signs from the portal with a simple electronic signature in the eIDAS sense: a typed-name affirmation plus an agreement checkbox, with IP, user agent, session identifier and locale captured server-side and sealed into a canonical envelope with HMAC-SHA256. A DBA who edits any field after the fact invalidates the recomputed seal — the record is independently re-verifiable, and a PDF receipt with a forensic footer is available on demand for legal review.
When a published template is wired to the services on a booking, F9 turns it into a booking-confirmation gate: the appointment can't move to Confirmed until the client has a current signature or response on file. Staff nudge the client with a one-time, revocable magic link (72-hour expiry, single-use, fully audited) that drops them straight onto the right form.
Memberships and packages: turn a colour habit into recurring revenue
Colour is the most predictable recurring need in the salon — roots regrow on a schedule. F9 captures that with service packages (pre-paid bundles like "5 × Haircut + 3 × Colour", invoiced under Croatian SPV rules with VAT paid upfront) and client memberships (monthly / quarterly / annual plans with included services, member-only discounts, priority booking, and a loyalty-points multiplier).
This is the single biggest retention lever a salon has. Industry research puts member retention at 70–90% versus 30–40% for pay-as-you-go, with members spending 20–40% more and visiting more often. F9 handles the full lifecycle — freeze, prorated cooling-off refunds, cancellation, auto-renewal — with cron-driven renewal reminders and expiry, and surfaces remaining sessions and renewal dates in the client portal.
Calendar sync without leaking your client list
Staff want their day on their own phone. F9 mirrors confirmed bookings one-way into a dedicated F9 Bookings calendar in a connected Google account — and by default the event shows the service name and time only. Customer names, phones and notes never leave F9. Reschedules and cancellations propagate; Google-side edits are not read back, so F9 stays the source of truth.
Google Calendar sync is available and live-verified end-to-end on our development environment — connect, booking sync, reschedule, cancel, and per-worker share all confirmed. Production rollout is pending Google's OAuth app verification.
GDPR is cryptographic, not cosmetic
Hair records are personal data, and a salon eventually has to honour a deletion request. F9's erasure is cryptographic: customer PII is encrypted with a per-customer key, and erasure destroys the key. The formula history, the photos, the encrypted notes — all become permanently unreadable, while the booking history and audit trail survive as the salon's legitimate business record. Encryption is AES-256-GCM throughout, with a tiered key hierarchy that keeps customer data out of reach of tenant-level keys.
Croatian fiscal compliance, built in
Every sale fiscalises. F9 puts the JIR, the ZKI and a scannable FINA QR code on each invoice, pointing back at porezna.gov.hr. When a sale has to be reversed, F9 issues a proper storno credit note rather than deleting the original — and where the salon took the card through a connected terminal, the refund follows the money back to the original card automatically. Blagajnički maksimum, the dnevnik blagajne day journal, variance classification at close, and JOPPD tip export are all part of the platform, not a bolt-on.
This isn't a US tool with a Croatian flag bolted to the settings page. It was built for the EU from the first commit.