Personalised Offer Campaigns

Personalised Offer Campaigns

Beta - this feature is in active development. Functionality and styling may change.

THE ESSENTIALS

A Personalised Offer Campaign lets a business create Reward Offers at scale without manually creating an offer for each contact. You define the audience and the campaign rules - which contacts to target, the discount range, and which products to promote - and the AI personalisation engine automatically generates a personalised Reward Offer for each contact based on their purchase history and engagement.

Each contact receives their own offer, automatically activated and translated into their preferred language. Campaigns can run once, or recur daily to include newly-eligible contacts who enter the selected segment.

The AI does two things a standard offer doesn't:

  • It decides who gets what - contacts at risk of churning typically get higher discounts to re-engage them, loyal contacts get standard rewards.

  • It decides how much they get - you set a minimum and a maximum, and the system places each contact somewhere inside that range based on their profile.

You can set up two kinds of rules in the same campaign, and use one or both:

  • Monetary Discount Rules - a personalised cashback percentage or amount per contact.

  • Product Discount Rules - specific products from your catalogue matched to each contact's buying patterns.

Who can use it?

Category

Detail

Category

Detail

Available to

Business organisations only (not Merchants).

Located under

Rewards → Personalised Offer Campaigns

Access

Requires the Rewards feature and the Manage Reward Offers permission.

Hard dependency

The OpenAI integration must be enabled for the business - see Before you start and API & Integrations.

Who this manual is for

This manual serves three audiences. The 🔧 / 🖥️ / 🔗 markers throughout indicate which parts are most relevant to each.

🔧 Configurator - enables the OpenAI integration and prepares the prerequisites (reward scheme, segments, commerce pools, languages) so that campaigns can run.

🖥️ Operator - builds, previews, runs, monitors and stops campaigns day-to-day. This is the bulk of the manual.

🔗 Integrator - drives campaigns programmatically, or you need to understand the data pipeline behind them. The Integrations section at the end is written for you.

Key Concepts

A few terms appear throughout this manual. Understanding them makes everything that follows easier to configure.

Personalised Offer Campaign

A campaign is a container that generates one tailored Reward Offer per targeted contact, from the audience and rules you define. You never write the individual offers yourself, the AI does that for every contact.

RFM / Engagement Score

Every contact carries a Recency, Frequency and Monetary score, summed into a single value (0–30). It decides how generous an offer is: contacts at risk of churning trend towards the top of your range, loyal contacts towards the bottom. The mechanics are explained under How the AI personalises.

Similarity Score

A 0–100% measure of how closely a candidate product matches a contact's purchase history. Only products scoring above the campaign threshold (50% by default) are offered to that contact.


Managing Personalised Offer Campaigns

Before you start

🔧 Configurator. Personalised Offer Campaigns use the same AI engine as AI Visualisation, so you only set the integration up once:

  1. Go to Platform → Integrations → AI Platforms → OpenAI.

  2. Click Manage, paste your OpenAI API key, and click Save.

Until this is done, opening the page shows a locked screen with a Go to Integrations button.

You'll also want to have ready:

Prerequisite

Where

Required?

Why

Prerequisite

Where

Required?

Why

Reward Scheme

Rewards → Schemes

Needed to assign the generated offers.

Every generated offer belongs to a scheme.

Segment

CRM → Segmentation

Optional

Defines the audience. Without one, the campaign targets all contacts.

Commerce Pool

Commerce → Commerce Pools

Optional

If not specified the award is redeemed instantly, if specified it is spent at the contact's request.

Languages

Settings → Platform → Languages

Optional

Required only if you want offers automatically translated for non-English contacts - see Multi-language offers.

New contacts with no history: a contact with no metrics yet is treated as the most "at-risk" profile and receives the most generous award in your min–max range. Product rules produce nothing for a contact with no purchase history (no taste profile can be built).

Browsing your campaigns

🖥️ Operator. The summary page (Rewards → Personalised Offer Campaigns) lists all your campaigns. Each card shows:

  • The campaign name, the reward scheme it belongs to, and (if set) the target segment.

  • A status badge (see below).

  • The campaign period (e.g. 1/6/2026 – 31/8/2026).

  • For completed campaigns, a processed counter (e.g. contacts: 45 / 100).

  • An options button () with the actions available for that campaign.

To start a new one, click + New Campaign in the top-right.

Campaign statuses

Status

Meaning

Editable?

Status

Meaning

Editable?

Draft

Being edited, not started yet.

✅ Fully editable.

Active

Approved and waiting for the next scheduled run (recurring campaigns).

Running

The system is processing contacts and creating offers.

Completed

All targeted contacts processed. Counter shows X / Y.

Failed

An error occurred during execution. Can be run again.

Creating a Campaign

