Watch: How to set up pricing rules for vehicle and window type in SalesThumb (0:56)
A quote line starts at the service's default price from Settings → Services. A per-vehicle price from Settings → Pricing Rules does not replace it automatically — someone has to click the suggestion on that line. And after you hit save, the server can change the number one more time for fleet contract pricing or an HQ price floor. When the quote says one thing and your price list says another, it's almost always one of those three steps.
Where each number on a quote line comes from
- The starting price — add a service from the "Quick service" picker on the New Quote screen and the line seeds at that service's default price in Settings → Services. Nothing else is consulted at that moment.
- A pricing rule — your per-vehicle-class, per-window price from Settings → Pricing Rules. It only lands on the line if someone clicks it. Details below.
- Customer contract pricing — applied automatically by the server when the quote is saved, if the customer is covered. See Setting up fleet pricing.
- An HQ floor or discount cap — if your shop belongs to a franchise organization, the network minimum price and maximum discount are enforced last, on save.
Pricing rules do not apply themselves
This is the part that catches most shops out. On the New Quote screen, a line added from the Quick service picker gets a "Price by vehicle:" strip with two dropdowns — vehicle class and windows. Pick both, and if an active rule matches, a link appears reading *Use $265 (Better) for this vehicle*. The price changes only when someone clicks that link. It never silently overwrites a price that was already typed in.
Three things follow from that:
- Set only one of the two dropdowns and nothing appears — the lookup needs an exact service + vehicle class + window set match, not a partial one.
- The strip only exists on lines added from the Quick service picker. A free-typed line, a package line, or a tint job built in the Sales Matrix has no single service attached, so there is no rule lookup on those lines at all.
- If your front desk builds quotes by typing prices in by hand, your pricing rules are decorative. Whatever they typed is what the customer sees.
What a rule is keyed on
Settings → Pricing Rules shows one tab per service, then a grid with vehicle classes down the side and window sets across the top. Each filled-in cell is one rule, and a blank cell uses the service's default price. A rule is keyed on:
- Service — the tab you're on.
- Film product — optional. A plain cell has none; a film-specific price is added from the cell's settings icon (Add film-specific price).
- Vehicle class — the row, shown as raw codes: SEDAN, COUPE, SUV, TRUCK, VAN, CROSSOVER, WAGON, CONVERTIBLE, OTHER.
- Window set — the column, shown as codes with spaces: FRONT 2, REAR 3, REAR 5, FULL 7, WINDSHIELD, SUNROOF, FULL VEHICLE, CUSTOM.
- Price — what you type in the cell, and the only field the quote builder actually uses.
- Duration (min), Tier name (Good / Better / Best), Tier order — optional, set from the cell's settings icon.
Worth being blunt about duration: you can set it on a rule and edit it later, but nothing reads it back. Applying a rule to a quote line copies the price and only the price. Job length still comes from the service.
When two rules could match the same vehicle and window
Two active rules with the exact same service + film product + vehicle class + window set are blocked outright. Try it and the save fails with: "An active pricing rule already exists for this exact service + vehicle class + window combination. Deactivate or edit the existing one instead."
Two rules that differ only by film product are not duplicates by that check, so they're allowed — and that's the case to watch. The quote builder's lookup matches on service, vehicle class, and window set only. It ignores film product, sorts what's left by tier order, and takes the first one. So:
- With a Good / Better / Best set for the same vehicle and windows, only the lowest tier order is ever suggested. The others are invisible at quote time.
- Tier order defaults to 0. If two matching rules both sit at 0, which one wins is not defined — the same vehicle can get a different suggested price on different days. Give every rule in a set a distinct tier order.
Editing and deleting
A cell's price, duration, tier name, and tier order can be changed at any time; click Save changes to keep your edits. Service, vehicle class, and window set are simply which tab, row, and column the cell sits in.
There's no Active switch on this page. To remove a price, clear the cell and click Save changes. That deletes the rule, and that vehicle class and window set fall back to the service's default price.
If the rule was ever applied to a quote or invoice line, the delete is refused with "This pricing rule is used by an existing quote or invoice line item and can't be deleted. Deactivate it instead." This page has no deactivate control, so change that cell's price instead.
Who can change pricing rules
Creating, editing, and deleting all require the shop's manage pricing permission. Owner, Admin, and Manager have it by default; Technician, Front Desk, and Service Writer do not, and their save will come back as an error. Viewing the list isn't restricted — anyone signed into the shop can see the prices. Custom permission sets and per-user overrides can change any of this.
Pricing Rules is not plan-gated. It's available on Basic, Starter, Growth, and Pro.
If your franchisor has locked pricing
Shops in a franchise organization can have pricing locked by HQ. When that's on, the page shows a "Pricing locked by HQ" badge, names your franchisor in the subheading, and disables the whole grid: prices, durations, tier fields, and film-specific prices alike.
What the server does to the price when you save
Whatever price is sitting on the line — typed, seeded from the service default, or applied from a rule — is only the starting point. On save, in this order:
- Customer contract pricing. The most specific override wins: an exact service or film match beats a category-wide one. Expired contracts never win. A flat contract price replaces the unit price outright — including a price you just applied from a pricing rule. A contract discount percentage is added on top of the line's list price instead.
- HQ floor and discount cap. If the shop belongs to an organization with network pricing rules, a below-floor unit price is raised to the floor and any discount is clamped so the net can't drop back under it.
- A final clamp so the line total can never go negative.
One useful tell: if a contract number applied and the line's description was blank, the saved line comes back with "Contract 12345" written into the description. If you see that on a quote, contract pricing touched the price.
What pricing rules don't touch
- Coupons. Coupons are an invoice-level thing — redeeming one adds a separate discount line to an invoice. A coupon never changes a quote line's unit price, so it isn't part of this precedence question at all. See Creating and managing coupons.
- Packages. A package line is re-priced server-side from the package's own configured price. Anything typed on that line, and any pricing rule, is ignored.
- The Sales Matrix. In-store tint presentations price from the Sales Matrix's own film grid, not from these rules. See How good / better / best quote tiers work.
Quick diagnosis
Q: The quote came out at the plain service price even though I have a rule for that vehicle. A: Nobody clicked "Use $…" on the line — or the line wasn't added from the Quick service picker, or only one of the two dropdowns was set.
Q: The rule I set up shows a different price than expected on the suggestion. A: You probably have more than one rule for that service + vehicle class + window set differing by film product, and the lowest tier order is the one being offered. Check each rule's Tier order in the cell's settings icon.
Q: The price changed between what I saw in the builder and what saved. A: Customer contract pricing, or an HQ floor. Check whether the customer has a pricing override set up, and look for a "Contract …" note in the line description.
Still doesn't add up? Use the in-app help widget or email hello@salesthumb.com with the quote number and the rule you expected to apply.