ChangelogBook a demoSign up

Coupon assignment

Overview

Coupon assignment lets you attach per-user values (such as coupon codes or offer metadata) after defining an audience and before sending data to your destinations.

This is useful when:

  • you need to assign unique values per user (e.g. single-use coupons)
  • values come from a shared dataset (e.g. a coupon table)
  • you shouldn't assign a coupon to a user that isn't in your campaign

How it works

Coupon assignment happens inside an audience-based Journey. For each user, Hightouch assigns a value from a dataset and makes it available for downstream syncs.


Example

  • Parent model: 10,000 users
  • Campaign A audience: 500 users
  • Coupon pool: 500+ unique codes

Step 1: Create a coupon pool

Create a table in your warehouse that contains your coupon data.

Include:

  • a coupon value column (e.g. coupon_code)
  • optional metadata (e.g. expiration_date)
  • a column filter on if you have cross-campaign coupons consolidated in one model (e.g. campaign_id)

You can set it up in your Customer Studio schema with a coupons tag.

Coupon parent model


Step 2: Create an audience and Journey

Build an audience for your campaign (e.g. Campaign A) and create a Journey with:

User is in Audience: Campaign A

Only users in this audience will receive a coupon.

Coupon audience setup

Event based journeys are not supported.


Step 3: Add a coupon assignment node

In the Assign coupon node:

  • select your coupon dataset
  • apply filters (e.g. campaign_id = 10_dollars_off)
  • choose an "assignment" columns (e.g. coupon_code). This is the column that will be unique (1:1) to a user.
  • choose any additional columns to assign (e.g. expiration_date, coupon_threshold). These do not need to be unique to the user.
  • define variable names

Coupon node setup

For each user:

  1. Reuse existing assignment (if present)
  2. Assign a new coupon (if not)
  3. Store the result in:
    • Journey variables (for syncs)
    • Journey logs

Assignments are deterministic per coupon journey node: the same user will receive the same values when entering the same journey node.


Step 4: Sync assigned values

Use the assigned variables in a Sync node (e.g. to Braze or Salesforce). If you do not see the assigned variables in the Sync node, make sure to save the Journey first.

Coupon syncing


Tracking

Assignments are recorded in Journey logs and can be used to:

  • map coupons to users
  • join with downstream usage or redemption data

Behavior and constraints

  • Inventory required: If coupons < audience size, the Journey fails before sending.
  • Consistent assignment: Even if the underlying coupon pool changes, what coupon and coupon metadata a user is assigned stays the same if they visit the same coupon assignment node again. If you would like the user to be assigned a different value, use a different coupon assignment node.

Ready to get started?

Jump right in or a book a demo. Your first destination is always free.

Book a demoSign upBook a demo

Need help?

Our team is relentlessly focused on your success. Don't hesitate to reach out!

Feature requests?

We'd love to hear your suggestions for integrations and other features.

Privacy PolicyTerms of Service

Last updated: Apr 16, 2026

On this page
  • Overview
  • How it works
  • Example
  • Step 1: Create a coupon pool
  • Step 2: Create an audience and Journey
  • Step 3: Add a coupon assignment node
  • Step 4: Sync assigned values
  • Tracking
  • Behavior and constraints

Was this page helpful?