🖥️ Operator. Creating a campaign walks you through a 7-step guided wizard. Move backwards and forwards with Back and Continue; on the final step click Save. Saving stores the campaign in Draft - nothing is generated until you Run it.

Step 1 - Welcome

A brief intro page with three feature cards - Choose your audience, Configure rules, AI does the rest. No action required; read it and click Continue.

Step 2 - Campaign Information

Give the campaign an identity and a validity window.

Field

What to enter

Field

What to enter

Name

A short, descriptive name (e.g. "Summer Loyalty Boost").

Description

Optional. What this campaign aims to achieve.

Scheme

The Reward Scheme the generated offers will belong to.

Currency

The currency used for the awards.

Period From / Period To

The validity period for the generated offers - offers are only awarded within this range.

If anything is missing, the wizard shows: "Please fill in the campaign name, select a reward scheme, and set both period dates to continue." (Name, scheme and both period dates are required to proceed.)

Step 3 - Target Audience

Choose who receives offers from this campaign.

Field

What to enter

Field

What to enter

Segment

Select a saved segment (search by name), or leave empty to target all contacts. Once selected, the wizard shows the current contact count beside the label (e.g. "Segment: Bronze · 1,243 contacts") so you can check the audience size. A separate personalised offer is generated for each of these contacts.

Include New Contacts

Include recently-added contacts even if they have little or no purchase history. When enabled, the campaign becomes recurring - new contacts entering the segment during the campaign period are analysed automatically and, if eligible, get their own offer. See Recurring campaigns.

Step 4 - Choose Rule Types

