Flexible commission profiles and the Try it out calculator
Per-service and per-category custom overrides, live calculation with the Try it out box
Flexible commission profiles
As of the 2026-05-17 update, Bookinda's commission system is much more flexible. Within a single profile you can now set different rates per service or per category, without needing separate profiles for each case. And the new 🧪 Try it out box calculates in real time what the staff member will earn.
Where to find it
- Manage profiles: Settings → Staff → Commission profiles (
/manager/settings/commissions) - Assign to staff: Staff profile → Commissions tab
What's new
1. Per-service custom override
Within a profile you can assign a different rate to a specific service. E.g., the profile's base rate is 30%, but the "Traditional massage" service gets 50%.
2. Per-category custom override (the long-missing feature!)
Assign a different rate to an entire service category. E.g., every "Pedicure" category service gets 45%. Previously not supported — now it works.
3. Try it out calculator
At the bottom of the profile editor, a live box: pick a service + amount, and it instantly calculates:
- Commission amount
- Effective rate (%)
- Source — which rule produced this value
This matters because in a complex profile (base + 3 overrides + tiered) the outcome isn't always obvious. Try it out tells you immediately.
Inheritance chain (top wins)
Commission calculation looks for the effective rate in this order:
- Service-level (
Service.commissionValue) — if set directly on the service, applies to anyone - Profile: per-service override — override for a specific service
- Profile: per-category override — override for an entire category
- Profile: tiered rate — based on period revenue (if profile is in TIERED mode)
- Profile: base rate —
serviceCommissionRateorbaseRate - Legacy staff-level rate — backward-compatible fallback (the old
staffSettings.commissionsJSON) - None → 0% (no commission record created)
The more specific rule wins — a service-level override wins over a category-level one.
Creating a new profile
- Settings → Staff → Commission profiles → + New profile
- Basics: name (e.g., "Senior stylist"), optional description
- Rates: service + product commission toggles, flat or tiered
- Custom overrides: + Add override → service or category + rate %
- Assigned staff: assign after saving the profile
- 🧪 Try it out: test live before going live
Try it out — how to use
At the bottom of the profile editor modal:
🧪 TRY IT OUT
Staff: [Csilla ▼]
Service: [Traditional massage ▼]
Sale amount: [8.000] Ft
➜ Commission: 4.000 Ft (50%)
📍 Source: Profile "Senior": service-level custom override
As you change inputs or the profile itself (rate, overrides), it recalculates live after 400ms. You instantly see whether the set inheritance chain actually produces the result you expect.
Scenarios
Scenario 1, Junior flat rate
Profile "Junior 15%". Service + product 15%, no overrides. Simple, transparent.
Scenario 2, Senior + expensive service highlighted
Profile "Senior 30%". Base rate 30%, but "Trend color" service has 40% override. Senior more motivated to upsell the pricey service.
Scenario 3, Senior + whole category higher
Profile "Senior". Base 30%, but the "Massage" category has 40% override. Every massage service pays 40%, no per-service tweaking needed.
Scenario 4, Senior + tiered + service override combined
Profile "Top performer". Tiered: 0-500k → 25%, 500k-1M → 30%, 1M+ → 35%. + A "VIP treatment" service with 50% override. The specific service-override always pays 50% (regardless of tier); everything else falls on the tiered rate.
Scenario 5, Try it out for dispute prevention
Before going live with a new profile: open it, try 3-4 different services in the "Try it out" box, verify the expected rate comes out for each. If anything's off, the "Source" tells you which rule fired.
Tips
- Editing a profile is not retroactive — existing commission records stay unchanged.
- Per-service override "beats" the per-category override if both exist for the same case. More specific wins.
- Service.commissionValue (service-level) always wins over the profile — only use when you want everyone to get the same rate.
- Try it out doesn't write to the DB, just a preview. Experiment freely.
- Legacy staff-level rates still work for staff without a profile assignment. Auto-migration moved them into profiles, but if a staff has no profile yet, the legacy rate applies.
- The "Source" line in Try it out is a diagnostic tool — if an unexpected rate appeared, the source tells you which rule caused it.
Auto-migration
As part of the 2026-05-17 update, an automatic migration ran: every staff with a legacy staffSettings.commissions rate was given a "Custom: {Name}" profile with the same rate. These profiles appear on the Commission profiles page and can be edited there.
When you add a new staff member, you assign a profile yourself via the staff edit modal "Commissions" tab.