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.