Pick at least one:

  • Monetary Discount Rules - generates personalised Monetary Discount Offers (a cashback amount or percentage per contact). Configured in Step 5.

  • Product Discount Rules - generates personalised Product Discount Offers (a small set of products with personalised cashback values, matched to the contact's buying patterns). Configured in Step 6.

You can enable both.

Step 5 - Configure Monetary Discount Rules (if enabled)

This is one rule that applies to every targeted contact. The AI personalises the exact value within the bounds you set.

Field

What to enter

Field

What to enter

Name

The name given to the personalised offers (e.g. "Summer Cashback"). This is the offer title contacts see on the front-end apps.

Short Description

Optional. A short offer description shown on front-end apps.

Long Description

Optional. A longer description shown when the contact opens the offer - include the offer details, validity period and any spending restrictions. Automatically translated for non-English contacts.

Terms & Conditions

Optional. Shown on front-end apps. Translated automatically.

Image

Optional. The same uploaded image is used for all generated offers and is shown on front-end apps.

Commerce Pool

Optional. Not set → award redeemed instantly; set → contact spends the award later, on request.

Award Type

Percentage or Amount.

Award Percentage / Amount - Min & Max

The range the AI can assign within. The exact per-contact value is determined by the system.

Min / Max Transaction Amount

Optional for Percentage (leave both empty for no transaction condition); required for Amount. Sets the transaction-total threshold the offer applies to.

What the AI does - it uses an engagement score (Recency, Frequency, Monetary - RFM - value of purchases) to place each contact inside your range: at-risk contacts tend to the upper end, loyal contacts to the lower end. It also looks at recent award/spend activity to avoid stacking awards - a contact already given large awards last month gets a slightly smaller offer; an active spender with no recent rewards gets a small re-engagement boost. The adjustment is gentle (roughly ±15%) and always stays within your range. (See How the AI personalises for the full mechanics.)

Step 6 - Configure Product Discount Rules (if enabled)

You can add multiple product rules in one campaign - e.g. one for "Beverages", another for "Snacks". Each rule holds its own list of candidate products.

For each rule:

Field

What to enter

Field

What to enter

Name

Display name for the generated offers.

Description

Optional. Short offer description shown on front-end apps.

Long Description

Optional. Detailed description shown when the contact opens the offer. Automatically translated for non-English contacts.

Terms & Conditions

Optional. Shown on front-end apps. Translated automatically.

Image

Optional. The same image is used for all generated offers.

Supplier (optional)

If set, the rule becomes a delegate B2B (funded) rule and products are scoped to that supplier. A Delegate badge appears on the rule card.

Commerce Pool (optional)

Same instant / on-request behaviour as the discount step.

Products

Search and add candidate products. For each, set a minimum and maximum award amount.

Use + Add Rule to add another rule and + Add Product to add a product, remove a product with the bin icon. New rules and products appear at the top of the list so you can edit what you just added. The same product can't be added twice within a rule (the picker filters out ones already chosen). Many rules paginate in groups of three; products within a rule paginate in groups of ten - pagination is for readability only, every rule is included when you run the campaign. For larger catalogues use Import (see below).

What the AI does - for every targeted contact it compares each candidate product to the contact's purchase history and assigns a similarity score from 0–100%. Only products scoring above the campaign similarity threshold (default 50%) are selected. The award per matched product is placed inside your Min/Max range, driven by the contact's engagement score and adjusted slightly for recent reward/spend activity (as in Step 5).

Bulk import from a spreadsheet

When you have a long list of products, the Import button (next to + Add Rule) opens a modal where you can paste CSV content or upload an Excel file (.xlsx / .xls) or a .csv. Use the Download sample CSV link in the modal to get a file with the correct column headers.

Column

Required?

Notes

Column

Required?

Notes

rule_name

Yes

Rows sharing a rule_name are grouped into one Product Discount Rule.

sku

Yes

Checked against your product catalogue. Unknown SKUs are flagged in the preview.

award_amount_min

No

Defaults to 0.10 if blank.

award_amount_max

No

Defaults to 0.30 if blank.

rule_description

No

Used as the rule's description.

Example:

rule_name,sku,award_amount_min,award_amount_max,rule_description Summer Pack,SKU-A,0.10,0.30,Cashback on summer items Summer Pack,SKU-B,0.15,0.40,Cashback on summer items Winter Pack,SKU-C,,,

How the modal flow works:

  1. Upload a file or paste your CSV into the text area.

  2. Click Parse. A green Preview card shows "Preview - N rule(s), M product(s)"; if there are problems, a red Issues section lists missing SKUs, invalid numbers, or duplicates.

  3. Fix the source file if needed and re-parse.

  4. Click Add {count} rule(s) to merge the imported rules into your campaign. They appear at the top of the rule list and can be edited by hand just like manually-added rules.

Tip. One row per (rule_name, sku) pair. The same SKU can appear in two different rules - grouping is purely by rule_name.

Step 7 - Review

A two-column summary of every setting. Each section has an Edit (pencil) button that jumps back to that step. When everything is correct, click Save to keep the campaign in Draft.

How the AI personalises

🖥️ Operator background - you don't configure this, but it explains what contacts receive.

1. Generosity from RFM (the discount amount)

Each contact's RFM total (Recency + Frequency + Monetary, on a 0–30 scale) is used to slide the award between your min and max:

  • Low RFM (at-risk / lapsing) → award pushed towards the maximum (win them back).

  • High RFM (loyal) → award pushed towards the minimum (they're already engaged).

That base value is then fine-tuned by two calibration multipliers so the engine doesn't over-reward:

Multiplier

Signal

Effect

Multiplier

Signal

Effect

Purchase multiplier

Contact's average purchase vs the organisation average.

Below-average spender → boost (×1.2); average → ×1.0; above-average → reduce (×0.8).

Engagement multiplier

Last month's purchases, awards already given, and redemptions.

Already heavily rewarded → ×0.85; got awards but never redeemed → ×0.85; active buyer with no recent awards → ×1.10.

Each adjustment is gentle (around ±15%); combined they never move the award by more than roughly ±30%, and the result is always clamped back inside the min–max you set.

2. Product matching (which products a bundle contains)

For each contact the engine builds a purchase-taste profile from the products in their last 100 purchases and compares it to each candidate product, producing a similarity score (0–100%). Products at or above the threshold (default 50%) are kept, the best are ranked and capped (default top 3), and each product's award is set within its Min/Max using the same RFM logic. A contact with no purchase history yields no product offers.

Previewing what a campaign will produce

🖥️ Operator. Before running, simulate the results on a small audience and see exactly which offers each contact would receive - without creating anything.

  • Available for campaigns in Draft status.

  • Open via the campaign card's ⋯ → Preview, or the Preview button on the Review step.

  • Confirm the modal: "Preview campaign "{name}"? This works only for segments with up to 10 contacts. No offers will be created."

The preview panel shows, per contact:

  • The contact's RFM score.

  • Each generated offer (badge: Discount or Bundle).

  • The award value (percentage / amount, or per-product values).

  • For product offers, the matched products with their similarity score (hover the column header for an inline explanation).

If nothing would be generated, the panel says "No offers would be created for this segment." - a hint to widen the rule (lower thresholds, add candidate products, or pick a different segment).

Limit: Preview only works on segments of 10 or fewer contacts. For larger audiences, run the real campaign.

Running a campaign

🖥️ Operator. When the draft looks good:

  1. From the campaign card menu, click Run Campaign (or Run Campaign on the Review tab).

  2. Confirm the modal: "Run campaign "{name}"? This will assign personalised offers to all targeted contacts."

What happens next:

  • Status changes to Running. The platform iterates over the targeted contacts, runs the AI for each, and creates a real Personalised Reward Offer for each matched rule - a Discount offer for the monetary rule and a Bundle offer for a product rule. Each offer is created and immediately activated.

  • Failures on individual contacts are recorded but do not stop the campaign - it moves on to the next contact.