Campaign Create Recipe - Manual

📌 Purpose

Manual campaigns are available for discount and points rewards where the reward calculation is done by the POS and not by AIR. This recipe helps you set up a Manual campaign to be used for issuing third party accounts via a reward bank.

This campaign type is generally without qualification or rewards as another engine is managing the qualification and resulting reward.

For more campaign types and additional options for campaign setup, see the Campaigns Create API reference and Campaign Best Practices pages.

🖼 Recipe Overview

You will create a manual campaign that can be used as a rewards bank reward when a customer purchases a third party gift card. This campaign will be the reward of the rewards bank. Once that is issued as a coupon account to the wallet, it can be used as a trigger to issue the gift card to your customer. This with the following setup:

  • Campaign will have a 1,000 limit on the number of coupons that can be issued
  • There is no limit on the number of issuances per wallet
  • Offer can be redeemed at a specific banner and all stores within them

Once live, this campaign can be linked to a rewards bank as a reward. See Campaigns Create API reference and Rewards Bank Recipe for an example on how to setup.

📋 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
  • schemeId that will be used when the customer exchanges points for a reward

📤 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 outlines the rules of your promotion, including how long it's redeemable.

  • 1.1 Campaign Name: Select a name for the campaign in the details container e.g. Get reward for buying gift card
  • 1.2 Campaign timing: Define the startDate and endDate
  • 1.3 Redemption Locations: In partners.redemption, add the unitId for any banners where the coupon can be redeemed
  • 1.4 Campaign Type: Select the appropriate class and type and offerType:
    • type: MANUAL
    • class: COUPON
  • 1.5 Set the offer.reward.standard.points.schemeId for the scheme that is being used to exchange the points. No creditAmount is needed.

Step 2: Call POST /campaigns

{
    "type": "MANUAL",
    "status": "ACTIVE",
    "class": "COUPON",
    "details": {
        "name": "Third Party Account",
        "alternativeName": "",
        "description": "",
        "alternativeDescription": "",
        "printerMessage": null,
        "screenMessage": null,
        "tags": [],
        "startDate": "2026-03-20T00: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": "328030",
                "redemptionLimit": null
            }
        ]
    },
    "rules": {
        "creation": {
            "campaignLimit": null,
            "consumerLimit": null,
            "consumerLimitActive": null
        },
        "verification": {
            "lock": false,
            "lockOnVerify": true
        },
        "redemption": {
            "campaignLimit": null,
            "couponLimit": null,
            "maximumAccountUsage": 1
        },
        "locations": null,
        "expiry": {
            "type": "AFTER_CREATION",
            "valueType": "HOUR",
            "value": "1",
            "date": null
        }
    },
    "windows": {
        "creation": [],
        "redemption": []
    },
    "offer": {
        "qualification": {},
        "reward": {
            "standard": {
                "points": {
                    "schemeId": "{{schemeId}}",
                    "creditAmount": null,
                    "multiplierValue": null
                }
            }
        }
    },
    "version": 2
}
{
    "id": "102472057",
    "type": "MANUAL",
    "status": "ACTIVE",
    "class": "COUPON",
    "details": {
        "name": "Third Party Account",
        "alternativeName": "",
        "description": "",
        "alternativeDescription": "",
        "printerMessage": null,
        "screenMessage": null,
        "tags": [],
        "startDate": "2026-03-20T00: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": "328030",
                "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": null,
            "allowOverride": null,
            "allowAccountOverride": null,
            "maximumAccountUsage": 1,
            "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": "AFTER_CREATION",
            "valueType": "HOUR",
            "value": "1",
            "date": null
        },
        "start": null,
        "graceAmount": null,
        "useLocalTime": null,
        "maxCreditsPerPeriod": null
    },
    "windows": {
        "creation": [],
        "redemption": []
    },
    "dates": {
        "redemption": {
            "redemption": [],
            "exclusion": []
        }
    },
    "relationships": null,
    "reference": "102472057",
    "offer": {
        "qualification": {
            "tenders": null,
            "identityTypes": null
        },
        "reward": {
            "standard": {
                "points": {
                    "schemeId": "102312801",
                    "creditAmount": null,
                    "multiplierValue": null
                }
            }
        },
        "promoId": null
    },
    "version": 2,
    "dateCreated": "2026-03-20T13:42:32+00:00",
    "lastUpdated": "2026-03-20T13:42:32+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
  • Add the campaign as a reward to a rewards bank using Create Rewads Bank Recipe
  • Redemption banners are correctly listed by unitId and incomingIdentifier
  • Reward setup reflects the correct schemeId

🔧 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.