Coupons
    • 18 Minutes to read

      Coupons


        Article summary

        Antavo’s Coupons module serves as a centralized platform for defining and managing all coupons within the loyalty program in one place. The coupon pools can be used across various modules, including Rewards, the Offers, and Workflows.

        To access the module configuration page, search for Coupons under the Modules menu. The page will display the list of coupon pools configured within the module, along with the following details:

        Name

        The name of the coupon pool

        Source

        The source of the coupon codes (generated, uploaded, remote, bulk-generated)

        Type

        The type of coupons (amount, percentage, free shipping, gift card)

        Value

        The value assigned to the coupons

        Creating a new coupon pool

        📓

        You can access and display all the information configured in the Coupons module on the membership site through the Display API, the Entities API and the Coupon API. Please work with your developers to implement the necessary calls for integration.

        • Click the Create coupon pool option in the sidebar

        • Add the name of the coupon pool

        Coupon source

        • Select one of the four coupon sources: uploaded, generation, remote or bulk generation.

        Generation and bulk generation

        If you want Antavo to generate codes, define the coupon pattern using placeholder characters:

        • # for a digit (0-9)

        • @ for an alphabet character (a-z)

        • ^ for a capital alphabet character (A-Z)

        • * for an alphanumeric character

        • $ for a capital alphanumeric character

        All other characters should be added as literals (eg. if you set '@##COUPON’, a generated coupon code could be G11COUPON or T35COUPON).

        If you would like to assign a generic coupon code to all customers, don’t use pattern characters, only literals (eg. if you set ‘SPRINGCOUPON’, all coupon codes to each customer will be generated as SPRINGCOUPON)

        However, when defining the pattern of bulk-generated coupons, you must add at least 4 variables, which ensures that coupons can serve high demands.

        ⚠️

        Each coupon pool must have a unique pattern.

        Bulk-generation settings

        Coupon pools with bulk-generated sources offer specific settings for customization:

        • Exclude characters
          Specify any characters, separated by commas, that you want to exclude from coupon code generation to prevent confusion of similar characters (eg. O and 0 or 1 and I). Remember to list both lowercase and uppercase letters separately.

        📓

        As you add new excluded characters, the Number of unique combinations information under the Pattern configuration field dynamically calculates the total number of coupon combinations available .

        • Exclude phrases
          List specific phrases that you wish to exclude from coupon code generation to avoid unintentional or inappropriate text usage.

        • Number of coupons
          Define the number of coupons to generate, ranging from 1 to 100 million. Note that the number of coupons generated must not exceed 1% of the possible variations within the coupon pattern. This prevents the customers from making lucky guesses on valid coupon codes. The maximum number of coupon codes is determined by the coupon pattern and is displayed in the help text. Be aware that this number might decrease if certain characters or phrases are excluded.

        Upload

        Select the upload option if you want to upload a set of coupons for distribution. Each coupon code can only be uploaded to one coupon pool; duplications are skipped automatically during the import process.

        Remote

        If you’d like to maintain control over coupon management, you can set a callback URL endpoint that serves Antavo with coupon codes to issue. When generated by the external system, it is also determined to whom the coupon is assigned, thus facilitating validation. The process requires the URL endpoint to receive POST requests from Antavo and responds with a coupon code.

        Whenever the system requests a code, it will send the following request:

        {
        "api_key" => "DEMODEMODEMOSDJDSIFDKDF", 
           "coupon_percentage" => "20", 
           "value" => "THE COUPON VALUE", 
           "customer" => "53626328374843843", 
           "type" => "percentage"
        }
        • The API key must be checked against a stored API key to prevent any malicious requests to generate coupon codes

        • The percentage value of the percentage-type coupon

        • The value of the amount-type coupon

        • Customer identifier

        • Any other potential values

        As a response, the system expects the code in the following format:

        {
           "code" => "COUPON CODE"
        }

        If the system receives the coupon code, it is automatically passed on to the customer.

        General settings

        • Define the type of coupons in the pool

          • Fix amount

          • Percentage-off

          • Free shipping

          • Gift card
            Customers can use gift card coupons at multiple checkouts until the entire monetary value is spent.

        • Define the value of the coupons in the pool - not applicable to free shipping coupons

        Restrictions

        • Add a minimum value – only applicable to gift card coupons
          The gift card will be invalidated if the balance falls below this amount. For example, if a $100 gift card has its minimum value of $1 and the customer uses the gift card to pay $99.5, then the card balance falls below $1 and the card will be voided.

        • Add a minimum redemption value - only applicable to gift card coupons
          The customer must use at least this amount of the gift card each time they redeem it at checkout to reduce the basket value. For example, if the customer wants to redeem $10 of its $100 gift card to pay partially at purchase, but the minimum redemption value is $15, the redemption would fail with an error message.

        • Add a purchase minimum
          Restrict the usage of a coupon to a minimum basket value.

        • Set an expiration period
          The coupon code's expiration date is calculated from when the coupon was assigned to the customer.

        • Add stores
          Pre-defined offline stores created/listed within the Stores module can be used to localize the validity of the coupon codes.

        • Decide if you want to assign an aggregated coupon
          Tick the checkbox to have the same coupon code assigned each time this coupon pool issues a coupon for one specific customer.

        • Add products
          It is possible to create and redeem coupons for individual products by selecting item(s) (previously added in the Product catalog module) to which the discount should apply.

        ⚠️

        Please keep in mind that Antavo doesn’t handle coupon validation at checkout. We provide all the information about restrictions type and the value of the coupon through API endpoints, but you need to take care of checking the eligibility and reducing the total value of the basket when the customer redeems the coupon code.

        Pass template

        If you use the Wallet module, you might want to select a pass template to be assigned to the coupons in the currently configured pool. The coupon pass that customers can add to their wallet application will be generated based on the selected pass template.

        User group

        If you use the User groups module and have enabled the Coupon pool and Coupons entities in the settings, you need to assign a group to the coupon pool. Unauthorized users won’t be able to access the coupon pool in the Management UI and the corresponding coupon statistics.

        Saving a coupon pool

        Don’t forget to click the Save button at the end of the configuration process.

        Uploading coupons

        • Click the Upload coupons option in the sidebar
          You’ll be redirected to the coupon import page of the Imports module.

        • Click Choose file to upload a CSV format file with one code in each row
          You can find the data fields you can include in the CSV in the Name column under the Fields section.

        • Click Upload at the bottom of the page

        • Configure the file import as per your need, and ensure the correct coupon pool is selected in the Coupon pool dropdown field under Module options.

        • Click Start import

        Right after the import is completed, coupons will appear in the list with a Not claimed yet label.

        Bulk-generating coupons

        • Navigate to the module configuration page

        • Click the Edit button of the bulk-generated coupon pool to which you’d like to generate coupon codes

        • Navigate to the Coupons tab

        • Click the Click here to start generation process link in the infobox

        • Enter the number of coupons you’d like to generate

        You can generate a maximum of 5 million coupons at a time to ensure that all coupons in the batch are generated without delays.

        • Click the Start generation button
          The coupon generation process will start immediately, and coupons will be populated on the page.

        After the first coupon generation, you can generate further coupons by clicking the Bulk generation button at the top of the list.

        Settings

        Under the Settings tab, you can find a checkbox to enable the Auto redeem functionality. This means that the Coupon redeem event does not have to be sent to set the coupon status to redeemed. Instead, if the coupon code is included in the Checkout event, the Coupon redeem event is automatically registered.

        Coupons

        By navigating to the Coupons tab you can find the searchable and selectable list of coupons that have been uploaded or bulk-generated and/or assigned with the following information:

        Code

        Coupon code

        Customer

        Assignee of the coupon

        Claimed at

        Date of the coupon assignment

        Expiration date Value

        Expiration date of the coupon

        Status

        • Unassigned: The coupon has been uploaded, but not claimed by a customer yet.

        • Claimed: The customer has spent points to get the coupon reward or it was assigned by a Management UI user manually or by a workflow.

        • Redeemed: The customer has used the coupon at checkout. Please note that usage information is only available if the coupon was redeemed by a Management UI user manually or if the applied coupon code has been provided in the Checkout event. A coupon that has been uploaded to a coupon pool can be redeemed without being assigned to a customer first.

        • Expired: The coupon has been claimed but expired without being used.

        • Invalid: The coupon has been invalidated by a Management UI user.

        Usages

        The number of times the coupon code has been used in a purchase

        Invalidate coupons

        Please note that only coupons with claimed and unassigned statuses can be invalidated.

        Invalidate one single coupon

        This method is available only for coupons with claimed status.

        • Click the hamburger button of the coupon code

        • Click Invalidate

        • Confirm the invalidation action

        Invalidate multiple coupons at the same time

        • Tick the checkbox of each coupon code you’d like to invalidate

        • Click the blue Invalidate selected button at the top of the page

        • Confirm the invalidation action

        The manual invalidation action updates the status of the coupon to invalid. If the coupon had been claimed and assigned to a customer, it triggers the registration of the coupon_invalidate event on the event history of the assignee of the coupon.

        Unassign coupons

        Please note that only assigned coupons can be unassigned.

        Unassign one single coupon

        • Click the hamburger button of the coupon code

        • Click Unassign

        • Confirm the unassign action

        Unassign multiple coupons at the same time

        • Tick the checkbox of each coupon code you’d like to unassign

        • Click the blue Unassign selected button at the top of the page

        • Confirm the unassign action

        As a result, the Claimed at date will be cleared for the coupon, and a coupon_unassign event will be recorded in the customer's event history. Also, the number of claims for the coupon will be set to 0.

        📓

        Unassigning a coupon does not invalidate it. It simply removes the assignment from the current customer, allowing it to be assigned to another customer later.

        Transfer coupons

        Please note that only coupons with claimed status can be transferred.

        • Click the hamburger button of the coupon code

        • Click Transfer

        • Enter the ID of the customer who will receive the coupon in the Target Customer ID field, and/or enter the ID of the customer who will receive the coupon in the Target Customer email field

        • Click Transfer

        The manual transfer action triggers the registration of the coupon_transfer event on the event history of the previous assignee and the coupon_receive event on the event history of the new assignee.

        Redeem coupons

        Please note that only coupons with claimed status can be redeemed.

        To redeem a coupon manually:

        • Tick the checkbox of each coupon code you’d like to redeem

        • Click the blue Redeem selected button at the top of the page

        • Confirm the redeem action

        The manual redemption triggers the registration of the coupon_redeem event on the event history of the assignee and increments the number of coupon usage.

        📓

        Please note that uploaded coupons may be redeemed even before being claimed by sending a coupon_redeem event through the Events API. If the event is registered via API, the redeemed coupon gets assigned to the customer, the coupon code appears on the customer’s Coupons page and the customer is added to the coupon on the pool’s Coupons page.

        Unredeem coupons

        Please note that only coupons with redeemed status can be unredeemed.

        Unredeem one single coupon

        • Click the hamburger button of the coupon code

        • Click Mark as unredeemed

        • Confirm the unredeem action

        Unredeem multiple coupons at the same time

        • Tick the checkbox of each coupon code you’d like to invalidate

        • Click the blue Unredeem selected button at the top of the page

        • Confirm the unredeem action

        The unredeeem action updates the status of the coupon to claimed, triggers the registration of the coupon_unredeem event on the event history of the assignee, and reduces the number of coupon usages.

        Managing coupon pools

        Editing a coupon pool

        • Go to the Coupons page

        • Click on the coupon pool in the list that you want to edit

        • Edit the coupon pool
          Please note that the source and pattern cannot be edited once Save and generate is clicked for bulk-generated coupons

        • Updating Coupons
          This section allows you to update any property of the coupon pool and apply it to all, or a specific subset of coupons in the pool.

          • Update Criteria:

            • Do not update coupons: Only the coupons that are added from now on will inherit the new pool properties

            • Update unassigned coupons: Coupons created but not yet assigned to a customer will inherit the new pool properties.

            • Update not yet redeemed coupons: Coupons that are assigned but not yet redeemed will inherit the new pool properties.

            • Update all coupons: All coupons will inherit the coupon pool’s properties.

          • Matching

            • Select this option if you want to update only those coupons with a value field that matches the original number.

        Don’t forget to save your changes by clicking Save.

        Deleting a coupon pool

        It is important to note that once created, coupon pools cannot be deleted. If you no longer wish to use a specific coupon pool, ensure it is not selected in the configuration interface of loyalty program functionalities. This prevents the system from using the coupons from that pool.