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

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.