Campaign Create Recipe - Behavioral Action Points Reward
š Purpose
Unlike traditional transaction-based campaigns that reward spending, behavioral action offers focus on driving customer advocacy and engagement through non-purchase behaviors.
By following this recipe, you can incentivize high-value digital interactions, such as social media engagement (likes/shares), submitting product reviews, completing surveys, or successful referrals. This recipe will outline how to setup the behavioral action to issue a points reward when the specific action is completed.
š¼ Recipe Overview
You will create a behavioral action campaign that issues 250 points when a customer submits a survey, with the following setup:
- One reward per customer (1 per wallet)
- Reward is 250 points, credited to the customerās loyalty account
Once live, this behavioral action can be triggered, crediting the points to their points accounts through an API call.
š 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 eligible banners
- Start and end dates for the campaign period
- A valid schemeId to define where points are credited
- An alphanumeric reference to trigger the points
š¤ Outputs
After completing this recipe, capture the following output:
| Output Name | Purpose |
|---|---|
| reference | Used to trigger the behavioral action in a wallet |
š Steps
Step 1: Define Your Behavioral Action Setup
This step outlines the rules of your behavioral action, including what they earn, the reference to call on the trigger API, and how long it's available.
- 1.1 Campaign Name: Select a name for the campaign in the details container e.g. Get 250 points for completing a store survey
- 1.2 Campaign timing: Define the startDate and endDate
- 1.3 Consumer Limit: In rules.creation set the consumerLimit value to 1, ensuring each wallet cannot receive this offer more than once.
- 1.4 Redemption Locations: In partners.redemption, add the unitId for any banners where the coupon can be redeemed
- 1.5 Campaign Type: Select type, class and offerType:
- type: BEHAVIOURAL_ACTION
- class: COUPON
- offerType: NON_TRANSACTIONAL
- 1.7 Set the offer.actions.reference and offer.actions.description
- reference is a value to be used on the services/trigger API to award the points. This must not contain spaces.
- 1.8 Points Reward Amount: Set the reward.standard.points.creditAmount as the reward the customer will receive
- 1.9 Set the reward.standard.points.schemeId to the loyalty scheme to reward the points against
Step 2: Call POST /campaigns
{
"type": "BEHAVIOURAL_ACTION",
"status": "ACTIVE",
"class": "COUPON",
"details": {
"name": "250 pts for survey response",
"alternativeName": null,
"description": "null",
"alternativeDescription": null,
"printerMessage": null,
"screenMessage": null,
"tags": [],
"startDate": "2026-04-01T00:00:00+00:00",
"endDate": "2026-06-30T23:59:00+00:00",
"mode": "OPEN"
},
"settings": {
"tokenProvider": "EES",
"tokenFormat": "000000001",
"walletEnabled": true,
"issuanceMethod": null,
"accountClientType": "BEHAVIOURAL_ACTION",
"defaultAccountClientState": "LOADED"
},
"partners": {
"creation": [],
"redemption": []
},
"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": null,
"maximumAccountUsage": null,
"maximumDiscountableRelatedContents": null,
"maximumAccountsPerTransaction": null,
"windows": {
"active": false
},
"dates": {
"exclusion": {
"active": false
}
}
},
"expiry": {
"type": "NEVER",
"valueType": null,
"value": null,
"date": null
},
"start": null,
"graceAmount": null,
"useLocalTime": null,
"maxCreditsPerPeriod": null
},
"windows": {
"creation": [],
"redemption": []
},
"dates": {
"redemption": {
"redemption": [],
"exclusion": []
}
},
"offer": {
"offerType": "NON_TRANSACTIONAL",
"reward": {
"standard": {
"points": {
"schemeId": "{schemeId}",
"creditAmount": 250,
"multiplierValue": null
}
}
},
"promoId": null,
"qualification": {
"identityTypes": null
},
"actions": [
{
"reference": "postTransactionSurvey",
"description": "Customer completed survey"
}
]
},
"version": 2
}{
"id": "{id}",
"type": "BEHAVIOURAL_ACTION",
"status": "ACTIVE",
"class": "COUPON",
"details": {
"name": "250 pts for survey response",
"alternativeName": null,
"description": "null",
"alternativeDescription": null,
"printerMessage": null,
"screenMessage": null,
"tags": [],
"startDate": "2026-04-01T00:00:00+00:00",
"endDate": "2026-06-30T23:59:00+00:00",
"mode": "OPEN"
},
"settings": {
"tokenProvider": "EES",
"tokenFormat": "000000001",
"walletEnabled": true,
"issuanceMethod": null,
"accountClientType": "BEHAVIOURAL_ACTION",
"defaultAccountClientState": "LOADED"
},
"partners": {
"creation": [],
"redemption": []
},
"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": 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": [],
"locations": null,
"expiry": {
"type": "NEVER",
"valueType": null,
"value": null,
"date": null
},
"start": null,
"graceAmount": null,
"useLocalTime": null,
"maxCreditsPerPeriod": null
},
"windows": {
"creation": [],
"redemption": []
},
"dates": {
"redemption": {
"redemption": [],
"exclusion": []
}
},
"relationships": null,
"reference": "{reference}",
"offer": {
"offerType": "NON_TRANSACTIONAL",
"reward": {
"standard": {
"points": {
"schemeId": "{schemeId}",
"creditAmount": 250,
"multiplierValue": null
}
}
},
"qualification": {
"tenders": null,
"identityTypes": null
},
"promoId": null,
"actions": [
{
"reference": "postTransactionSurvey",
"description": "Customer completed survey"
}
]
},
"version": 2,
"dateCreated": "2026-04-16T20:28:34+00:00",
"lastUpdated": "2026-04-16T20:28:34+00:00",
"lastUpdatedBy": 1
}ā
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
- actions.reference is correctly set to "postTransactionSurvey"
- Redemption banners are correctly listed by unitId and incomingIdentifier
- Reward setup reflects the correct creditAmount and schemeId
- Trigger the behavioral action using POST trigger to test and validate this action triggers the correct reward
š§ 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 8 days ago
