Omni panel feature

A unique promo code in every message

One pool of values, a different code for each recipient

Upload a list of promo codes, certificates or personal links once, put a variable into the message text, and SMSBAT hands a distinct value to every recipient and marks it as used.

1 pool

Works across every channel of the cascade

CSV

Bulk upload or manual entry

Used / Unused

Status and timestamp for every value

0

Duplicate codes handed to recipients

When you need a pool instead of one code

Any campaign where a code must work for one person only, and where a single shared code would be posted publicly within the hour.

Retail and e-commerce

Personal discount codes for a campaign, where each customer receives a code only they can redeem.

Loyalty programs

Certificates, bonuses and gift codes distributed across the base without manual work.

Events and services

Unique invitations, tickets and booking links sent out in a single campaign.

Marketing agencies

Promo campaigns for clients where every code is single-use and its usage can be audited.

Products with personal links

Referral or activation links that have to differ for every user.

Campaigns that must not leak

One shared code posted in a public chat stops being a discount and becomes a loss. A pool removes that risk.

How variable pools help

The pool lives in the panel, and the campaign only refers to it — nothing has to be prepared per recipient.

One pool for every channel

The same variable works in the main message and in every cascade fallback, so the customer sees one code whether it arrives by Viber, SMS or push.

No repeats

A value leaves the pool once, is bound to its recipient and marked as used. The next person receives the next free value.

Bulk upload

Load the codes from a file or paste them manually. The pool stays reusable across campaigns until it runs out.

Usage visible in the panel

Every value carries its status and the moment it was issued, so a campaign can be reconciled against your own system.

Works through the API

Insert the variable into the text of an API request exactly as you do in the panel — there is no extra endpoint to integrate.

Predictable depletion

You see how many values remain before a campaign empties the pool.

How it works

From an uploaded list of codes to a campaign where everyone gets their own.

1

Create a pool

In the Omni panel open Broadcasts, go to Variable pools and create a new pool.

2

Load the values

Upload a CSV file with the codes or add them manually.

3

Put the variable in the text

Insert the pool variable into the message and into the cascade fallbacks.

4

Send the campaign

Every recipient receives their own value and the pool marks it as used.

REST API

A cascade request with a variable

The same variable sits in the Viber message and in the SMS fallback, so the recipient sees one code no matter which channel delivers it.

curl --request POST \
  --url https://restapi.smsbat.com/bat/messagelist \
  --header 'Content-Type: application/json' \
  --header 'X-Authorization-Key: YOUR_API_KEY' \
  --data '{
  "messages": [
    {
      "from": "YourBrand",
      "to": "380XXXXXXXXX",
      "type": "viber_trans",
      "text": "Your promo code: {{promo_code}}",
      "ttl": "30",
      "fallbacks": [
        {
          "from": "YourBrand",
          "to": "380XXXXXXXXX",
          "type": "sms",
          "text": "Your promo code: {{promo_code}}"
        }
      ]
    }
  ]
}'
Variable pools FAQ

Try variable pools

Create a pool in the Omni panel, or write to us and we will help you plan a campaign with unique codes.