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 NamePurpose
campaignIdUsed 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

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

IssuePossible Cause & Resolution
400 Bad RequestCheck all required fields, including description and alternativeDescription. These can be null but must be present.
Invalid redemption partnerConfirm each unitId is correct and belongs to a valid redemption partner under your company’s clientId. Use GET /units/unitId to verify.