Operator guideEN

Challenges / Auto Configs

Configuration surface for recurring challenge generation, schedule rules, prize templates, and immediate generate-now runs.

How to use this guide

Start with the main guide

Follow the explanation and examples first. Extra definitions and formulas are available below when you need them.

What this surface does

This surface manages reusable rules that create challenge records automatically.

Use it when the same challenge pattern should be generated repeatedly, or when a marketing/operator team wants to trigger a configured challenge batch manually through Generate now instead of building each challenge by hand.

What it controls

  • Configuration identity: name, optional description, and Active / Inactive state.
  • Game targeting: optional game sub-categories used when the rule picks a game for each generated challenge.
  • Goal range: random multiplier range and EUR minimum-bet range.
  • Prize setup: either a random cash amount in EUR or one coupon code selected from the configured coupon list.
  • Creator attribution: optional creator user, display name, and image shown on generated challenges.
  • Visibility rules: include and exclude tags copied to generated challenges.
  • Run cadence: hourly, daily, or weekly schedule type, plus maximum challenges per run.
  • Manual execution: Generate now starts generation immediately for the selected active configuration.

How to read the table

  • Configuration Name shows the saved name and optional description.
  • Status shows whether automatic/manual generation is allowed for the rule.
  • Prize Type shows whether generated challenges use a cash prize or coupon prize.
  • Schedule shows the selected cadence label.
  • Max/Run is the maximum number of challenges one run may create.
  • Last Run shows when this configuration last produced or attempted to produce challenges; empty history appears as Never.
  • Actions let operators run, edit, or delete one configuration.

Create and edit flow

The create/edit dialog is a five-step wizard:

  1. Game Selection selects game sub-categories.
  2. Challenge Goal sets name, description, active flag, multiplier range, and minimum bet range.
  3. Prize Configuration switches between cash-prize and coupon-code setup.
  4. Creator Attribution optionally selects or overrides the creator shown on generated challenges.
  5. Final Settings sets include/exclude tags, schedule type, and max challenges per run.

The preview panel summarizes the rule while the operator fills the wizard. It is only a preview of the saved configuration, not a guarantee that a future run will pick a specific game, multiplier, minimum bet, or prize amount.

Common caveats

  • Editing a config changes future generated challenges, not challenges that already exist.
  • Generate now is immediate and creates challenge records right away when the selected configuration is active.
  • Inactive configurations cannot be manually run from the table and are skipped by scheduled generation.
  • Cash prize ranges and minimum bet ranges are configured in EUR. Generated minimum-bet values are expanded to active currencies during generation.
  • Coupon setup accepts a comma-separated list of coupon codes and picks one code for each generated challenge.
  • The form has a stored title-template field in the configuration model, but the current dialog does not expose a dedicated title-template input. Generated challenge titles currently come from the selected game when a game is found.
  • The multi-language coupon description is saved with the configuration, but generated coupon challenges currently use the standard free-spins coupon reward description. Treat the coupon-description editor as stored configuration text until this behavior is aligned.
  • Advanced schedule details such as specific time or weekday are not currently exposed in the dialog; only the schedule type is visible.
More details

Definitions and formulas

Open only the section you need. The relevant section opens automatically when you request help for a specific item on screen.

Calculations16 topicsOpen details

List Pagination, Filtering, And Sorting

Logic
The frontend hook defaults to page `1` and limit `50` when no explicit options are passed., The frontend hook can send optional `isActive` when a caller provides it, but the current page does not render a visible active/inactive filter., The backend clamps page to at least `1` and limit to `1..200`., The backend sorts rows by `createdAt DESC`., The current table starts with a page size of `10` and offers `5`, `10`, and `25` as client-side grid page sizes over the returned rows.

Form Step Validation

Logic
Step `Game Selection` is always considered valid., Step `Challenge Goal` blocks forward navigation when name/range validation fails., Step `Prize Configuration` is valid for cash prize when cash range validation passes., Step `Prize Configuration` requires Coupon Code Template when Prize Type is Coupon Code., Steps `Creator Attribution` and `Final Settings` are always considered valid by the step-validity helper.

Range Validation

Logic
Multiplier From greater than Multiplier To is invalid., Min Bet From greater than Min Bet To is invalid., Cash Prize From greater than Cash Prize To is invalid when Prize Type is Cash Prize., Numeric fields are still sent as form values; final persistence depends on backend model/controller handling.

Create Defaults

Logic
FE create defaults include active state, cash prize type, hourly schedule type, and max challenges per run of `1`., Backend create defaults omitted description, ranges, creator fields, run timestamps, and coupon fields to null., Backend create defaults omitted game categories and visibility tag arrays to empty arrays., Backend create defaults omitted title template to `Hit x{multiplier} with min bet {minBet}`.

Update Defined Fields Only

