# Rewards Overview

DailyPlay includes a built-in reward system that lets you incentivize players with prizes, voucher
codes, and external offers — all managed from your dashboard with automatic distribution and
real-time tracking.

## Prize Types

DailyPlay supports five distinct prize types you can mix and match:

| Type            | Description                                               | Fulfillment       |
| --------------- | --------------------------------------------------------- | ----------------- |
| **Voucher Set** | Codes from a managed set (tracked, auto-distributed)      | Automatic         |
| **Voucher**     | A single text-based code (e.g., "SAVE20")                 | Shown to player   |
| **Item**        | Physical or digital prize (e.g., '32" TV')                | Manual            |
| **External Link** | URL where the player can redeem their prize            | Player follows link |
| **No Prize**    | "Try again" slot — essential for probability balancing     | N/A               |

:::tip[Voucher Set vs Voucher]
Use **Voucher Set** when you have many unique codes to distribute (one per winner). Use **Voucher** for a single shared code everyone sees.
:::

---

## Games with Prize Support

Six game templates have a built-in prize system:

| Game             | Mechanic                                  |
| ---------------- | ----------------------------------------- |
| Spin the Wheel   | Wheel spin with prize segments            |
| Gachapon         | Shake-to-draw from a ball container       |
| Grid Box Reveal  | Tap a grid cell to reveal a prize         |
| Scratch Card     | Scratch-off to reveal what's underneath   |
| Card Pull        | Open a card pack to reveal a prize        |
| Claw Machine     | Control a claw to grab a prize ball       |

All six use the same prize configuration interface and share the same secure draw system.

---

## How Prize Draws Work

DailyPlay uses a **server-side cryptographic draw** to ensure fairness and prevent manipulation:

1. **Player completes the game** (spin, scratch, tap, etc.)
2. **Server selects a prize** using weighted probability — factoring in remaining inventory and optional minimum score requirements
3. **A signed draw token** is generated (HMAC-SHA256) with a 30-minute expiration
4. **The game reveals the result** and the player claims their prize
5. **Server validates the token**, allocates a voucher code (if applicable), and records the win

:::caution[Tamper-proof]
Prize selection happens entirely server-side. The draw token is cryptographically signed — frontend manipulation cannot change the outcome.
:::

---

## Minimum Score Requirements

For prize games that also involve skill, you can set a **minimum score** per prize slot. Players must reach the required score before they become eligible for that prize during the draw.

**Example:** A Spin the Wheel game where players must score 500+ in a mini-game before they can win the grand prize.

---

## Setting Up Rewards

### Step 1: Create Voucher Sets

1. Go to **Vouchers** in the organization menu
2. Create a new set with a name and optional expiry date
3. Add codes by uploading CSV, pasting manually, or auto-generating

### Step 2: Configure Game Prizes

When creating or editing a lucky-draw game:

1. Open the **Prizes** section
2. Add prize slots and choose a type for each
3. Set win probability (all slots must total ≤ 100%)
4. Set total and daily quantity limits, and link voucher sets where needed
5. Optionally set minimum score thresholds

### Step 3: Monitor Distribution

From the **Prizes** dashboard:

- View wins per game with a collapsible breakdown
- Track claimed vs. available voucher inventory
- See daily win counts and total stats

---

## Automatic Distribution

When a player wins a prize linked to a voucher set:

1. A unique code is assigned from the set instantly
2. The player sees their code on the result screen
3. The voucher is marked as `claimed` in your inventory
4. Connection integrations fire (Zapier, Mailchimp, HubSpot, etc.)

No manual steps required — the entire flow is handled automatically.

---

## Connection Integrations

Prize wins can trigger outbound events to your marketing and CRM tools:

- Zapier, Braze, Mailchimp, HubSpot, Salesforce, Segment
- Custom webhooks

Each event includes the game ID, player info, prize name, prize type, voucher code (if any), and score — so you can build automated follow-up workflows.

Learn more in [Connections](/connections/overview).

---

## Analytics

Track reward performance from the Prizes dashboard:

| Metric              | Description                        |
| ------------------- | ---------------------------------- |
| Total Prizes        | All configured prize slots         |
| Active Prizes       | Currently active and distributable |
| Total Wins          | Prizes awarded all-time            |
| Wins Today          | Prizes awarded in the last 24h     |
| Vouchers Awarded    | Codes distributed from sets        |
| Inventory Remaining | Available codes per set            |

---

## Best Practices

:::tip[Variety]
Mix high-value rare prizes with common lower-value rewards to keep players coming back.
:::

:::tip[Probability Balance]
Aim for at least a 30–50% overall win rate. If "no prize" dominates, players lose interest quickly.
:::

:::tip[Inventory Planning]
Monitor your voucher set inventory. When codes run out, the prize slot becomes inactive — so plan ahead for high-traffic campaigns.
:::

:::tip[External Links]
Use **External Link** prizes to drive traffic to landing pages, sign-up forms, or partner offers without needing voucher codes.
:::

---

## Next Steps

- [Set up Voucher Sets →](/rewards/vouchers)
- [Configure Prize Slots →](/rewards/prizes)