Campaign Create Recipe - Behavioral Action Coupon 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 coupon reward when the specific action is completed. This coupon can be used on a future transaction when the qualification is met.

🖼 Recipe Overview

You will create a behavioral action campaign that issues a $10 off $50 discount basket coupon when a customer submits a product review in your app, with the following setup:

  • One reward per customer (1 per wallet)
  • Reward is a coupon added to the customer’s wallet, available for immediate use

Once live, this behavioral action can be triggered, adding the coupon to their wallet 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 all redemption partners (banners)
  • Start and end dates for the campaign period
  • A campaignId to trigger the coupon reward against
  • An alphanumeric reference to trigger the coupon reward

📤 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 Campaign 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 a 10 off 50 coupon for submitting a product review
  • 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 Coupon Reward: Set the offer.reward.standard.coupon.campaignId[0] with the campaignId of the offer the customer will receive as a reward

Step 2: Call POST /campaigns

{
    "type": "BEHAVIOURAL_ACTION",
    "status": "ACTIVE",
    "class": "COUPON",
    "details": {
        "name": "Get a 10 off 50 coupon for submitting a product review",
        "alternativeName": null,
        "description": "",
        "alternativeDescription": null,
        "printerMessage": null,
        "screenMessage": null,
        "tags": [],
        "startDate": "2026-05-01T00:00:00+00:00",
        "endDate": "2026-12-31T23: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": null,
            "consumerLimitActive": null,
            "windows": {
                "active": false
            }
        },
        "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,
    "offer": {
        "offerType": "NON_TRANSACTIONAL",
        "reward": {
            "standard": {
                "coupon": {
                    "campaignId": [
                        "{campaignId}"
                    ]
                }
            }
        },
        "qualification": {
            "tenders": null,
            "identityTypes": null
        },
        "actions": [
            {
                "reference": "productReviewSubmit",
                "description": "Csutomer submitted a review"
            }
        ],
        "promoId": null
    },
    "version": 2
}
{
    "id": "{id}",
    "type": "BEHAVIOURAL_ACTION",
    "status": "ACTIVE",
    "class": "COUPON",
    "details": {
        "name": "Get a 10 off 50 coupon for submitting a product review",
        "alternativeName": null,
        "description": "",
        "alternativeDescription": null,
        "printerMessage": null,
        "screenMessage": null,
        "tags": [],
        "startDate": "2026-05-01T00:00:00+00:00",
        "endDate": "2026-12-31T23: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": null,
            "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": {
                "coupon": {
                    "campaignId": [
                        "{campaignId}"
                    ]
                }
            }
        },
        "qualification": {
            "tenders": null,
            "identityTypes": null
        },
        "promoId": null,
        "actions": [
            {
                "reference": "productReviewSubmit",
                "description": "Csutomer submitted a review"
            }
        ]
    },
    "version": 2,
    "dateCreated": "2026-05-01T17:35:16+00:00",
    "lastUpdated": "2026-05-01T17:35:16+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 "productReviewSubmit"
  • Redemption banners are correctly listed by unitId and incomingIdentifier
  • Reward setup reflects the correct campaignid
  • 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.