Logic
Update loads the existing row by id before applying changes., The controller builds an update payload without create defaults., Only keys whose payload value is not `undefined` are set on the existing row., The current FE edit form submits all visible form values, but hidden fields such as titleTemplate and scheduleConfig are only changed if present in form state.

Generate Now Active Filter

Logic
The row-level Generate Now button is disabled in the UI when the row is inactive., A direct generate-now request for an inactive id matches no active configuration and therefore creates zero challenge rows., Successful generation returns a count and updates last/next run timestamps for configurations that were processed.

Max Challenges Per Run

Logic
Generation converts the stored value with `Number(cfg.maxChallengesPerRun || 1)`., Generation enforces a minimum run count of `1`., One challenge row is attempted for each iteration up to the computed run count., The UI input hints a range from `1` to `569`, but the backend service only enforces the minimum in the verified source.

Multiplier Generation

Logic
Generated multiplier is randomly picked between Multiplier From and Multiplier To., If one bound is missing, the present bound is used as both lower and upper bound., The service requests zero decimals for multiplier generation, so the generated multiplier is rounded to an integer., Invalid or missing bounds can produce null multiplier values.

Minimum Bet Generation And Currency Expansion

Logic
Generated minimum bet starts from a random EUR value between Min Bet From and Min Bet To., If one bound is missing, the present bound is used as both lower and upper bound., The service rounds the EUR minimum bet to step `0.1` even though the inline source comment mentions `0.5`., For every active currency, the generated EUR amount is multiplied by that currency's `marketingRatio`., Missing, invalid, or non-positive marketing ratio falls back to `1`., EUR is added explicitly when it was not present in the active currency list.

Cash Prize Generation

Logic
Prize `amountEUR` is randomly picked between Cash Prize From and Cash Prize To with two decimals., Prize `calendarDays` is stored as string `1`., Cash prize values are EUR-based in the verified generator source.

Coupon Prize Generation

Logic
Coupon Code Template is split by comma; tab characters are removed and blank codes are ignored., One coupon code is randomly selected from the cleaned list for each generated challenge., If the selected coupon matches a bonus row, `freeSpinsCount` replaces `%amount%` in the standard localized description., Bonus lookup failure is non-fatal; the standard localized description remains.
Caveats
The saved `couponDescription` field is not used by the verified generation service when building the prize description.

Game Selection

Logic
The generator reads `gameCategories.subCategoryIds` as positive numeric sub-category IDs., It searches valid game-to-subcategory rows whose linked games are active and operator-enabled., It de-duplicates matching game ids and randomly picks one id., If no valid game is found, `gameId` remains null., Game-selection lookup errors are ignored so generation can continue with no game id.

Generated Challenge Payload

Logic
Generated prize array contains one generated money or bonus prize., Generated tags copy `tagsInclude` and `tagsExclude` from the configuration., Generated creator fields come from the configuration, with user-record fallback for name/image when a creator user id exists., Missing creator name falls back to `System`.

Title Template Caveat

Logic
The configuration model and controller store `titleTemplate`., The generation service contains a helper that can replace `{multiplier}` and `{minBet}` placeholders., The verified payload currently sets challenge title from the selected game name instead of calling the title-template helper.
Caveats
Treat titleTemplate as stored configuration data until product behavior is aligned with this field.

Schedule Next Run Calculation

Logic
Hourly schedule uses `scheduleConfig.atMinute` or `0`; if that minute has passed in the current hour, next run moves to the next hour., Daily schedule uses `scheduleConfig.atHour` and `scheduleConfig.atMinute`, defaulting both to `0`; if that time has passed today, next run moves to tomorrow., Weekly schedule uses `scheduleConfig.daysOfWeek`, defaulting to Monday, plus hour/minute defaults., Weekly schedule assumes stored weekdays are `1..7` with `1` as Monday., Unknown schedule types fall back to the next hour.
Caveats
The current dialog exposes only schedule type and does not expose specific minute, hour, or weekday controls.

Delete Behaviour

Logic
Row delete first shows a browser confirmation prompt., When confirmed, backend destroys the selected configuration row by id., Generated challenge rows are separate records and are not deleted by deleting the configuration.
More help

Related pages

Activity Tag Rules

Operator documentation for activity-driven tag automation rules, including list, create, edit, detail inspection, and recent application history.

Automatic Withdrawal Overview

Operator guide for automatic-withdrawal rules, the create and edit flow, and the management workspace that also exposes withdrawal history and non-qualified withdrawals.

Challenges

Operator documentation for challenge catalog management, challenge editing, winner handling, permission rules, and automatic generation configs.

Challenges / Create And Edit

Create and edit flow for challenge title, game, multiplier goal, currency thresholds, prize setup, creator identity, and lifecycle flags.

Challenges / Detail

Operator detail surface for one challenge record, including edit sections, duplicate flow, and original challenge metadata.

Challenges / List

Main challenge catalog with status tabs, source and enabled filters, active toggle, row actions, and winner lookup.