Skip to content

Prize Configuration

Lucky-draw games (Spin the Wheel, Gachapon, Grid Box, Scratch Card, Card Pull, and Claw Machine) use a prize configuration system. This guide explains how to set up, manage, and monitor prizes.

Each prize slot must be one of six types:

TypeWhat the player getsFulfillment
Voucher SetA unique code pulled from a managed setAutomatic (tracked)
VoucherA fixed code string (e.g., “SAVE20”)Shown directly to player
ItemA named physical/digital prizeManual (you fulfill)
External LinkA URL where the player redeems separatelyPlayer follows link
Custom VoucherA code issued by an external providerAutomatic via webhook (your system)
No Prize”Try again” — no reward givenN/A

Prize configuration

  • Voucher Set — Best for campaigns with many unique codes (one per winner). Codes are auto-assigned from your inventory and tracked.
  • Voucher — Use for a single shared code that all winners see (e.g., a universal discount code).
  • Item — Physical merchandise, free products, or service upgrades that require manual fulfillment.
  • External Link — Drive traffic to a landing page, partner offer, or redemption portal.
  • Custom Voucher — Best when your codes live in another platform (e.g., an e-commerce store or loyalty system). DailyPlay requests a code from your provider at claim time via a webhook, so inventory stays in your own system.
  • No Prize — Essential for balancing probabilities. Without “try again” slots, every play results in a win.

The Custom Voucher type delegates fulfillment to an external provider. Instead of pulling a code from a DailyPlay voucher set, the player’s claim triggers a webhook to your provider, which returns the real code. Use this when your codes are managed outside DailyPlay.

There are two layers behind this prize type:

LayerWhat it is
ProviderA template that defines what fields the provider needs and how its webhook is shaped (e.g., a store integration).
ConnectionYour organization’s live, credentialed instance of a provider — the actual webhook URL and credentials.

A provider is the definition; a connection is your configured hookup to it. An organization can have more than one connection to the same provider (for example, separate “Staging” and “Production” stores).

In the prize Type selector, each active voucher webhook connection appears as its own button alongside the standard types. Selecting one:

  • Binds the prize to that connection and its provider
  • Auto-fills the prize name with the connection name (if the name is still blank)
  • Reveals the Voucher fulfillment panel for provider settings and quantity

If your organization has multiple connections, each is shown as a separate button so you can pick exactly which one fulfills the prize.

Some providers require extra configuration per prize — for example, a discount or cart-rule identifier. These fields render automatically under Provider settings when you select the connection. Each field may be:

  • A text, number, or yes/no value
  • Marked required (the prize won’t save until it’s filled)
  • Constrained by minimum/maximum values, length, or format (e.g., email)

DailyPlay validates these fields both in the editor and again server-side before saving, and re-checks that your organization still has access to the provider.

Custom Voucher prizes support the same inventory tracking as other limited prizes:

FieldDescription
TotalMaximum number of times this prize can be won. Leave empty for unlimited (max 1,000,000).
RemainingRead-only. Shows remaining / total. For a new prize it mirrors the total; after saving it reflects live wins.

When a Custom Voucher prize reaches 0 remaining, it’s excluded from future draws, and probability redistributes among the remaining eligible prizes — exactly like other prize types.

  1. The player wins the Custom Voucher prize and claims it
  2. DailyPlay sends a webhook to the connected provider, including the prize’s provider settings and player context
  3. The provider responds with the actual voucher code
  4. The code is returned to the player

When creating or editing a lucky-draw game, you reach the Prizes step in the editor. Each prize is a “slot” you add and configure. The core flow for a single slot is:

  1. Click Add Prize Slot — a new slot card appears
  2. Enter a Name — the display name players see (e.g., “10% Off”)
  3. Choose a Type — pick one of the prize types (Voucher Set, Voucher, Item, External Link, Custom Voucher, or No Prize)
  4. Set the Win Chance (%) — the slot’s probability in the draw
  5. Repeat for each prize, then make sure all chances total 100%

Type-specific fields (voucher set, external URL, provider settings, etc.) appear automatically once you pick the matching type.

Example: How to set up a voucher code prize in the game:

Example: How to set up an item prize in the game:

FieldDescriptionRequired
NameDisplay name shown to the player (max 50 chars)Yes
DescriptionAdditional details (max 200 chars)No
TypeOne of the 6 prize types aboveYes
Win Chance (%)Probability of winning this slot (1–100%)Yes
QuantityTotal available (leave empty for unlimited)No
Min ScoreMinimum score required to be eligibleNo
Voucher SetWhich set to pull codes from (voucher set type only)Conditional
External URLRedemption link (external link type only)Conditional
ImageCustom prize image (max 10 MB, resized to 256×256)No

The order you arrange prizes in the editor directly controls how they appear in the game (e.g., wheel segments, grid cells). Use the Move Up/Down buttons to arrange them. Display order does not affect win probability — only the chance percentage matters for odds.


All prize chances across a game must total 100% or less.

  • Each slot must have a chance greater than 0%
  • The sum of all slots cannot exceed 100%
  • DailyPlay validates both in the editor and server-side before saving

When the total isn’t valid, the editor shows an inline warning and blocks you from continuing until it’s fixed.

