Factor-based pricing
Price services by the subject's traits — pet weight, vehicle size, coat condition — and have the booking flow quote each customer the right amount automatically.
Updated 19 July 2026
Some services need to charge different prices depending on the subject — a pet's weight, a vehicle's size, a tattoo's coat condition. Factor-based pricing lets you set those prices once per factor and have the booking flow quote each customer the right amount automatically.
When to use it
Use factor-based pricing when the price or duration changes with a factor of what you're working on, not with what the customer picks off a menu.
Good fits:
- Pet grooming — small / medium / large dog, smooth / wire / long coat, matted vs not
- Auto detailing — sedan / SUV / van, single coat / metallic / matte
- Tattoo — palm-sized / full sleeve, simple / shaded / colour
- House cleaning — 1-bed / 2-bed / 3+ bed, with / without pets
Not a fit:
- Different services with different names ("Deluxe Wash" vs "Express Wash") — just create separate services.
- One-off price adjustments — use a manual override on the booking.
Best practice — choosing good factors
A few rules keep factor pricing accurate and easy for customers:
- Price on the subject's traits, not the breed name. Size and coat condition do most of the work in grooming; "Standard" vs "Toy Poodle" differ ~10× in size, so a size band priced correctly already separates them. Use breed for context, not as the main price lever.
- You can't price a free-text answer. A pricing factor must be a pickable list (choose-one, choose-several, yes/no, or a number band). If you want to charge by breed, use the curated Breed list (or create a new factor with a fixed set) — a free-text box can't carry a price.
- Keep it to 2–3 factors. Size + coat covers most grooming pricing. More than ~4 questions makes the booking flow long and the maths hard to reason about.
- A factor can change price, time, or both. Some factors (e.g. a thick coat) add grooming time without adding price — set the time impact and leave the price at $0.
Pricing factor vs Profile form field
These look similar but do different jobs:
| Pricing factor | Profile / intake form field | |
|---|---|---|
| Where it appears | Inside the booking flow | Customer profile / intake (after or alongside booking) |
| Effect | Adjusts price and/or time | Records info only — no price effect |
| Example | Size, Coat condition, Breed | Microchip number, vet clinic |
If a question doesn't change what the customer pays, it belongs on the Profile form, not here.
Business-level default vs per-service override
Every business has a default booking mode that new services inherit when you create them. New businesses default to Factor-based because most modern bookable services price by a factor (pet weight, vehicle size, room count) — flip to Classic if all your services are fixed-price menus.
When you create a new service, it picks up the business default automatically — no per-service toggle in the way. If a particular service needs to be different from the default (e.g. one classic "Wash $40" service inside an otherwise factor-based business), open the service and click Override for this service to reveal the per-service Booking Mode toggle. Click Use business default to revert.
The data model stores the actual mode on every service; "override" / "default" is just how the UI describes whether the service matches the business setting or not. Changing the business default does not retroactively change existing services.
Set your factors and prices once (business defaults)
Most factor-based businesses ask the same questions across most of their services — dog weight, coat type, the same add-ons. Instead of re-entering those per service, you set them once at the business level and every factor-based service inherits them.
Open Business → Settings → Pricing and click Add a factor. Pick an existing factor from your library, or Create your own if nothing fits — see Create a new factor below. Saving the price there creates the shared business default in the same step; there's nothing extra to do to "add it to defaults."
Come back to Business → Settings → Pricing any time to see the full set, add, edit, reorder, or delete a factor — this order is the order customers see across every inheriting service. The header still tells you the blast radius: "Applies to N factor-based services · M have overrides" — so you can see how many services pick up each change before you make it.
How a service inherits, overrides, removes, or adds
Open any factor-based service (Business → Catalog → Services, click the service, then Pricing → Manage pricing). The breadcrumb reads Catalog › <Service> › Pricing, with a View all pricing → link back to Settings → Pricing. The panel opens pre-filled with your business defaults, each row carrying a badge:
- Inherited — the service uses the business default as-is. You did nothing; it just works.
- Overridden — this service charges a different price for that factor. The business default is ignored for this service only.
- Removed — this service doesn't ask that question at all (shown struck-through).
- Service-only — a factor unique to this service, not in the business default.
Click Customise on a row to change it:
- Override — charge a different price here. Edits only this service; the default and every other service are untouched.
- Remove — stop asking this question for this service.
- Revert — undo an override and go back to the inherited default.
- Restore — undo a removal and ask the question again.
- Add a factor — add a one-off factor only this service needs.
- Reset all — drop every customisation and go back to pure inheritance.
Editing a default later — who changes, who doesn't
When you edit a default's price, a confirmation tells you exactly what happens: "Updates N services using this default; M with overrides won't change." Services that inherit pick up the new price on their next quote; services you deliberately overrode are left alone. Nothing is written into individual services — they simply read the new default next time they're quoted.
Attaching one factor to a few services (bulk attach)
If a factor only applies to a subset of services (say 5 of 30) and you don't want it in the shared default, use Attach to services in a default factor's row menu. Pick the factor, set its price, and multi-select the services to attach it to. Those services get the factor as Service-only without touching the shared default. There's no bulk-detach yet — to remove it, open each service and revert/remove the row.
Variant pricing and factor pricing — two independent tabs
A service has two independent pricing setups that coexist without conflict. In the service editor (Business → Catalog → Services, open a service), you'll see two tabs:
- Variant pricing — multiple fixed-price options (Small / Medium / Large, each with its own price and duration), plus optional static add-ons.
- Factor pricing — one factor-adjusted base price and duration that your pricing factors modify, plus optional static add-ons (extras with a fixed price stacked on top of the factor total).
You can switch freely between the two pricing methods with no conversion and no data loss. The old "Reduce this service to a single base variant before adding pricing factors" block is gone. Switching to Pricing questions activates the factor-based flow; switching back to Fixed variants restores the full variant list — both sides stay intact in storage.
Add-ons work in both modes. A static add-on (e.g. "Nail trim $15", "Teeth brushing $10") is a fixed-price extra the customer can select at booking time, regardless of which pricing mode is active. Add the add-ons once; they show in whichever tab is active. In factor mode, the add-on price is added on top of the factor-adjusted total (the add-on itself is never factor-adjusted).
Existing business after this update — "why didn't my services change?"
If you already configured factor pricing per service before this update, your default pricing-factor set starts empty and your services are unchanged. Each existing per-service factor now shows as Service-only when you open the service — nothing was lost, nothing silently changed, and every quote is identical to before.
To start sharing factors across services:
- Add the common factors via Business → Settings → Pricing → Add a factor.
- Open the services that should inherit them and Revert their now-redundant per-service rows so the default takes over.
Consolidation is deliberate and manual — Seglo won't auto-promote your existing per-service factors into the default, and there's no migration prompt. Doing nothing is safe: your business stays exactly as it was.
How to set it up
-
Open the service. Business → Catalog → Services, click the service to edit.
-
Switch booking mode (only if the service needs to differ from the business default). In the service form, click Override for this service, then switch between Classic and Factor-based. You'll see a new Pricing entry appear when Factor-based is selected.
-
Add a pricing factor. Open Pricing → Manage pricing, then click Add a factor. Pick the factor from the library (e.g. weight, coat condition) — the library is filtered to factors that apply to your industry and to the kind of profile the service is for (pet, vehicle, person). To link an existing factor, pick it from the list; if nothing fits, click Create your own to define a brand-new one on the spot — see Create a new factor below.
-
Configure pricing for that factor. Each factor has a type that tells customers how to answer:
- Number factors (weight, area): set tiers (
0–10 kg → $40,10–25 kg → $55,25+ kg → $70) or a per-unit rate. - Choose one factors (coat condition, vehicle size): set a price modifier per option (
smooth → +$0,long → +$15,matted → +$25). - Choose several factors (allergies, add-ons): prices add together for each selected option.
- Yes / No factors (sedated, anxious): set a single "when yes" modifier.
When an option adds duration, its row also shows an Offload these minutes section — one row per helper role your business has set up (e.g. Assistant), plus Rest / processing time last. Minutes entered there route to the matching step in the service's step sequence instead of holding the provider for them — for example, a "Heavily matted" coat answer could add 10 minutes to the Assistant row so the extra brushing time falls on the helper step, not the groomer's own step. See Fit more bookings with helpers for how steps and helpers are set up. Minutes are clamped so they never add up to more than the option's own duration adjustment; the editor shows an inline error if they do.
- Number factors (weight, area): set tiers (
-
Mark required vs optional. A required factor blocks the customer from booking until they answer; an optional factor lets them skip.
-
Save. The factor is now active. Staff eligibility for factor-based services is controlled by service-level skills — see Staff eligibility for factor-based services.
Create a new factor
The factor library is curated for your industry, but it can't cover everything. Create a custom factor directly from wherever you're adding one — Business → Settings → Pricing → Add a factor, or from inside a service's Pricing → Manage pricing → Add a factor. Both open the same picker.
- Open the picker and search first. Click Add a factor. The picker defaults to showing your library, filtered to your industry — search for what you need before creating a duplicate.
- Click "Create your own" if genuinely nothing fits. Name the question and choose how it's answered: Number, Yes / No, Choose one, or Choose several (only these four can carry a price — a choice question needs at least one answer option before you can set its price). List the Answer options for Choose one / Choose several, and an optional Unit for Number.
- The pricing editor opens straight after — set prices exactly like any library factor: tiers for Number, a price modifier per option for Choose one / Choose several, or a single "when yes" modifier for Yes / No. Saving here creates the shared business default in the same step.
It behaves like any other factor from then on: it inherits into business defaults, attaches to services, and quotes customers during booking. It also shows up read-only on your Profile Form with a $ also used for pricing → link back to Settings → Pricing — see Priced questions live on your Profile Form below. Your custom factors are private to your business — no other business ever sees them.
Kept across visits? In the pricing editor, Yes (the default) keeps this question's answer on the customer's profile between visits, exactly like breed or weight, so staff can see and edit the last answer. No keeps it out of the saved profile — the customer answers it fresh at each booking instead. Use No for anything that genuinely changes visit-to-visit (e.g. "is the coat matted today?") rather than a lasting trait. You can change this later when editing the factor; existing factors are unaffected and keep defaulting to Yes.
Choose how customers pick. For your own Choose one / Choose several factors, the pricing editor has a How customers pick control: leave it on Auto (Seglo picks chips or a searchable dropdown based on how many options you have), or force Chips — wrapping pills, Dropdown / searchable, or List — stacked cards. A live preview using the real customer control updates as you edit the options, so you see exactly what customers will see. This control is only available for your own custom factors — library factors always use Auto.
AI-suggested option values. There's no inline "Suggest values with AI" button in the question builder itself — for a list of obvious values (every dog breed, every coat length), use Ask the assistant to generate options below instead.
Ask the assistant to generate options
Reach the assistant from Business → Catalog → Services. Open the assistant panel and ask in plain language — e.g. "give me 20 dog breeds for a Breed factor" or "populate Coat type with common options". Apply saves directly: it creates the factor (or replaces an existing factor's options) there and then — the assistant doesn't change anything on its own until you do. It proposes a reviewable card in the chat showing the factor name, a short summary, and the options it suggests as an editable checkbox list. You stay in control:
- Nothing is saved until you click Apply. The card has an Apply button (labelled with the option count, e.g. "Apply 20 options"). Until you click it, no factor is created or changed.
- Curate first. Tick the options you want, edit any row's text, or add your own — only the ticked rows are applied.
- It replaces, it doesn't append. If you point it at an existing factor, applying replaces that factor's current answer options with your curated set — the card shows "(replaces the current options)" so you know. If you ask for a brand-new factor, applying creates it.
- It shows up wherever factors show up. After you Apply, the factor and its new options appear in the form's add-question search and the pricing-factors filter view without a manual reload.
- Values only — never prices. The assistant only fills the option names. You always set the prices yourself afterwards.
- If something goes wrong, the card shows an error with a Retry button — nothing is half-saved.
The assistant card is for the live conversation: reload the chat thread later and the card isn't re-shown as an actionable button (the assistant's text reply stays). Just ask again if you want a fresh proposal.
Editing and deleting a custom factor
Open the pricing editor again from Business → Settings → Pricing — click Edit on its row — to change its name, options, unit, or Kept across visits? setting. The $ marker on the Profile Form is read-only and links you back to Settings → Pricing rather than opening the editor directly. To delete a factor, use its row menu on the Pricing page. A custom factor can't be deleted while any service or business default is still pricing on it — Seglo blocks the delete and tells you how many pricing rules reference it. Clear those rules first (remove or revert the factor on each service / from the business default), then delete.
How customers see it during booking
When a customer taps a factor-based service, a factor drawer opens immediately — before the slot picker. They answer the questions you've configured (weight, coat condition, etc.) and watch the live price and duration update in real time at the bottom of the drawer. For Choose one / Choose several factors, each option also shows what it would add to the price (e.g. "+$15") before they tap it — no guessing before the running total updates. Once all required questions are answered, they tap Continue to see matching time slots sized to their duration. No surprise totals at the end.
No account required to see a price. Customers can answer factors and get a live quote entirely anonymously. An account is only required at the review/confirm step — because the quote must be locked to a profile before the appointment is created. Customers can log in or sign up right there; they don't need to start over.
Returning customers skip re-entry. When a logged-in customer picks a saved profile (for example, "Bella"), a profile preview appears immediately — showing what's on file (weight, coat condition, allergies, and any other stored answers) so they can confirm it's right before tapping a service. When they then tap a factor-based service, the factor drawer opens in a read-only summary by default: all stored answers are shown, a live price is calculated from them, and a single Add to booking button adds the line. No stepping through each question. An Edit button is always available to change any answer before confirming. First-time bookings (no stored answers yet) skip straight to the question-by-question flow as before — the summary mode appears automatically on subsequent bookings once answers are on file.
Answers are saved back to the pet profile. When a booking is confirmed, the answers the customer gave are written back to the pet (or vehicle, or person) profile. The next time they book the same service, the drawer pre-fills from those saved answers. If they change an answer at booking time, the saved value is overwritten with the new one.
How admins book a factor-priced service from the schedule
When you manually create a booking from Business → Schedule — by clicking + New booking or tapping an empty slot in a staff lane — and then select a factor-based service for a client's profile, the factor questions drawer opens automatically, exactly as it does for customers in the booking flow.
Prefill from stored profile answers. If the client's profile already has answers from a previous booking, the drawer opens in summary mode — stored answers are shown with a live price calculated, and a single Add to booking button adds the service. Tap Edit to change any answer before adding.
Fresh profiles get the full question flow. If no answers are on file yet, the drawer shows the question list. Answer all required factors, watch the price and duration update in real time, then tap Continue.
The resolved duration sets the end time automatically. The booking's end time fills in from the factor-resolved duration. You can still adjust the start or end time in the Time section of the form.
Answers save back to the profile. When the booking is created, the answers are written back to the profile automatically — no extra step. The next booking for that profile prefills from them.
Required answers are enforced. The factor service can't be added to the booking until all required factors are answered — the same rule customers face in the online flow.
Scope: This covers the manual-create flow only (+ New booking / slot tap). Editing factor answers on an existing booking is not yet supported.
Priced questions live on your Profile Form
A question you've priced also shows on your active Profile Form — the per-profile record (pet, vehicle, etc.) that stores durable data between visits. The form only reflects it read-only: creating and pricing the question happens in Settings → Pricing (or inside a service's Pricing section), never on the form itself. See Forms for how questions are added to the form in general.
Open Clients → Forms and click your active Profile Form to see it. A priced question carries a small $ marker (hover for "Affects pricing — asked during booking") so it's clear the customer's answer changes their quote, and it sits in the Asked per service section rather than Asked at intake.
What moves a question between sections
A question with an active pricing rule — a business default or a per-service override — shows in Asked per service. A question with no pricing rule shows in Asked at intake, including a question you've created but haven't priced yet.
Pricing is managed from Settings → Pricing, not from the form — the form only shows a read-only $ marker. Deleting a factor there (and any per-service overrides) removes its last pricing rule, and the question automatically moves to Asked at intake on the form — it's never silently deleted. If you also want the question gone from the form entirely, delete it there afterwards (the delete control is hidden while a field is still priced). Any answers customers have already given are kept either way.
What if I don't have a Profile Form yet
Create and activate a Profile Form first (Clients → Forms) — pricing questions are added to whichever Profile Form is active, so one needs to exist before you set pricing on anything.
What the "$" marker means
A question showing the $ marker on your Profile Form is a live pricing factor — the customer's answer to it directly affects the quote on their next booking. Questions without the marker are asked at intake and don't affect pricing.
Booking Readiness — where conflicts surface
Your dashboard home shows a Booking Readiness widget. For factor-based services it flags one configuration gap:
- "Bath is set to factor-based but has no pricing factors yet" → opens the service to add factors.
A green readiness state means all factor-based services have at least one pricing factor configured. Staff eligibility is governed by service-level skills — see Staff eligibility for factor-based services.
V1 limitations
- One factor-based variant per booking. A customer can't book a 60-min grooming for Max AND a 30-min nail trim for Bella in the same checkout when both are factor-based. They book them as two separate appointments. (Tracked for V2.)
- The AI agent can quote but can't commit. If a customer asks the agent "book grooming for Max", the agent will pre-fetch the factors, confirm any stale values, and direct the customer to the booking UI to pick a time and confirm. The actual commit happens in the app. (Tracked for V2.)
- Owner-driven setup only. The receptionist surface can override prices after the fact, but doesn't yet offer a quick "edit this factor on this client's profile" surface. (Tracked for future pickup.)
- One shared default set per business. You get a single business-wide default pricing-factor set, not multiple named templates (e.g. a separate "Grooming" vs "Daycare" set). If your services split into distinct pricing groups, use per-service overrides or bulk attach for now. (Multiple named templates are V2 work.)
- Bulk attach, but no bulk detach. You can attach one factor to many services at once; removing it is per-service (open each service and revert/remove the row).
- AI value suggestions are web-only. Ask the catalog assistant on Catalog → Services to propose a card you Apply (see Ask the assistant to generate options) — option names only, never prices, never which factors to create. The voice agent still can't generate factor values.
Switching back to classic
Switching a service back to Classic is safe — the pricing factors are preserved (just no longer used). Any quote already in flight (within 15 minutes of being generated) honours the price the customer was shown; new quotes use the classic price. You can switch back to factor-based at any time without losing the configuration.
Troubleshooting
- "No available staff" at booking time. A staff member may be missing the service-level skill for this service. Open Business → Team, open their profile, and tick the service under the Services tab.
- "Quote expired" at checkout. Quotes hold for 15 minutes. After that the customer has to re-confirm — the price might have changed if you edited a factor in the meantime.
- Prefill looks wrong. Customers can update during booking — the new answer overwrites the old one on confirm. The audit log keeps the history.
- Customer asked to log in partway through booking. This is by design for factor-based services — an account is needed to lock the quote to a profile. The customer can sign up right there without losing their answers or the price they were shown.
- "Contact the salon to book this" message. The customer's answers put them outside the pricing rules you've configured (for example, a weight above your highest tier). They can't self-book for that combination; take the booking manually.
Related
- Staff eligibility for factor-based services
- Forms — search-first questions
- Client profiles — where a customer's pricing-factor answers show up alongside their Profile form answers.