Campaign Create Recipe - Stamp Card
📌 Purpose
The stamp card campaign enables coupons to be issued as rewards based on a sequential progression model. The program can operate in two formats:
- Non-rotating: The stamp card completes after a single cycle.
- Rotating: The stamp card repeats across multiple cycles, which can be either limited to a set number of rotations or unlimited. Upon completion of the final stamp in a cycle, the card automatically restarts from the beginning.
To earn rewards, customers must qualify on each visit. A unique coupon can be issued at every stamp milestone or a stamp can be tracked without the issuance of a coupon. This recipe shows how to create a campaign that tracks 10 stamps before providing a coupon for a free coffee.
For more campaign options, refer to the Campaigns Create API reference and Campaign Best Practices.
🖼 Recipe Overview
This recipe will show you the steps to create a campaign that rewards the customer with a coupon for a free coffee after completing 10 transactions purchasing a qualifying product. The campaign will have the following setup:
- Product qualification: identified by UPC codes
- Reward: a coupon account after 10 transactions
- Redeemable at one banner and all stores within it
- Stamp Card rotates unlimited times
📋 Prerequisites
- 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
- Product UPCs associated to the banner unit
- Discount Products campaign offering a free product as the reward. See this recipe for more information on how to setup.
📤 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 defines which products qualify for the offer, where it's valid, how many stamps are in a single rotation, and the campaign timeline.
- 1.1 Campaign Name: Select a name for the campaign in the details container e.g. Free Coffee after 10 Visits
- 1.2 Campaign timing: Define the startDate and endDate
- 1.3 Redemption Period: In rules.start and rules.expiry, set the coupon expiry dates expiry the same date as teh campaign end date
- 1.4 Redemption Locations: In partners.redemption, add the unitId for any banners where the coupon can be redeemed
- 1.5 Select the appropriate type and offerType for Stamp Card with a product qualification (additional types can be found on the Campaign Create Via API page:
- type: CAMPAIGN_STAMP_CARD
- offerType: STAMP_CARD
- 1.6 Product Qualification:
- Include eligible UPC(s) under included.items
- Define minimumProductSpend (e.g. 200 for £2.00)
- Set minimumUnits to 1
- 1.7 Use the banners incomingIdentifier as the key for offer.qualification.locations
- 1.8 Product Reward:
- Set the reward.stampcard object to 10 to signify the first 9 stamps will offer no reward
- In this "10" array, add the campaignId for the free coffee campaign
- Set the reward.stampcard object to 10 to signify the first 9 stamps will offer no reward
Step 2: Call POST /campaigns
{
"type": "CAMPAIGN_STAMP_CARD",
"status": "ACTIVE",
"class": "STAMP_CARD",
"details": {
"name": "Get a free coffee after 10 purchases",
"alternativeName": "",
"description": "",
"alternativeDescription": "",
"printerMessage": null,
"screenMessage": null,
"tags": [],
"startDate": "2025-08-22T00:00:00+00:00",
"endDate": "2026-12-31T23:59:00+00:00",
"mode": "TARGETED"
},
"settings": {
"tokenProvider": "EES",
"tokenFormat": "000000001",
"walletEnabled": true,
"issuanceMethod": null,
"accountClientType": "OFFER",
"defaultAccountClientState": "LOADED"
},
"partners": {
"creation": [],
"redemption": [
{
"partner": "220673",
"redemptionLimit": null
}
]
},
"rules": {
"creation": {
"campaignLimit": null,
"consumerLimit": null,
"consumerLimitActive": null,
"windows": {
"active": false
}
},
"verification": {
"lock": false,
"lockOnVerify": true
},
"redemption": {
"campaignLimit": null,
"couponLimit": 1,
"windows": {
"active": false
},
"dates": {
"exclusion": {
"active": false
}
}
},
"refund": {
"refundable": true,
"unredeemable": false
},
"expiry": {
"type": "CAMPAIGN_END",
"valueType": null,
"value": null,
"date": null
},
"start": {
"type": "IMMEDIATELY",
"valueType": null,
"value": null,
"date": null
}
},
"windows": {
"creation": [],
"redemption": []
},
"dates": {
"redemption": {
"redemption": [],
"exclusion": []
}
},
"offer": {
"offerType": "STAMP_CARD",
"qualification": {
"locations": {
"banner1": {
"included": {
"locationIdentifiers": null,
"locationTags": null
},
"excluded": {
"locationIdentifiers": null,
"locationTags": null
}
}
},
"product": {
"banner1": {
"logicalOperator": "OR",
"collections": [
{
"products": {
"allRequired": false,
"included": {
"items": [
"245876"
],
"skus": null
},
"excluded": null
},
"minimumProductSpend": 200,
"minimumUnits": 1
}
]
}
},
"basket": null,
"globalProductRestrictions": {
"enabled": true
}
},
"reward": {
"basket": null,
"product": null,
"stampCard": {
"10": [
{
"resourceId": "101490145",
"resourceType": "CAMPAIGN"
}
]
}
},
"stampCard": {
"configuration": {
"rotations": {
"active": true,
"value": 0
},
"steps": 10
}
}
},
"version": 2
}{
"id": "101490154",
"type": "CAMPAIGN_STAMP_CARD",
"status": "ACTIVE",
"class": "STAMP_CARD",
"details": {
"name": "Get a free coffee after 10 purchases",
"alternativeName": "",
"description": "",
"alternativeDescription": "",
"printerMessage": null,
"screenMessage": null,
"tags": [],
"startDate": "2025-08-22T00:00:00+00:00",
"endDate": "2026-12-31T23:59:00+00:00",
"mode": "TARGETED"
},
"settings": {
"tokenProvider": "EES",
"tokenFormat": "000000001",
"walletEnabled": true,
"issuanceMethod": null,
"accountClientType": "OFFER",
"defaultAccountClientState": "LOADED"
},
"partners": {
"creation": [],
"redemption": [
{
"partner": "220673",
"redemptionLimit": null
}
]
},
"rules": {
"creation": {
"campaignLimit": null,
"consumerLimit": null,
"consumerLimitActive": null,
"windows": {
"active": false
}
},
"adjudication": {
"excludedProducts": null
},
"verification": {
"lock": false,
"lockOnVerify": true
},
"redemption": {
"maxRedemptionsPerPeriod": null,
"campaignLimit": null,
"couponLimit": 1,
"allowOverride": null,
"allowAccountOverride": null,
"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": {
"refundable": true,
"unredeemable": false
},
"locations": null,
"expiry": {
"type": "CAMPAIGN_END",
"valueType": null,
"value": null,
"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": "101490154",
"offer": {
"offerType": "STAMP_CARD",
"qualification": {
"locations": {
"banner1": {
"included": {
"locationIdentifiers": null,
"locationTags": null
},
"excluded": {
"locationIdentifiers": null,
"locationTags": null
}
}
},
"product": {
"banner1": {
"logicalOperator": "OR",
"collections": [
{
"products": {
"allRequired": false,
"included": {
"items": [
"245876"
],
"skus": null
},
"excluded": null
},
"minimumProductSpend": 200,
"minimumUnits": 1
}
]
}
},
"basket": null,
"globalProductRestrictions": {
"enabled": true
},
"tenders": null,
"identityTypes": null
},
"reward": {
"basket": null,
"product": null,
"stampCard": {
"10": [
{
"resourceId": "101490145",
"resourceType": "CAMPAIGN"
}
]
}
},
"stampCard": {
"configuration": {
"rotations": {
"active": true,
"value": 0
},
"steps": 10
}
},
"promoId": null
},
"version": 2,
"dateCreated": "2025-08-22T14:33:41+00:00",
"lastUpdated": "2025-08-22T14:33:41+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
- Coupon expiry is set to campaign expiry
- Spend qualification logic is correct (product spend)
- Redemption banners are correctly listed by unitId and incomingIdentifier
- Reward setup reflects 10 stamps
- Create a coupon account to test and validate the coupon can be issued
- Complete 10 transactions to verify the free coffee coupon is added to the wallet and the stamp card remains active
🔧 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