SlotPrizeTypeChanceQuantity
1$50 Gift CardVoucher Set5%10
220% OffVoucher Set10%50
310% OffVoucher15%Unlimited
4Try AgainNo Prize20%Unlimited
5Free ShippingVoucher10%Unlimited
6Try AgainNo Prize15%Unlimited
7Visit Our BlogExternal Link15%Unlimited
8Try AgainNo Prize10%Unlimited
Total100%
CapsulePrizeTypeChanceQuantity
Gold$50 VoucherVoucher Set2%10
Silver$20 VoucherVoucher Set8%50
Bronze$10 VoucherVoucher Set20%100
Blue10% OffVoucher30%Unlimited
Green5% OffVoucher25%Unlimited
GrayTry AgainNo Prize15%Unlimited

For games that combine skill with luck, you can set a minimum score per prize slot. Players must achieve at least that score before the prize becomes eligible in the draw.

How it works:

  1. Player finishes the game with a score
  2. Server filters prizes — only those where min_score ≤ player's score are included
  3. Weighted random draw occurs among eligible prizes only

Example:

PrizeChanceMin Score
Grand Prize5%1000
Runner Up15%500
Consolation30%0
Try Again50%0

A player scoring 750 is eligible for Runner Up, Consolation, and Try Again — but not Grand Prize.

Minimum score configuration

For games that support minimum scores, a Highest Tier Only toggle appears at the top of the prize editor. When enabled, a player draws only from the highest score tier they qualify for, instead of from every eligible tier combined.

  • Off (default): All prizes with min_score ≤ player's score are pooled together for the draw.
  • On: Only the prizes in the single highest tier the player unlocked are eligible — lower tiers are excluded.

Use this when you want top performers to compete only for the best rewards, rather than diluting their odds with consolation prizes.

Highest Tier Only toggle


Set a total quantity for high-value prizes:

  • The remaining_quantity decrements each time the prize is won
  • When it reaches 0, the prize is excluded from future draws
  • Remaining prizes’ probabilities auto-adjust proportionally

Leave quantity empty for prizes you can always fulfill:

  • Digital codes, voucher sets with large inventories, external links
  • No inventory tracking needed
  1. The depleted prize is skipped during the draw
  2. The system redistributes probability among remaining eligible prizes
  3. If all prizes are depleted, the game returns no prize

Each prize has an is_active flag:

  • Active — Included in draws, shown with a green badge in the dashboard
  • Inactive — Excluded from draws, shown with a gray badge

Use this to temporarily disable a prize without deleting it (e.g., pause a promotion, swap prizes mid-campaign).


DailyPlay uses a server-side cryptographic draw — prize selection cannot be manipulated from the frontend:

  1. Game calls the draw endpoint with the game ID
  2. Server fetches all active, eligible prizes (with inventory and score checks)
  3. Weighted random selection picks a winner based on chance percentages
  4. A signed token (HMAC-SHA256) is generated containing the result
  5. Token is valid for 30 minutes
  6. When the player claims, the server verifies the token signature before awarding
Prize TypeWhat happens on claim
Voucher SetNext available code assigned, voucher marked claimed
VoucherFixed code string returned to player
ItemPrize name displayed, player fills claim form
External LinkURL returned, player redirected to external redemption
Custom VoucherWebhook sent to your provider, returned code shown to player
No Prize”Try again” message shown

Every prize claim triggers outbound integrations if configured:

  • Zapier, Braze, Mailchimp, HubSpot, Salesforce, Segment, or custom webhooks
  • Event payload includes: game ID, player UUID, score, prize name, prize type, voucher code

Learn more in Connections.


Access from Organization → Prizes to monitor all prize activity.

MetricDescription
Total PrizesAll configured prize slots
Active PrizesSlots currently eligible for draws
Total WinsPrizes awarded all-time
Wins TodayPrizes awarded in the last 24 hours
Vouchers AwardedVoucher codes distributed

Each game shows:

  • Number of prize slots configured
  • Total chance percentage (green if 100%, red if over)
  • Collapsible table with all prizes: name, type, chance %, quantity remaining, active status
  • Quick edit link to the game editor

Recommended distribution for player engagement:

TierChance RangePurpose
High-value2–10%Creates excitement and aspiration
Medium15–30%Keeps players feeling rewarded
Low-value25–40%Frequent small wins
No prize20–40%Creates anticipation for retry
  • Upload custom images for each prize — players see them in the game UI
  • High-value prizes with compelling images drive more engagement
  • Images are resized to 256×256px automatically
  1. Play the game multiple times in preview mode
  2. Verify all prize types display correctly (codes, links, names)
  3. Check that voucher set prizes actually deliver a code
  4. Confirm quantities decrement properly
  5. Test with scores below and above min_score thresholds (if used)

  1. Check that the linked voucher set still has available codes
  2. Verify the set hasn’t expired
  3. The prize may have hit its quantity limit — check remaining inventory
  • Verify totals equal 100% in the editor
  • Small sample sizes will naturally appear skewed — test with 50+ plays
  • If some prizes are depleted, remaining prizes effectively have higher chances
  1. Confirm the prize is active (not inactive/disabled)
  2. Check that remaining_quantity isn’t 0
  3. Ensure the game is published (not in draft mode)
  4. If using min_score, verify the player’s score meets the threshold

The draw token is valid for 30 minutes. If a player waits too long between seeing the result and claiming, the token expires. This is rare in normal gameplay.