Skip to content

Rewards in your messaging

Once Rewards is switched on, your offers plug into the tools you already send with. Attach an offer to an email campaign, an email automation or one of its follow-ups, an SMS campaign or an SMS automation, and every recipient gets a reward of their own, placed in the message by merge tags. Three triggers start automations from rewards activity, four segment conditions pick members out by their points, tier and rewards, and four webhook events push that activity to your own systems.

Plan requirement: Rewards is included on the Growth plan and above, and the account owner switches it on under Integrations → Dashboard features. The controls below appear only once both are true. See Switching Rewards on.

The offer pickers and the reward triggers are on my.captifi.io. The segment conditions and the webhook events are on both dashboards; see On the classic dashboard for what app.captifi.io does with rewards in messages.

What happens at send time

  • A reward is minted for a recipient when the message shows one: {{reward_link}}, {{reward_code}} or {{reward_expires}} in an email's subject or body, or {reward_link} in a text. A message that only prints {{points_balance}} or {{rewards_link}} mints nothing, even with an offer attached
  • One reward per recipient per send. A retry, a resend or a second render of the same message returns the reward already minted. A repeating campaign mints a fresh reward on each run, within the offer's own limits, so a code redeemed after one run is never mailed again on the next
  • The reward goes to the member behind the guest: the member linked to their sign-in, or the member whose email address or phone number matches. A recipient who has not joined the programme still gets a reward, held against their email address or phone number, and can show it at the till like any other. The offer's Per member and Cooldown limits apply to members only, so Max issued is the only cap on non-members. A throwaway email address gets nothing
  • When the offer refuses (its Max issued is reached, the date is outside its Starts and Ends, the venue is not in the programme, the programme is off, or the offer has been paused), the recipient is skipped and nobody is sent a message with an empty reward. A campaign counts them as skipped, an automation lists them under Skipped in its Results, and an SMS campaign counts them as failed. An email skipped this way is handed back to your monthly allowance
  • Previews and test sends, on either dashboard, show sample values and mint nothing
  • Consent rules are unchanged. A reward attached to a message never changes who receives it: campaigns and automations still go only to guests who opted in to marketing, texts only to guests who agreed to texts

Attach an offer to an email campaign

  1. Go to Email Marketing → Campaigns, create a campaign and work through to the Template step
  2. Under Attach a reward, pick the offer from Reward offer. Only active offers are listed, each shown as its name and what the guest gets, for example "Welcome treat: 10% off". The line under the picker reads "Reward tags only fill in when an offer is attached; without one they render empty and nothing is minted"
  3. Below the picker, Reward tags for your design lists the six tags with what each one renders. Copy the ones you want, open the design with Edit design in builder and paste them into any Text or Heading block, or into the Subject box. The email must show at least one of {{reward_link}}, {{reward_code}} or {{reward_expires}} for a reward to be minted
  4. On the Review & send step the summary shows a Reward line with the offer's name. Send or schedule as usual

The offer is saved to the draft the moment you pick it, so leaving for the builder never loses it. If the offer is paused or archived between picking it and sending, a message shows under the picker; pick another offer or No offer and save again. The campaign's own page shows Reward and the offer's name beside the template, and Duplicate as a new draft copies the offer with the campaign.

Attach an offer to an email automation

  1. Go to Email Marketing → Audiences, open the Automations tab and click New automation, or Edit on an existing one
  2. Set the trigger and its timing as usual, or pick one of the reward triggers
  3. Under Attach a reward offer, pick the offer. No offer clears it
  4. Pick an Email template that carries a reward tag. Any template in your library can be edited in the Email Template Builder to add one; the Personalise menu lists the tags under Rewards
  5. For each follow-up, Reward offer for this follow-up is set to Same as the automation. Leave it, or pick a different offer for that step. A follow-up whose email or text shows a reward tag mints its own reward, separate from the first email's
  6. Click Create automation or Save changes

An automation started by Reward issued or Reward about to expire renders the reward that started it, in the first email and in every follow-up, and mints nothing even with an offer attached.

Attach an offer to a text

