Vouchers are text codes customers use to redeem discounts or special offers in your online store. You can share these codes with customers through your campaigns.

To insert a voucher into a campaign, you can use the same code for every customer or send unique codes to each. The Vouchers feature in Bloomreach Engagement lets you load a pool of vouchers, insert them into campaigns, and track their usage.

📘

Note

The Vouchers feature does not replace your voucher system, which applies the appropriate discounts when a customer uses a voucher.

Import vouchers

You can import vouchers from multiple data sources. Prepare a pre-generated list of unique voucher codes in a single column with a header. If a code already exists in the pool, it will be ignored. You cannot import the same code into multiple voucher pools.

Name your vouchers

Group your vouchers and name the voucher pools for easy identification, such as 10%Discount or 100EURoff or by campaign name. Ensure the voucher name has no spaces to avoid errors.

Single import

After you have the codes:

  1. Go to Data & Assets > Imports.
  2. Click + New Import .
  3. Click Vouchers.
  4. Choose an existing voucher pool to add new voucher codes or create a new one.
  5. Select the data source you want to use.
  6. Click Preview to verify the Delimiter and Encoding settings.
  7. Click Next.
  8. Drag the blue box to assign the code ID.
    1. You can only import one column containing the voucher codes

Schedule a repeated import

If you import from a URL, database, or a Bloomreach Engagement analysis, you can schedule a repeated import.

  1. Click Run Import.
  2. Return to Data & Assets > Imports to review the import. Make sure all rows (vouchers) were imported correctly.

You can view all your imported voucher pools in Data & Assets > Vouchers.

Use vouchers

Before using vouchers for the first time, ensure you track voucher usage during purchases, including the voucher code itself.

Track vouchers

Go to Project Settings > Mapping > Vouchers and specify where the voucher code is tracked after use. This allows Bloomreach Engagement to recognize when a specific voucher is redeemed. For example, if you track voucher codes as an attribute of an event purchase named "voucher_code," the mapping should look like this:

The mapped attribute for tracking redeemed vouchers must be a string.

Personalize vouchers

Access vouchers using Jinja. The Personalization wizard can help you generate the correct syntax.

Count available codes and Count total codes are useful for reporting purposes, such as sending automation notices through email or webhook when the number of available codes becomes too small.

Assign available code

This process selects an available voucher code from the pool, changes its status from available to assigned, and displays the code in the campaign. Codes are assigned when the campaign is executed, such as when a weblayer is shown to a customer or an email campaign with the code is sent (including test campaigns). There is no limit to the number of vouchers a customer can be assigned.

Count available codes

This returns the number of currently available codes in a voucher pool.

Count total codes

This returns the total number of all codes in a voucher pool.

Assign available voucher codes

Each time you use the code vouchers['voucher_xy'].assign_available(), it assigns a voucher code from the pool. By default, it reuses the same code within the same email, SMS, or MMS to the same customer if you use it multiple times.

If you need to display different vouchers to the same customer within a campaign, set the cached parameter to false using the format ['voucher_xy'].assign_available(cached = false). This will generate a new voucher for each occurrence within the campaign.

Note that setting the cached parameter to false does not apply in the preview email function; the same voucher will appear in the preview. If you change the default with the cached parameter set to false, the customer will receive an email with a different voucher.

To check if and when a voucher was assigned or redeemed, go to Data & Assets > Vouchers and select the voucher pool.

Reuse vouchers

Voucher codes are assigned using the Jinja code {{vouchers['voucherpool_name'].assign_available()}}, which randomly selects a code from the pool. By default, Engagement does not track which code was assigned to which user, limiting the ability to reuse the same code for the same user in future campaigns.

You can reuse the same voucher code in 2 ways:

  • Add it as a custom customer attribute and use {{ customer.attribute_name }} in Jinja to retrieve the voucher. These codes don't need to be unique.
  • Assign the voucher as a custom event attribute to be called through aggregate, allowing repeated use.

Use the custom events approach if you want to track which voucher a customer received and when. Custom events can store this information along with any additional data.

Custom customer attributes to reuse voucher codes

This is the simpler of the two solutions. Create a new attribute in Data Manager and give it a name you can later identify as a voucher (e.g., voucher, temp_voucher, voucher_assigned).

This custom customer attribute can be populated in 2 ways:

  • Using the Set attribute node in scenarios
  • Importing customer attributes

Set attribute node in scenarios

The first method is using the Set attribute node in scenarios.

This guide will provide instructions on assigning vouchers using the Set attribute node later.

Import customer attributes

The second method to assign voucher codes as attributes is to import them using the Customer attributes import instead of the Vouchers import, which is typically used for uploading vouchers.

Once the vouchers are updated, the attribute will look something like this:

voucher attribute showing its name as testvoucher

Use the basic Jinja code {{ customer.voucher }} to display the voucher code every time you need to display this particular code.

This solution works best when you have fewer customers to assign vouchers to, as you'll need to update the attribute each time you assign new vouchers.

Custom event attribute to reuse voucher codes

  1. Create a new event
  2. Name the event, for example, voucher or voucher_assigned
  3. Add attributes to the event, such as type, voucher_code, and status. Adding attributes to the voucher event will help you define the specific voucher for analyses and dashboards.
  1. Open scenarios. Add the Add event node and place it before the email node to add the voucher event.
  1. Open the Add event node and use Jinja to assign vouchers.
  1. Customers who pass through the add event node will have a voucher code assigned in the voucher_code attribute.
  1. Create an aggregate that will look for the voucher code attribute for each customer at the last voucher event. Narrow it by attribute type and status to ensure the aggregate pulls only the latest voucher_code for the relevant campaign.
  1. Once the aggregate is created, use the Jinja for this particular aggregate to call the voucher_code attribute whenever you want to display the voucher code.

Running out of assignable vouchers

Email campaigns

If there are no voucher codes to assign, the campaigns will fail to be sent, generating campaign events with status = enqueue_failed.

Weblayer campaigns

If there are no voucher codes to assign, weblayers will not be displayed and will not generate events.