---
title: "Reveals"
slug: "reveals"
updated: 2026-06-11T11:03:45Z
published: 2026-06-11T11:03:45Z
canonical: "docs.xtremepush.com/reveals"
---

> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xtremepush.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Reveals

An overview of the Reveals game and the game campaign setup process.

## Game Overview[](/docs/reveals#game-overview)

Reveals is an outcome-based game where players receive a pack of cards at the start of a game or round. Each card contains a possible outcome for a real-world sporting event.

Cards are revealed on a schedule you configure, typically one or more per day. As the real-world events progress, each card is automatically updated via the Xtremepush sports feed with a tick or a cross to indicate whether the outcome was correct.

![](https://cdn.document360.io/b056e88b-f6c1-4bd2-b5b8-08e9336a17c9/Images/Documentation/3a1c2e75856d88490401a215e9ecd4ef5eff17497fe853a1405620d5f9d9bb48-Screenshot_2026-05-14_at_15.27.04.png)

Example front-end of a Reveals game showing the pack opening, revealed cards, and end-of-round results.

Prizes are awarded based on the number of correct matches a player achieves. You configure how many correct matches are required to win each prize. Prizes and the outcome cards players receive can also vary by user segment, allowing you to tailor the game experience for different groups of players.

A game can be structured into one or more rounds, each with its own set of outcome cards, reveal schedule, and prizes. This allows you to run short games or longer campaigns spanning several weeks, with prizes awarded at the end of each round.

## Prerequisites[](/docs/reveals#prerequisites)

- Send a *Figma* file of your designs to your account manager at Xtremepush. We will use this to create an asset pack for you to upload, which includes all the required images and a layout file. This asset pack forms the front-end of your game.
- User Segments: To target your game to specific players, you'll need pre-configured segments. These must be created on the Xtremepush platform before you start. For more information, see [Before You Create a Game Campaign](/documentation/docs/before-you-create-a-game-campaign).

## Setup Process

### Campaign Setup

Define game campaign details and import outcomes.

✏️

📝

### Round and Segment Configuration

Configure rounds and odds for user segments.

### Customise Design

Upload assets and update texts.

🎨

⚙️

### Configure Prizes

Configure Prizes and their associated user segments.

### Launch & Monitor

Embed your game and view player analytics.

🚀

## [](/docs/reveals#setup-process)

## Campaign Setup[](/docs/reveals#campaign-setup)

### Basic Setup[](/docs/reveals#basic-setup)

In the **Basic Setup** tab, you must provide the following details of your game:

- **Name**: Give your campaign a unique and descriptive name. This name will be included in your game’s custom URL which you will embed on your website.
- **Time zone**: Select the timezone of your target audience.
- **Start date and End date**: Define the period during which your game campaign is active.
  - **Start date**: When the game becomes accessible to players.

Before this point any player who opens the game will see a *Campaign not started* message. You can change this text in the **Content and Assets** tab.
  - **End date**: When the game campaign closes entirely.

Players visiting after this point will see a *Campaign ended* message. You can change this text in the **Content and Assets** tab.
- **Allow Duplicated Events**: Enable this toggle to allow multiple outcomes from the same event to appear across the cards in a pack.

> [!TIP]
> When to use Allow Duplicated Events
> 
> An event refers to a specific real-world sporting fixture, for example, a single football match or basketball game. An outcome is a possible result of that event, for example, *Team A to win* or *Both Teams to Score*.
> 
> Use this toggle when the number of reveals in your game exceeds the number of unique events available. For example, if you have 3 events and 6 reveals per round, enabling this toggle allows more than one outcome from the same event to appear across the cards.
> 
> If this toggle is not enabled, only one outcome per event is displayed.
> 
> You can configure the number of outcomes later in the **Outcomes** section of the **Setup** tab and the number of tiles revealed in the **Configure Rounds** section of the **Configuration** tab.

- **Has Rounds**: Enable this toggle if your campaign contains multiple rounds. When enabled, the **Closes At** field is no longer displayed as closing times are configured per round instead.
- **Exclude Segment**: If required, select a segment that you want to exclude from participating in the game such as bonus abusers. Users in this segment won't be able to access the game.
- **Default Segment**: Set a default segment to ensure any user who doesn’t match your pre-defined segments can still play the game and receive a prize.

> [!NOTE]
> Default Segment
> 
> [](/docs/reveals#default-segment)
> 
> In the **Default Segment** field, select one of your previously created user segments. Any participant who does not belong to another segment in your campaign will be treated as part of this default group. They will receive the prize that you configure for this segment.
> 
> For example, if you have two user segments *VIP* and *New User* and you intend to give the *New User* segment the lowest-value prize. Then, if you choose *New User* as the default segment, then any player not in *VIP* and *New User* segments can:
> 
> - Participate in the game
> - Be awarded the same lowest-value prize as the *New User* segment

### Outcomes[](/docs/reveals#outcomes)

In the **Outcomes** tab, you select all the possible outcomes that will populate the cards in your game. An outcome is a possible result of a real-world sporting event and is displayed as a card in your players' pack.

These outcomes are imported from the Xtremepush sports feed. When you import outcomes, you must specify their associated **Sport** ,**Event**, and **Market**. The following is an example import for a *Premier League* football game:

- **Sport**: *Football*
- **Event**: *Sunderland vs Nottingham Forest*
- **Market**: *Both Teams To Score And Totals 2.5 (4-way), Ordinary Time*
- **Outcomes**: *Both Teams Not To Score And Over 2.5*, *Both Teams Not To Score And Under 2.5*, *Both Teams To Score And Over 2.5*, *Both Teams To Score And Under 2.5*

> [!TIP]
> Selecting Markets
> 
> [](/docs/reveals#selecting-markets)
> 
> A market refers to a specific type of betting or prediction option within an event, for example, *Match Winner*, *Total Goals*, or *First Scorer*. When importing outcomes, selecting specific markets ensures only relevant outcomes are added to your game.

> [!NOTE]
> How Outcomes are Assigned to Rounds[](/docs/reveals#how-outcomes-are-assigned-to-rounds)
> 
> All outcomes are imported at the campaign level. When you configure rounds, the outcomes displayed in each round are automatically determined by the round's start and end dates, which you configure in the **Configuration** tab.
> 
> 
> 
> Outcomes from events falling within a round's date range will appear in that round. Only outcomes with a *can happen* status are displayed.

To import outcomes, do the following:

1. In the top-right of the **Outcomes** section, click **Import Outcomes**.
2. Select the **Sport**.
3. Select the **Event**. You may need to type part of the event name for results to populate.

> [!TIP]
> Available Events
> 
> [](/docs/reveals#available-events)
> 
> Events available for import are based on your campaign's start and end dates. For example, if your campaign starts today and ends next week, you will not see events scheduled for several weeks in the future.
4. Specify **Included Markets** or **Excluded Markets** to control which outcomes are imported. It is recommended to select only the specific markets you need under **Included Markets**. This is because importing without filtering for markets will pull in all available outcomes from the Xtremepush feed.

After you import outcomes, the associated **Markets**, **Participants**, and **Events** are displayed in their respective tabs within the **Setup** tab. From these tabs, you can review and manage the imported data, including customising display names for markets, participants, and events.

> [!NOTE]
> Example Outcome Imports
> 
> [](/docs/reveals#example-outcome-imports)
> 
> - Single-round NBA weekly campaign
> 
> If you are running a one-week game campaign around an NBA game week, you would import outcomes from basketball events taking place that week. For example, *Detroit Pistons vs Orlando Magic* and *Los Angeles Lakers vs Houston Rockets*
> - Multi-round football campaign over two weeks
> 
> If your campaign has two rounds, each covering a week of football fixtures, you import all outcomes for both weeks in one go. The platform then automatically assigns outcomes to the correct round based on when each event takes place. Outcomes from Week 1 fixtures will appear in Round 1, and outcomes from Week 2 fixtures will appear in Round 2.

## Round and Segment Configuration[](/docs/reveals#round-and-segment-configuration)

In the **Configuration** tab, you configure the rounds for your game and assign the user segments that are eligible to participate in. the game. You can also configure an odds range per segment, which controls which outcome cards players in that segment will receive.

### Configure Rounds

> [!NOTE]
> Games without Rounds
> 
> [](/docs/reveals#games-without-rounds)
> 
> If you haven't enabled the **Has Rounds** toggle in the **Basic Setup** section, your campaign still contains a single default round. This is not a round in the traditional sense, it is the container that holds your game's start and end dates.
> 
> Within this default round, you configure the total number of cards revealed to players and the frequency at which they are revealed across the game campaign.

To configure a round, click **Create Round** in the **Rounds** tab and provide the following:

- **Name**: Enter an internal name for the round. The text displayed to players is configured separately in the **Layout References** below.
- **Starts At**: The date and time the round begins. This is when players receive their first card.
- **Closes At**: This date must be the same as the round **End Date** but with an earlier timestamp.

By default, cards are revealed daily after the time specified in your round's **Start Date**. For example, if your round starts on May 19 at `14:00`, a card is revealed every day after `14:00` until the **End Date**.

The **Closes At** field allows you to set a different time for when the card is revealed on the final day. For example, if your **Closes At** time is set to `10:00`, the last card is revealed at `10:00` on the final day instead of the usual `14:00`.
- **Ends At**: The date and time when the round is processed and prizes are distributed. No further cards are revealed after this date.

> [!TIP]
> For your final round, ensure there is a gap between the final round's **Ends At** date and the campaign **Ends At** date.
- **Daily Reveals**: This section determines the total number of cards revealed to your players during the round and how frequently they are revealed. For each day of the round, you specify how many cards are revealed on that day. You must configure at least one reveal per day.

> [!TIP]
> This field is displayed after you select a round **End Date**. A **Reveals** field is then displayed for each day from the round start date to the round end date.
- **Layout References**: The text fields displayed to players for this round in the game's front end. For example, *Round 1* or *Round 2*.

> [!TIP]
> Rounds must be sequential
> 
> [](/docs/reveals#rounds-must-be-sequential)
> 
> Rounds must follow a sequential, non-overlapping order. A new round must begin after the previous round has ended.

> [!NOTE]
> Example Round Configurations
> 
> [](/docs/reveals#example-round-configurations)
> 
> - Weekly game (without rounds): A one-week campaign around a single NBA game week would typically use only the default round. The campaign start and end dates cover the full week, and daily reveals display one outcome card per day across the week.
> - Month Long football game: For a campaign spanning a month of football matches, you might configure four weekly rounds, one per week. Each round covers a set of weekend fixtures. Because all outcomes were imported at the campaign level, the platform automatically assigns the relevant fixtures to each round based on the round dates. Prizes are awarded at the end of each round based on correct matches.

### Specify User Segments[](/docs/reveals#specify-user-segments)

In the **Segments** tab, you assign user segments eligible to play the game and you can configure the odds range applicable to each segment.

To add a segment, click **Create Segment** and select the desired segment. For each segment, you can configure an **Odds Min** and **Odds Max** value. These values determine the type of outcome or card the user segment will receive.

Each imported outcome has an associated odds value. Higher odds indicate a less likely outcome, while lower odds indicate a more likely outcome. So, if you provide **Odds Min** value of `1.0` and an **Odds Max** value of `2.5`, the user segment will receive the cards/outcomes within the `1.0` - `2.5` odds range.

You can configure the odds range for each individual card reveal within a game. For example, if you have two rounds with eight reveals each, you would configure odds for 16 outcomes in total for that segment. Each outcome is added sequentially, so Outcome 1 corresponds to the first reveal, Outcome 2 to the second, and so on.

This allows you to control the likelihood of a user segment getting correct matches, which in turn increases their likelihood of winning a prize.

## Assets and Content[](/docs/reveals#assets-and-content)

### Upload Assets[](/docs/reveals#upload-assets)

In the **Configure Assets** tab, you upload the asset pack which forms the front end of your game.

Upload the asset pack provided to you by Xtremepush. This file contains the game's images and a *.pkg* layout file that sets the overall game appearance. If required, you can replace any of the image assets provided to you. For more information on replacing assets, [Replace Assets](/documentation/docs/replace-assets).

The assets section is divided into two tabs:

- **Assets**: This tab contains the main game assets that form your game's front-end. You must upload your asset pack in this section.
- **Participant**: When you import outcomes, the logos of the team/participants for the selected events is populated in this tab. When you replace these team logo assets, ensure that the file name of each uploaded asset matches the file name of the existing logo.

### Configure Game Text[](/docs/reveals#configure-game-text)

In the **Configure Texts** tab, you manage the text content displayed to players. This section is split into two parts:

- Standard Texts
- Layout-Specific Texts (Layout References)

Standard Text: The **Texts** section contains the scenario-specific message displayed to users, such as **Please Log in** and **Player not Eligible**. The table below details the specific conditions that trigger each message:

| Message | Trigger Condition |
| --- | --- |
| Please login | Player trying to access the game is not logged in to their account or JWT token has expired |
| Player not eligible | The player is not in the specified user segment for the game OR The player is in the game’s excluded user segment |
| Insufficient outcomes | An insufficient number of options have been configured for the games |
| Campaign not available | The player attempts to access the game campaign outside of its active time slot. OR The player attempts to access the game too many times in a short period (potential hack attempt) OR The player attempts to access a question that’s not live anymore or is invalid |
| Campaign ended | The campaign’s scheduled end date has passed |
| Campaign not started | The campaign’s scheduled start date is in the future |
| Missing Parameters | The player's authentication token (JWT) is missing or invalid |
| Prize not found | The player does not belong to a user segment eligible to win prizes. |
| Game Expired | The game is no longer available as the campaign end date has passed |
| Invalid Game | A general error occurred. This issue can arise from various reasons. [Contact Xtremepush support](/documentation/docs/contact-us) to resolve the issue. |
| Already Claimed | The player has already claimed the prize. |
| Already played | The player has already submitted an answer for the question, and the result has been processed and revealed. |

## Configure Prizes[](/docs/reveals#configure-prizes)

Prizes in *Reveals* are awarded based on the number of correct outcome matches a player achieves within a round. When you configure a prize, you specify the minimum number of **Matches**, correct outcome cards, a player must achieve to win.

You can configure multiple prize tiers with different required matches thresholds, and prizes can vary across user segments. For example, a player who achieves three correct matches in a round might receive the following, depending on their segment:

- *10 free spins* for a New User segment
- *50 free spins* for a VIP segment

To configure a prize, go to the **Prizes** tab, click **Create Prize** and define the following:

- **Name**: Give the prize a unique and descriptive name.
- **Customer Segment**: Select the customer segments the prize is applicable to.
- **Round**: Select the round(s) the prize applies to.
- **Matches Required**: Specify the minimum number of correct matches required to win the prize.
- **Layout References**: User-facing text for the prize. The fields in this section vary depending on the layout file you have uploaded.

> [!WARNING]
> Disable a Prize[](/docs/reveals#disable-a-prize)
> 
> You can disable a prize by selecting the edit icon and turning on the **Disabled** toggle. Enable this toggle if you no longer want to issue a specific prize, even if a campaign is active.

> [!TIP]
> No-Win
> 
> [](/docs/reveals#no-win)
> 
> A no-win prize does not need to be configured for *Reveals*. If you want to display a specific message to players who do not reach the required number of matches, include it in your Figma mock-up. The text for this message is then configured under **Layout References** in the **Texts** tab.

> [!NOTE]
> Example Prize Configuration
> 
> [](/docs/reveals#example-prize-configuration)
> 
> The example below shows a prize configuration for a two-round campaign across two user segments:
> 
> | Round | Matches Required | Prize (New User and Regular User Segment) | Prize (VIP Segment) |
> | --- | --- | --- | --- |
> | Round 1 | 4 | 10 Free Spins | 15 Euro Free Bet |
> | Round 1 | 5 | 20 Free Spins | 30 Euro Free Bet |
> | Round 1 | 6 | 50 Free Spins | 50 Euro Free Bet |
> | Round 2 | 4 | 5 Euro Free Bet | 20€ Bonus |
> | Round 2 | 5 | 10 Euro Free Bet | 30€ Bonus |
> | Round 2 | 6 | 15 Euro Free Bet | 50€ Bonus |

## Launch and Monitor Game[](/docs/reveals#launch-and-monitor-game)

### Launch Game[](/docs/reveals#launch-game)

To launch your game, you must embed it on your website. For added security, you can also use a JWT token to ensure that only authenticated users are able to play.

> [!TIP]
> Go to **Back to All Campaigns**, then go to **Configuration** to configure the JWT Authentication settings.

For more information, see the following pages:

- [Launch your Game](/documentation/docs/launch-your-game)
- [JWT Authentication Details](/documentation/docs/jwt-authentication-details).

### Monitor Game[](/docs/reveals#monitor-game)

The Xtremepush platform automatically tracks the following engagement data for the *Reveals* game, which you can view in the **Games** tab of your campaign:

- **Customer ID**: The unique identifier of the player.
- **Prize**: The prize won by the player, if any. This column is empty if they player does not win any prize.
- **Round**: The specific round the player participated in.
- **Created At**: The timestamp for when the player first accessed the game or round.
- **Processed At**: The timestamp for when the round’s results were processed and prizes assigned.
- **Revealed At**: The timestamp for when the player's first outcome cards was revealed. To see when subsequent cards were revealed, click the view icon in the **Tools** column.
- **Tools**: To view detailed activity for a specific player, click the view icon in the **Tools** column. Tools: This displays a breakdown of the outcomes revealed to that player during the game, including whether each outcome was correct or incorrect.
