Dynamic Vehicle Discounts via Offers
Dynamic offer-based discounting lets your showroom apply pricing discounts to vehicles automatically based on offer criteria.
Instead of manually editing pricing on each vehicle, you can create an offer, add discount values to that offer, and let Vyro apply the discount to any eligible stocked vehicle connected to it.
Who can manage this
You must be signed in to Dashboard with the showroom:owner role for the showroom.
How it works
An offer-based discount is applied when all of the following are true:
- the offer is Published
- the offer is currently within its availability window
- the vehicle matches the offer Criteria
- the offer has at least one positive discount value configured
If those conditions are met, the discount is applied automatically in pricing lockups for eligible stocked vehicles.
How to create an offer
- Open Dashboard.
- Go to your showroom.
- Open Offers.
- Create a new offer, or open an existing offer to edit it.
- Complete the offer details.
- Add your discount values in the Discounting section.
- Set Criteria to define which vehicles the offer should apply to.
- Turn on Published.
- Set Available from and Available to if needed.
- Save changes.
Offer fields explained
Internal name
Used internally in Dashboard so your team can identify the offer.
This is not the primary customer-facing label.
Label
The public-facing label shown when the offer is displayed.
If the offer is used for discounting, this label may also be used as the discount label in pricing.
Description
The main body content for the offer.
Useful if the offer is also displayed on-site as a promotional offer.
Featured image and logo
Optional marketing assets used when the offer appears visually on the website.
These do not control discount eligibility.
CTA label and CTA link
Optional call-to-action text and link.
Useful if customers can click through to an offer page, finance page, or campaign landing page.
Disclaimer text, button label, and link
Optional legal or explanatory content.
If no disclaimer link is supplied, the disclaimer may be shown as tooltip-style content instead.
Published
Controls whether the offer is visible and active for customers.
If an offer is not published, its discount should not be treated as active for website customers.
Available from / Available to
Controls when the offer is active.
- If Available from is blank, the offer is available immediately.
- If Available to is blank, the offer remains available indefinitely.
Type
Available values include:
OrderFinance
This mainly affects how the offer is presented in the UI. For vehicle discounting, the more important fields are the discount values, publish state, availability, and criteria.
Order
Controls priority and sorting.
Lower numbers are applied first.
This matters because multiple eligible offers can stack, and the order affects the sequence they are applied in.
Tags
Used for categorisation and merchandising.
Tags do not decide discount eligibility by themselves.
Criteria
This is the rule set that determines which stocked vehicles the offer applies to.
Criteria is stored as a stocked_vehicles boolean expression.
In simple terms: it is a vehicle filter.
How to set up a discount
In the Discounting section, you can configure discounts in two buckets:
- Dutiable
- Additional
Each bucket supports:
- Relative
- Fixed
Dutiable discount
Applied before on-road costs.
Use this when you want the discount to affect the dutiable part of the vehicle pricing.
Additional discount
Applied after on-road costs.
Use this when you want the discount applied later in the pricing flow.
Relative
A percentage discount.
This is stored as a decimal value:
0.10= 10%0.15= 15%0.25= 25%
Fixed
A dollar-value discount.
Example:
1000= $1,000 off
How discounts combine
Within one offer
If you set both a Relative and a Fixed discount in the same bucket, both are applied.
Example for Dutiable:
- Relative = 10%
- Fixed = $1,000
Both of those discount values are applied.
Across multiple offers
If multiple eligible offers apply to the same vehicle, they can stack.
Offers are applied in Order from lowest number to highest number.
This means the order value matters if you have more than one active discounting offer for the same vehicle group.
Criteria explained in simple terms
Criteria decides which vehicles receive the offer.
Think of it as a filter like:
- all listed cars
- all new cars
- all used cars
- all Mazda used cars
- all listed demo vehicles
- all listed vehicles from a specific make or model
The offer only applies to vehicles in the showroom that match the criteria.
How the criteria builder works
When you add a rule in the criteria builder, you choose:
- Field — the vehicle attribute to filter on
- Operator — how to compare it (the only option currently is
Equal) - Value — what to match against
The value input changes depending on the field:
| Field | Value type | Available values |
|---|---|---|
is_listed |
Toggle | Yes / No |
condition |
Dropdown | new, used, demo |
make |
Text input | Type the make name exactly, e.g. Mazda |
Note on condition values: The dropdown shows
new,used, anddemoin lowercase. Use these exact values when referencing condition in criteria.
Sample criteria examples
The examples below show what each criteria rule looks like in the builder, followed by the underlying expression.
All listed cars
| Field | Operator | Value |
|---|---|---|
is_listed |
Equal | Yes |
{
"is_listed": { "_eq": true }
}
All new cars
| Field | Operator | Value |
|---|---|---|
condition |
Equal | new |
{
"condition": { "_eq": "new" }
}
All used cars
| Field | Operator | Value |
|---|---|---|
condition |
Equal | used |
{
"condition": { "_eq": "used" }
}
All demo cars
| Field | Operator | Value |
|---|---|---|
condition |
Equal | demo |
{
"condition": { "_eq": "demo" }
}
All listed new cars
| Field | Operator | Value |
|---|---|---|
is_listed |
Equal | Yes |
condition |
Equal | new |
{
"_and": [
{ "is_listed": { "_eq": true } },
{ "condition": { "_eq": "new" } }
]
}
All listed used cars
| Field | Operator | Value |
|---|---|---|
is_listed |
Equal | Yes |
condition |
Equal | used |
{
"_and": [
{ "is_listed": { "_eq": true } },
{ "condition": { "_eq": "used" } }
]
}
All used cars by a certain make (example: Mazda)
| Field | Operator | Value |
|---|---|---|
condition |
Equal | used |
make |
Equal | Mazda |
{
"_and": [
{ "condition": { "_eq": "used" } },
{ "make": { "_eq": "Mazda" } }
]
}
All listed used cars by a certain make (example: Mazda)
| Field | Operator | Value |
|---|---|---|
is_listed |
Equal | Yes |
condition |
Equal | used |
make |
Equal | Mazda |
{
"_and": [
{ "is_listed": { "_eq": true } },
{ "condition": { "_eq": "used" } },
{ "make": { "_eq": "Mazda" } }
]
}
What the criteria count means
When editing criteria in Dashboard, Vyro can show how many vehicles currently match.
This is helpful for checking whether your rule is too broad, too narrow, or targeting the correct set of vehicles before publishing the offer.
Recommended setup pattern
For a simple campaign such as "$1,000 off all listed used Mazdas":
- Create an offer.
- Set Internal name to something like
Used Mazda $1000 Off. - Set Label to something customer-friendly like
$1,000 Off. - In Discounting, enter:
- Dutiable Fixed =
1000
- Dutiable Fixed =
- Set criteria using these three rules:
| Field | Operator | Value |
|---|---|---|
is_listed |
Equal | Yes |
condition |
Equal | used |
make |
Equal | Mazda |
- Publish the offer.
- Set availability dates if required.
- Save.
Important notes
- An offer must be published and currently active to be used on customer-facing website pricing.
- A vehicle must match the offer criteria to receive the discount.
- Only offers with a positive discount value are treated as discounting offers.
- Multiple eligible offers can stack.
- Lower Order values are applied first.
- Dutiable discounts are applied before on-road costs.
- Additional discounts are applied after on-road costs.
Suggested best practice
Keep discounting offers narrow and intentional.
Good examples:
- all listed used Mazdas
- all new vehicles of a specific model
- all demo vehicles in stock
Less ideal examples:
- very broad criteria with no listing or condition filter
- overlapping campaign offers without a clear order strategy
If you expect multiple campaigns to apply at once, set the Order values deliberately so the discount sequence is predictable.
