Campaign Create Recipe - Continuity
š Purpose
Continuity campaigns reward customers for sustained engagement such as making several trips, transactions, or hitting spend thresholds over time. This recipe helps you set up a points-based continuity campaign that automatically rewards customers when they spend a defined amount across one or more purchases.
This is ideal for initial offers, acquisition journeys, or spend-and-earn promotions that encourage customers to keep shopping until they unlock their reward.
For more campaign types, see the Campaigns Create API reference and Campaign Best Practices.
š¼ Recipe Overview
You will create a continuity campaign that issues a reward when a customer spends £100 or more, with the following setup:
- Tagged as an initial offer for easy identification and use in onboarding journeys
- One reward per customer (1 per wallet)
- Spend can be accumulated over multiple transactions
- Coupon remains redeemable for 14 days after it's issued
- Reward is 500 points, credited to the customerās loyalty account
- Offer can be redeemed at multiple banners and all stores within them
Once live, this campaign can be linked to customer wallets or accounts and triggered through API calls or lifecycle journeys.
š Prerequisites
Ensure the following are ready before proceeding:
- Access to the Eagle Eye API platform
- Your company unitās clientId and secret
- Active 3-level unit hierarchy (Company > Banner > Store)
- unitId and incomingIdentifier for all redemption partners (banners)
- Start and end dates for the campaign period
- A valid schemeId to define where points are credited
- Business rules: minimum spend or trip count to qualify
š¤ Outputs
After completing this recipe, capture the following output:
| Output Name | Purpose |
|---|---|
| campaignId | Used to create accounts with wallets or retrieve campaign details |
š Steps
Step 1: Define Your Campaign Setup
This step outlines the rules of your promotion, including who qualifies, what they earn, where itās valid, and how long it's redeemable.
- 1.1 Campaign Name: Select a name for the campaign in the details container e.g. Initial Offer: Get 500 points after spending £100
- 1.2 Campaign timing: Define the startDate and endDate
- 1.3 Tag as an initial offer for new wallets created: Add initialOffers as a tag in details.tags
- 1.4 Redemption Period: In rules.start and rules.expiry, set the coupon expiry dates expiry to 14 days after creation
- 1.5 Redemption Locations: In partners.redemption, add the unitId for any banners where the coupon can be redeemed
- 1.6 Campaign Type: Select the appropriate class, type and offerType for Continuity with a basket qualification (additional types can be found on the Campaign Create Via API page:
- type: CONTINUITY
- offerType: CONTINUITY
- class: CONTINUITY
- 1.7 Transaction Qualification:
- Set the offer.qualification.basket.minimumBasketSpend amount as the qualification to get the reward
- This examples uses 1, requiring a minimum 0.01 spend for each individual transaction to qualify towards the spend progress
- 1.8 Use the banners incomingIdentifier as the key for offer.qualification.locations
- 1.9 Points Reward Amount: Set the reward.standard.points.creditAmount as the reward the customer will receive
- 1.10 Set the reward.standard.points.schemeId to the loyalty scheme to reward the points against
- 1.11 In offer.continuity.qualification, input the totalTransactionSpend of 10000 for 100.00
Step 2: Call POST /campaigns
{
"class": "CONTINUITY",
"version": 2,
"status": "ACTIVE",
"details": {
"name": "Initial Offer: Get 500 points after spending 100.00",
"alternativeName": null,
"description": null,
"alternativeDescription": null,
"printerMessage": null,
"screenMessage": null,
"tags": [
"initialOffers"
],
"startDate": "2025-06-01T00:00:00+00:00",
"endDate": "2025-12-31T23:59:59+00:00",
"mode": "TARGETED"
},
"settings": {
"tokenProvider": null,
"tokenFormat": null,
"walletEnabled": true,
"accountClientType": "OFFER",
"defaultAccountClientState": "UNLOADED"
},
"rules": {
"creation": {
"campaignLimit": null,
"consumerLimit": 1,
"consumerLimitActive": null
},
"verification": {
"lock": false,
"lockOnVerify": true
},
"redemption": {
"campaignLimit": null,
"allowAccountOverride": true
},
"start": {
"type": "IMMEDIATELY",
"valueType": null,
"value": null,
"date": null
},
"expiry": {
"type": "AFTER_CREATION",
"valueType": "DAY",
"value": "14",
"date": null
}
},
"partners": {
"redemption": [
{
"partner": "151926",
"redemptionLimit": null
},
{
"partner": "151930",
"redemptionLimit": null
}
]
},
"windows": {
"creation": [],
"redemption": []
},
"type": "CONTINUITY",
"offer": {
"offerType": "CONTINUITY",
"qualification": {
"basket": {
"minimumBasketSpend": 1
},
"locations": {
"banner1": {
"included": {
"locationIdentifiers": null,
"locationTags": null
},
"excluded": {
"locationIdentifiers": null,
"locationTags": null
}
},
"banner2": {
"included": {
"locationIdentifiers": null,
"locationTags": null
},
"excluded": {
"locationIdentifiers": null,
"locationTags": null
}
}
}
},
"reward": {
"standard": {
"value": null,
"points": {
"schemeId": "100128379",
"creditAmount": 500,
"multiplierValue": null
}
}
},
"continuity": {
"qualification": {
"totalTransactionCount": null,
"totalTransactionSpend": 10000,
"totalTransactionUnits": null
}
}
}
}{
"id": "101141883",
"type": "CONTINUITY",
"status": "ACTIVE",
"class": "CONTINUITY",
"details": {
"name": "Initial Offer: Get 500 points after spending 100.00",
"alternativeName": null,
"description": null,
"alternativeDescription": null,
"printerMessage": null,
"screenMessage": null,
"tags": [
"initialOffers"
],
"startDate": "2025-06-01T00:00:00+00:00",
"endDate": "2025-12-31T23:59:59+00:00",
"mode": "TARGETED"
},
"settings": {
"tokenProvider": "EES",
"tokenFormat": "000000001",
"walletEnabled": true,
"issuanceMethod": null,
"accountClientType": "OFFER",
"defaultAccountClientState": "UNLOADED"
},
"partners": {
"creation": [],
"redemption": [
{
"partner": "151926",
"redemptionLimit": null
},
{
"partner": "151930",
"redemptionLimit": null
}
]
},
"rules": {
"creation": {
"campaignLimit": null,
"consumerLimit": 1,
"consumerLimitActive": null,
"windows": {
"active": false
}
},
"adjudication": {
"excludedProducts": null
},
"verification": {
"lock": false,
"lockOnVerify": true
},
"redemption": {
"maxRedemptionsPerPeriod": null,
"campaignLimit": null,
"couponLimit": null,
"allowOverride": null,
"allowAccountOverride": true,
"maximumAccountUsage": null,
"maximumDiscountableRelatedContents": null,
"maximumAccountsPerTransaction": null,
"windows": {
"active": false
},
"dates": {
"exclusion": {
"active": false
}
},
"timeBetweenRedemptions": null,
"timeBetweenStamps": null,
"allowMultipleRedeem": null,
"isHiddenFromRelatedWallets": false,
"redeemableOutsideOwningWalletWithIdentity": false,
"redeemableOutsideOwningWalletWithoutIdentity": false
},
"refund": [],
"locations": null,
"expiry": {
"type": "AFTER_CREATION",
"valueType": "DAY",
"value": "14",
"date": null
},
"start": {
"type": "IMMEDIATELY",
"valueType": null,
"value": null,
"date": null
},
"graceAmount": null,
"useLocalTime": null,
"maxCreditsPerPeriod": null
},
"windows": {
"creation": [],
"redemption": []
},
"dates": {
"redemption": {
"redemption": [],
"exclusion": []
}
},
"relationships": null,
"reference": "101141883",
"offer": {
"offerType": "CONTINUITY",
"qualification": {
"basket": {
"minimumBasketSpend": 1
},
"locations": {
"banner1": {
"included": {
"locationIdentifiers": null,
"locationTags": null
},
"excluded": {
"locationIdentifiers": null,
"locationTags": null
}
},
"banner2": {
"included": {
"locationIdentifiers": null,
"locationTags": null
},
"excluded": {
"locationIdentifiers": null,
"locationTags": null
}
}
},
"tenders": null,
"identityTypes": null
},
"reward": {
"standard": {
"value": null,
"points": {
"schemeId": "100128379",
"creditAmount": 500,
"multiplierValue": null
}
}
},
"continuity": {
"qualification": {
"totalTransactionCount": null,
"totalTransactionSpend": 10000,
"totalTransactionUnits": null
}
},
"promoId": null
},
"version": 2,
"dateCreated": "2025-06-11T13:10:08+00:00",
"lastUpdated": "2025-06-11T13:10:08+00:00"
}ā
Business Readiness Checklist
Use these steps to validate the setup of your scheme:
- Retrieve the campaign via GET /campaigns/campaignId to validate setup
- Start and end dates are set as expected
- Tag is correctly set to "initialOffers"
- Coupon expiry is set to 14 days after creation
- Spend qualification logic is correct (basket and total spend)
- Redemption banners are correctly listed by unitId and incomingIdentifier
- Reward setup reflects the correct creditAmount and schemeId
- Check that only one offer.continuity.qualification value is entered and others are null
- Create a coupon account to test and validate the coupon can be issued
š§ Troubleshooting Tips
Issue | Possible Cause & Resolution |
|---|---|
400 Bad Request | Check all required fields, including description and alternativeDescription. These can be null but must be present. |
Invalid redemption partner | Confirm each unitId is correct and belongs to a valid redemption partner under your companyās clientId. Use GET /units/unitId to verify. |
Updated about 4 hours ago