A text campaign and a text automation each take one offer, and the message carries the reward with {reward_link}.

  1. Go to Marketing → SMS Marketing and open the campaign composer, or the Automations tab and the automation builder
  2. Under Attach a reward offer, pick the offer
  3. Write the message and tap the {reward_link} chip where the link should go. The chips {rewards_link} and {wallet_link} sit beside it, and the line under the chips reminds you that the tags need an attached offer. The counter prices each reward link at 60 characters, so the segment count you see is the most a guest can cost
  4. Save, schedule or send as usual

A text follow-up inside an email automation offers the same three chips and uses the follow-up's offer, or the automation's when the follow-up says Same as the automation. Every text is still sent only after CaptiFi has re-read the guest's consent and checked they have not replied STOP; a reward minted for a text held for quiet hours is reused when the text goes out.

The merge tags

TagWhereWhat it rendersExample
{{reward_link}}EmailA link to the recipient's reward page: the offer, a QR code, the short code, the expiry date and your terms. Empty without an attached offerhttps://app.captifi.io/r/7F3K9QPX2ABC...
{{reward_code}}EmailThe eight-character code staff type at the till. Empty without an attached offer7F3K-9QPX
{{reward_expires}}EmailThe last day the reward can be used, in the issuing venue's time zone. Empty for a reward with no end date or without an attached offer25 September 2026
{{rewards_link}}EmailA link to the recipient's own rewards page: balance, member number, tier, rewards and activity. Empty for a guest who is not a memberhttps://app.captifi.io/m/7F3K9QPX2ABC...
{{points_balance}}EmailThe recipient's current points balance; 0 for a guest who is not a member120
{{wallet_link}}EmailEmpty for now. It fills in once wallet passes are switched on
{reward_link}TextAs {{reward_link}}
{rewards_link}TextAs {{rewards_link}}
{wallet_link}TextEmpty for now

The email tags are listed under Rewards in the builder's Personalise menu and under the campaign wizard's offer picker, and they work in the subject line as well as the body. Test sends and previews fill them with sample values.

Tags with no offer attached

{{reward_link}}, {{reward_code}}, {{reward_expires}} and {reward_link} render as empty text when no offer is attached, and nothing is minted. The message still goes out, so check the design before you send: a sentence such as "Show this code at the bar: " with nothing after it is what the guest reads. {{rewards_link}} and {{points_balance}} do not need an offer; they read the recipient's membership and are empty or 0 for a guest who has not joined.

Automations that start from rewards

With Rewards on, the trigger list in Email Marketing → Audiences → Automations and in SMS Marketing → Automations gains three entries.

TriggerWhen it sendsSetting
Points balance reachedOnce per member, when their balance climbs from below a number you set to that number or past itPoints balance to reach, a whole number from 1 to 1,000,000
Reward issuedWhen a guest is given a reward outside your messaging, for example on WiFi sign-in or by staff from an offer's page. Rewards minted by campaigns and automations do not countNone
Reward about to expireAt 09:00 in the venue's time zone, to each member holding an unused reward that runs out within a window you set, once per rewardDays before the reward expires, from 1 to 365, 3 by default

For all three, the guest emailed is the member's most recent sign-in at the automation's venues that gave an email address and accepted marketing (for a text, a mobile number and agreement to texts). A member with no such sign-in is not messaged. The venue where the reward was issued or the points were earned must be one of the automation's venues; a reward issued by hand with no venue never starts Reward about to expire. The Results view works as for any other trigger.

Points balance reached

  1. Click New automation and choose Points balance reached as the trigger
  2. Enter Points balance to reach. The line under it reads "Sends once, when a member's balance climbs from below this number to it or past it. A balance that falls and climbs again does not send it twice"
  3. Optionally attach an offer under Attach a reward offer, so the email that congratulates the member also hands them a reward
  4. Pick the template, tick the venues and save

The automation fires on the earn that carries the balance across the number. If you raise the number later, a member who crosses the new one is messaged again; lowering it does not message members already past it. The SMS twin has the same Points balance to reach field and a ready-made message, Points milestone, that carries {rewards_link}.

Reward issued

