> For the complete documentation index, see [llms.txt](https://docs.candy-smith.com/main/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.candy-smith.com/main/match-3-kit-home-design/editors-and-settings/offer-system.md).

# Offer System

<figure><img src="/files/dpe2rDg5B1qUjxbgVDAJ" alt=""><figcaption></figcaption></figure>

The Offer System is used to display entry points to special offers and features directly on the main game screen.

Each Offer Icon acts as a button that gives the player access to a specific offer or feature. When the player taps an icon, the configured popup is opened.

For example, Offer Icons can be used for:

* Special Offers / Bundles — open a popup where the player can purchase a bundle containing coins, boosters, lives, or other rewards.
* No Ads — open an offer for removing advertisements.
* Lucky Spin — give the player access to the Lucky Spin feature.
* Timed Offers — display limited-time bundles or rewards with a countdown directly on the icon.
* Rewarded Offers — allow the player to receive configured rewards after watching a rewarded ad.

This makes the Offer System suitable not only for IAP bundles, but also for other promotional or reward-based features that need an entry point on the game screen.

<figure><img src="/files/XGyEpPs5hb0sNLfuBn3t" alt=""><figcaption></figcaption></figure>

### Setting Up Offer Icons

Offer Icons are configured in Offer Manager Settings.

1. Open Offer Manager Settings.
2. Find the Offer Icons list.
3. Click + to add a new icon.
4. Assign the required Icon ScriptableObject.
5. Select the icon Mode.
6. Click Edit to configure the selected Icon.

Each Icon ScriptableObject contains the visual settings, popup, bundle, price, Store ID, timer, and other settings associated with that offer. Offer Icons open OfferPopup instances. Support for arbitrary feature popups such as Lucky Spin requires a separate popup-opening flow.

### Offer Modes

Each Offer Icon can use one of the following modes:

#### Constant

Constant icons remain active while they are registered and available. They can still be removed after the offer is accepted or completed but not depend from time.

Use this mode for features or offers that should always be accessible, such as:

* No Ads
* Lucky Spin
* Permanent bundles or store shortcuts

#### Timed

Timed icons are intended for limited-time offers.

The icon can display a countdown showing how much time remains before the offer expires. This is useful for special bundles, temporary promotions, and recurring offers.

For example, a timed chest icon can show `00:34:02`, indicating how much time remains before the offer expires.

### Typical Flow

A typical bundle offer works as follows:

Offer Icon → Offer Popup → Bundle → Purchase/Reward

The player sees the Offer Icon on the main screen and taps it. The configured popup opens and displays the offer details, such as the included rewards, price, and remaining time.

After the player successfully purchases the offer—or completes the required rewarded ad—the configured bundle rewards are granted to the player.

### Adding a New Offer

To add a new offer:

1. Create or select an Icon ScriptableObject.
2. Add it to Offer Manager Settings → Offer Icons.
3. Choose Constant or Timed mode.
4. Click Edit and configure the Icon.
5. Assign the popup that should open when the player taps the icon.
6. Configure the bundle and purchase or rewarded-ad settings.

Once configured, the Offer Manager handles displaying the icon and providing access to the corresponding offer.

<figure><img src="/files/BHhs4SyULc3WP9DI2j3Q" alt=""><figcaption></figcaption></figure>

### Offer Manager Settings

Offer Manager Settings controls the offer icons available via **HomeDesignMatch3Kit->Editors->Offer editor** or CMD+K "Offer editor"

The Offer Icons list defines which offer buttons can be displayed to the player. Each entry contains an Icon configuration and a Mode that determines how that icon is displayed.

#### Adding an Offer Icon

To add an offer:

1. Open Offer Manager Settings.
2. In Offer Icons, click the + button.
3. Assign an Icon ScriptableObject.
4. Select the required Mode.
5. Click Edit to configure the selected Icon.

Use the − button to remove an entry from the list.

#### Icon

The Icon field references an Icon ScriptableObject.

It contains the configuration for that offer icon, including its appearance, popup, timer, bundle, price, Store ID, and rewarded-ad settings.

Click Edit to open the selected Icon configuration.

#### Mode

The Mode determines when the icon is available.

Constant — the icon is always available. Use it for permanent offers or features such as No Ads or Lucky Spin.

Timed — the icon is available for a configured period of time and can display a countdown. Use it for limited-time offers, temporary bundles, and recurring promotions.

For example, the configuration above contains:

* No Ads — Constant
* Lucky Spin — Constant
* Timed Chest Offer — Timed

After adding an Icon here, use Edit to configure what the player sees and what happens when the icon is selected.

<figure><img src="/files/wJs7yZJDKIxWyejLtVIR" alt=""><figcaption></figcaption></figure>

### Configuring an Offer Icon

Each offer uses an Icon ScriptableObject that defines its appearance, duration, popup, purchase settings, and rewards.

Click Edit next to an offer in Offer Manager Settings to open its Icon configuration.

#### Prefab

The Prefab field specifies the UI prefab used to display the offer.

Use Edit Prefab to modify the assigned prefab or Create Prefab Variant if you want to create a customized version while keeping the original prefab unchanged.

#### Icon Settings

These fields control the visual appearance of the offer:

* Border — sprite used for the icon border.
* Background — sprite displayed behind the main icon.
* Background Color — tint applied to the background.
* Icon — main offer image.
* Label — label or ribbon displayed on the icon.
* Font Size — size of the text displayed on the icon.

#### Title Details

Icon Title determines what information is displayed in the icon’s text area.

For timed offers, select Time Field to display the remaining offer time directly on the icon.

#### Time

The Time fields define how long the offer remains active.

For example, setting the duration to `1:00:00` creates an offer that remains available for 1 hour.

When the offer uses Timed mode in Offer Manager Settings, this remaining time is displayed as a countdown on the offer icon.

#### Time to Restart Icon

Time to Restart Icon defines the delay before an expired offer becomes available again.

For example, you can configure an offer to:

1. Be available for 1 hour.
2. Expire when its timer reaches zero.
3. Wait for the configured restart period.
4. Become available again with a new timer.

Use this setting for recurring timed offers.

#### Pack Settings

The Pack Settings section defines what happens when the player opens or purchases the offer.

* Popup — popup that opens when the player taps the offer icon.
* Bundle — Bundle ScriptableObject containing the items/rewards included in the offer.
* Price — price displayed for the offer.
* Store ID — Product ID used for the in-app purchase.
* Rewarded Ad — enable this option if the offer should be obtained by watching a rewarded ad instead of making a purchase.
* Rewarded Ad ID — rewarded-ad placement/reference used by the offer.

### Timed Offers

Timed Offers are limited-time offers that appear on the main game screen for a configured duration. After the active period ends, the offer becomes unavailable during its cooldown period and can appear again when the next cycle starts.

A Timed Offer uses two settings:

* Mode = Timed in OfferManagerSettings.
* IconTitle = TimeField in the IconScriptable.

The TimeField value defines how long the offer remains active. The Time to Restart Icon value defines the cooldown before the offer becomes active again.

Example:

Active duration: 1 hour Cooldown: 2 hours

The offer follows this repeating cycle:

Cooldown → Active for 1 hour → Cooldown for 2 hours → Active again

While the offer is active, the icon displays a countdown, for example:

00:34:02

When the timer reaches zero, the icon is hidden until the cooldown period ends.

#### Creating a Timed Offer

1. Create or select an IconScriptable.
2. Set IconTitle to TimeField.
3. Configure the active duration.
4. Configure Time to Restart Icon.
5. Assign the popup, bundle, and purchase settings.
6. Add the icon to OfferManagerSettings → Offer Icons.
7. Set the entry Mode to Timed.

The elapsed time is persisted between sessions, so the offer cycle continues even if the player closes and reopens the game. Each timed offer should have a unique asset name because the timer state is stored using the icon asset name.

Timed mode should always be used together with TimeField. If the icon uses a regular TitleField, it will not display a countdown or follow the intended active/cooldown cycle.
