Campaign Create Recipe - Discount Products

📌 Purpose

Discount Products campaigns reward customers for purchasing specific items, helping you drive focus on high-margin, seasonal, or strategic products. This recipe shows how to create a campaign that provides a discount of a free item when qualifying products are purchased.

These campaigns are ideal for use as reward coupons for stamp cards, specific products, or category-specific promotions.

For more campaign options, refer to the Campaigns Create API reference and Campaign Best Practices.

🖼 Recipe Overview

This recipe will show you the steps to create a campaign that offers 10x points on the purchase of selected products (e.g. apples) when a minimum spend is met, with the following setup:

  • Product qualification: identified by UPC codes
  • Reward: free product on qualified purchases
  • Redeemable at one banner and all stores within it
  • Coupon expires 30 days after being issued

📋 Prerequisites

  • 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
  • Product UPCs associated to the banner unit

📤 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 defines which products qualify for the offer, where it's valid, how many points are earned, and the campaign timeline.

  • 1.1 Campaign Name: Select a name for the campaign in the details container e.g. Free Coffee
  • 1.2 Campaign timing: Define the startDate and endDate
  • 1.3 Redemption Period: In rules.start and rules.expiry, set the coupon expiry dates expiry to 30 days after creation
  • 1.4 Redemption Locations: In partners.redemption, add the unitId for any banners where the coupon can be redeemed
  • 1.5 Select the appropriate type and offerType for Discount Products with a product qualification (additional types can be found on the Campaign Create Via API page:
    • type: DISCOUNT_PRODUCTS
    • offerType: VARIABLE_AMOUNT_OFF_PRODUCTS
  • 1.6 Product Qualification:
    • Include eligible UPC(s) under included.items
    • Define minimumProductSpend (e.g. 200 for £2.00)
    • Set minimumUnits to 1
  • 1.7 Use the banners incomingIdentifier as the key for offer.qualification.locations
  • 1.8 Product Reward:
    • Set the reward.product.incomginIdentifier.collections.[0].value.standard.allFree to true

Step 2: Call POST /campaigns

{
    "type": "DISCOUNT_PRODUCTS",
    "status": "ACTIVE",
    "class": "COUPON",
    "details": {
        "name": "Free Coffee",
        "alternativeName": "",
        "description": "",
        "alternativeDescription": "",
        "printerMessage": null,
        "screenMessage": null,
        "tags": [],
        "startDate": "2025-08-22T00: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": "UNLOADED"
    },
    "partners": {
        "creation": [],
        "redemption": [
            {
                "partner": "220673",
                "redemptionLimit": null
            }
        ]
    },
    "rules": {
        "creation": {
            "campaignLimit": null,
            "consumerLimit": null,
            "consumerLimitActive": 1,
            "windows": {
                "active": false
            }
        },
        "adjudication": {
            "excludedProducts": null
        },
        "verification": {
            "lock": false,
            "lockOnVerify": true
        },
        "redemption": {
            "couponLimit": 1,
            "windows": {
                "active": false
            },
            "dates": {
                "exclusion": {
                    "active": false
                }
            }
        },
        "refund": {
            "refundable": true,
            "unredeemable": false
        },
        "expiry": {
            "type": "CAMPAIGN_END",
            "valueType": null,
            "value": null,
            "date": null
        },
        "start": null
    },
    "windows": {
        "creation": [],
        "redemption": []
    },
    "dates": {
        "redemption": {
            "redemption": [],
            "exclusion": []
        }
    },
    "offer": {
        "offerType": "VARIABLE_AMOUNT_OFF_PRODUCTS",
        "qualification": {
            "locations": {
                "banner1": {
                    "included": {
                        "locationIdentifiers": null,
                        "locationTags": null
                    },
                    "excluded": {
                        "locationIdentifiers": null,
                        "locationTags": null
                    }
                }
            },
            "product": {
                "banner1": {
                    "logicalOperator": "OR",
                    "collections": [
                        {
                            "products": {
                                "allRequired": false,
                                "included": {
                                    "items": [
                                        "245876"
                                    ]
                                },
                                "excluded": null
                            },
                            "minimumProductSpend": 1,
                            "minimumUnits": 1,
                            "maximumUnits": 1
                        }
                    ]
                }
            },
            "globalProductRestrictions": {
                "enabled": true
            }
        },
        "reward": {
            "basket": null,
            "product": {
                "banner1": {
                    "logicalOperator": "OR",
                    "collections": [
                        {
                            "products": {
                                "allRequired": false,
                                "included": {
                                    "items": [
                                        "245876"
                                    ]
                                },
                                "excluded": null
                            },
                            "value": {
                                "interval": null,
                                "standard": {
                                    "percentageAmount": null,
                                    "allFree": true,
                                    "discountAmount": null,
                                    "finalAmount": null
                                }
                            },
                            "maximumNumberOfUnits": 1,
                            "minimumNumberOfUnits": 1
                        }
                    ]
                }
            }
        }
    },
    "version": 2
}
{
    "id": "101490145",
    "type": "DISCOUNT_PRODUCTS",
    "status": "ACTIVE",
    "class": "COUPON",
    "details": {
        "name": "Free Coffee",
        "alternativeName": "",
        "description": "",
        "alternativeDescription": "",
        "printerMessage": null,
        "screenMessage": null,
        "tags": [],
        "startDate": "2025-08-22T00: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": "UNLOADED"
    },
    "partners": {
        "creation": [],
        "redemption": [
            {
                "partner": "220673",
                "redemptionLimit": null
            }
        ]
    },
    "rules": {
        "creation": {
            "campaignLimit": null,
            "consumerLimit": null,
            "consumerLimitActive": 1,
            "windows": {
                "active": false
            }
        },
        "adjudication": {
            "excludedProducts": null
        },
        "verification": {
            "lock": false,
            "lockOnVerify": true
        },
        "redemption": {
            "maxRedemptionsPerPeriod": null,
            "campaignLimit": null,
            "couponLimit": 1,
            "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": {
            "refundable": true,
            "unredeemable": false
        },
        "locations": null,
        "expiry": {
            "type": "CAMPAIGN_END",
            "valueType": null,
            "value": null,
            "date": null
        },
        "start": null,
        "graceAmount": null,
        "useLocalTime": null,
        "maxCreditsPerPeriod": null
    },
    "windows": {
        "creation": [],
        "redemption": []
    },
    "dates": {
        "redemption": {
            "redemption": [],
            "exclusion": []
        }
    },
    "relationships": null,
    "reference": "101490145",
    "offer": {
        "offerType": "VARIABLE_AMOUNT_OFF_PRODUCTS",
        "qualification": {
            "locations": {
                "banner1": {
                    "included": {
                        "locationIdentifiers": null,
                        "locationTags": null
                    },
                    "excluded": {
                        "locationIdentifiers": null,
                        "locationTags": null
                    }
                }
            },
            "product": {
                "banner1": {
                    "logicalOperator": "OR",
                    "collections": [
                        {
                            "products": {
                                "allRequired": false,
                                "included": {
                                    "items": [
                                        "245876"
                                    ]
                                },
                                "excluded": null
                            },
                            "minimumProductSpend": 1,
                            "minimumUnits": 1,
                            "maximumUnits": 1
                        }
                    ]
                }
            },
            "globalProductRestrictions": {
                "enabled": true
            },
            "tenders": null,
            "identityTypes": null
        },
        "reward": {
            "basket": null,
            "product": {
                "banner1": {
                    "logicalOperator": "OR",
                    "collections": [
                        {
                            "products": {
                                "allRequired": false,
                                "included": {
                                    "items": [
                                        "245876"
                                    ]
                                },
                                "excluded": null
                            },
                            "value": {
                                "interval": null,
                                "standard": {
                                    "percentageAmount": null,
                                    "allFree": true,
                                    "discountAmount": null,
                                    "finalAmount": null
                                }
                            },
                            "maximumNumberOfUnits": 1,
                            "minimumNumberOfUnits": 1
                        }
                    ]
                }
            }
        },
        "promoId": null
    },
    "version": 2,
    "dateCreated": "2025-08-22T12:43:44+00:00",
    "lastUpdated": "2025-08-22T12:43:44+00:00"
}

✅ 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
  • Coupon expiry is set to 30 days after creation
  • Spend qualification logic is correct (product spend)
  • Redemption banners are correctly listed by unitId and incomingIdentifier
  • Reward setup reflects allFree: true
  • Create a coupon account to test and validate the coupon can be issued

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