Schedule Boost Rules for Campaigns
Saved boost rules lift matching documents in every search that runs with
enableBoost: true, and they live on the dataset, so editors manage them in the web console's
Boost rules tab without touching code. Rules can carry a date window — the tool for
campaigns, seasonal promotion and new-release pushes.
A rule
{
"name": "Autumn crime campaign",
"enabled": true,
"strength": "High",
"join": "And",
"conditions": [
{ "field": "genre", "value": "crime" },
{ "field": "publishedYear", "min": 2025 }
],
"activeFrom": "2026-09-15",
"activeUntil": "2026-10-31"
}- conditions — on filterable fields:
{ field, value }for an exact value (strings, numbers, booleans) or{ field, min?, max? }for a numeric range.joinisAndorOr. - strength —
Low,MedorHigh. Rules stack: a document matching two rules is lifted by both. - activeFrom / activeUntil — optional dates (inclusive). Outside the window the rule is
ignored; leave both out for an always-on rule.
enabled: falseswitches a rule off without deleting it.
When a rule expires
A rule past its activeUntil stops applying the next day. Nothing is deleted, so it is easy to
miss — the tab makes it visible three ways: an Expired chip on the rule (and a signal-coloured
border), a summary line above the list ("3 of 5 rules applying today · 1 expired"), and a count
badge on the Boost rules tab button so it shows from any tab. Rules that have not started yet
show Starts <date>; switched-off rules show Off.
Editors and admins of the team also receive an in-app Boost rule expired notification the day after a rule ends (once per rule; mute or route it to email under Account → Manage → Notifications). Extend the dates, switch the rule off, or delete it.
Import and export
The Boost rules tab has Import from json and Export as json, using the same array format as the HTTP endpoints below. Import replaces the working list and leaves it unsaved, so you can review it and Save, or Cancel to revert. Rules that reference fields this dataset does not have are kept and stay dormant (flagged in the tab) until such a field appears — handy for copying a campaign set between datasets that share a schema.
Over HTTP
GET …/boosts → BoostRule[]
PUT …/boosts ← BoostRule[] (replaces the whole list; editor role)
DELETE …/boostsBoosts also apply to agent searches over MCP and to the web console's search preview, so what an editor sees is what the site serves.
Popularity and sales ranking
Indx records clicks and conversions when your front-end sends them (see
Statistics), but it does not rank on them by itself. To rank by popularity,
store a number on each document, for example the conversion counts from Statistics, ("popularity": 87) — updated as often as you like through the
real-time document endpoints — and boost on ranges of it:
{ "name": "Bestsellers", "strength": "Med", "conditions": [ { "field": "popularity", "min": 80 } ] }Per-user personalisation
For boosts that differ per request rather than per dataset, build an ad-hoc boost from a filter and pass it with the query — see Set Up Personalized Boosting.
What boosts do not do
There is no negative boost ("bury") and no pinned position: relevance stays the primary order
and a boost only lifts. High is the strongest lift available.