Choose Reward issued as the trigger; there is no timing to set. The automation runs for each reward issued to a guest on WiFi sign-in or by staff, at the automation's venues, once per reward. Its email renders that reward through the reward tags, so a template with {{reward_code}} and {{reward_expires}} is a reminder of the reward the guest already holds. Nothing is minted, even if an offer is attached, in the first email or in any follow-up. The SMS twin has a ready-made message, Your reward, that carries {reward_link}.

Reward about to expire

  1. Choose Reward about to expire as the trigger
  2. Enter Days before the reward expires, from 1 to 365. The line under it reads "Sends at 9am in the venue's time zone to each member holding an unused reward that runs out within this many days, once per reward"
  3. Pick a template that shows the reward, for example with {{reward_code}} and {{reward_expires}}, tick the venues and save

Each day at 09:00 in each venue's time zone, every issued reward at that venue whose expiry falls within the window is handed to the automation, once. A reward already used or cancelled is not. The SMS twin has the same field and a ready-made message, Reward expiring soon.

Rewards conditions in segments

The segment builder under Email Marketing → Audiences → Segments gains four conditions when Rewards is on.

ConditionOperatorsValue
Points balanceequals, does not equal, is more than, is less than, is at least, is at mostA whole number of points
Rewards tieris, is notOne of your programme's tiers, listed by name
Rewards memberisYes or No
Has an unused rewardisYes or No. Yes means the member holds a reward that has not been redeemed and has not expired

Conditions are read per guest, through their membership. A guest who has not joined the programme never matches Points balance, Rewards tier or Has an unused reward, whichever way the condition is written, and matches Rewards member is No. Counts refresh as for every other segment; see Audiences and segment sizes.

A segment of Points balance is at least 500 joined with AND to Has an unused reward is No is a list of members with a healthy balance and nothing to spend it on, ready for a campaign with an offer attached.

The same four conditions are offered in the segment builder on the classic dashboard.

Webhook events

Endpoints on your Webhooks page can subscribe to four Rewards events. Payloads carry ids, the display code staff type, amounts in minor units (pence or cents) with their currency, and dates; never a reward link or a token.

EventFires when
reward.issuedA reward is issued to a guest, by any route
reward.redeemedA reward is redeemed at one of your venues
reward.redemption_voidedA manager voids a redemption
points.earnedA member earns points

The Send test button on an endpoint has a sample for each. The full payloads are on the Webhooks page.

On the classic dashboard

On app.captifi.io the segment builder offers the four Rewards conditions and the Webhooks page lists the four events. The campaign, automation and SMS editors on the classic dashboard do not carry the offer picker or the three reward triggers, so attach offers and pick those triggers on my.captifi.io. A campaign or automation with an offer attached mints and sends its rewards whichever dashboard starts the send, and a preview or test send from the classic dashboard shows sample values without minting anything.

Troubleshooting

IssuePossible causeSolution
No Attach a reward block or offer pickerRewards is not on the plan, or is switched offThe account owner switches it on under Integrations → Dashboard features; Growth plan and above
The picker says you have no active offersEvery offer is a draft, paused or archivedActivate an offer under Rewards → Offers
A reward tag came out blankNo offer attached, or the tag is {{rewards_link}} or {{points_balance}} for a guest who is not a memberAttach an offer, or use the member tags only in messages to members (a Rewards member is Yes segment)
Some recipients were skippedThe offer refused them: Max issued reached, outside its dates, paused, or a throwaway addressCheck the offer's limits and status. Skipped emails are handed back to your allowance
A follow-up handed out a second rewardIt shows a reward tag, so it minted against its own offer or the automation'sRemove the reward tags from that step's template, or detach the offer from the automation and attach it to the one step that should carry the reward
Points balance reached did not fire againIt sends once per member per numberRaise the number and it fires again at the new crossing
Reward about to expire never fires for a rewardThe reward was issued by hand with no venue, or the venue is not one of the automation'sTick the venue on the automation; hand-issued rewards with no venue are not covered
A reward trigger is missing from the SMS listRewards is offThe needs setup badge on the Automations tab says so; switch Rewards on under Integrations

CaptiFi — Guest WiFi Marketing Platform