| Audience | Technical marketers, marketing and lifecycle teams |
| Prerequisites | Prepare data for AID → |
Connect Iterable to AI Decisioning so agents can deliver personalized emails, SMS, push notifications, and in-app messages through your existing Iterable Triggered Campaigns.
What you'll learn
In this article, you'll learn how to:
- Set up Iterable as a destination
- Add channels in AI Decisioning
- Add messages from Iterable
- Configure Iterable Triggered Campaigns for AID
- Use dynamic variables in Iterable templates
Overview
Delivering relevant and timely customer experiences in Iterable requires up-to-date, contextual data. By integrating Hightouch's AI Decisioning (AID) with Iterable, you can:
-
Automatically trigger Iterable campaigns based on predictions and behaviors surfaced by AID Agents
-
Personalize message content using dynamic variables from your data warehouse
-
Centralize targeting and decision logic in Hightouch, while using Iterable to handle message delivery
1. Set Up Iterable as a Destination
Follow the destination setup guide up to Sync Configuration. Once connected, Iterable will be available as a destination in AI Decisioning.
2. Add Channels in AI Decisioning
Once Iterable is set up as a destination, you can add channels. Channels define how Hightouch sends messages to Iterable via Triggered Campaigns.
Set up a channel
- Go to
AI Decisioning → Configuration → Channels. - Click
Add channel.

- Choose a channel type:
- Email – for triggered email sends
- SMS – for triggered text messages
- Push – for mobile push notifications
- In-App – for in-app messaging (popups, inbox cards, etc.)
- Select Iterable as the destination.
- Under Identifier type, choose how to match users:
- Email – match by email address
- User ID – match by unique ID
- Choose the identifier field from your model (for example,
user.emailoruser.id). - Click
Add channel, thenSave changes.

Identifier type comparison
| Identifier | Description | Use when |
|---|---|---|
| Matches users based on email address | Campaigns primarily use email for targeting | |
| User ID | Matches users using their unique ID | Source data uses internal IDs or email isn't guaranteed |
Both identifier types support all channel types (Email, SMS, Push, and In-App).
3. Add Messages
After you add channels in AI Decisioning, you can add messages to your agents. Each message connects an agent's decision to an Iterable Triggered Campaign.
For full details on message configuration, variants, and tags, see Messages →.
Add a message from Iterable
- Go to
AI Decisioning → Agentsand select your agent. - Open the
Messagestab. - Click
Add messages, then select Add messages individually. - Select your configured Iterable channel and destination tile (for example, Email - Iterable).
- Select an Iterable template.
- Enter a message name (for example,
Cart Abandonment SMS) and clickAdd messages.

You can repeat this process for each channel type:
| Channel type | Campaign type | Description |
|---|---|---|
| Triggered | Real-time personalized emails | |
| SMS | Triggered | Time-sensitive text alerts |
| Push | Triggered | Native app push notifications |
| In-App | Triggered | Contextual popups and messages |
Test a message
- Open the message and go to the
Contenttab. - Under Optimized content, confirm your variants are configured. If your message uses dynamic variables, set values for testing.
- In the Preview panel, verify the rendered message looks correct.
- Click
Send testto send the message to a test user in Iterable.

How Iterable Templates and Campaigns Work with Hightouch
When creating an Iterable message in Hightouch, you're not sending the base template directly. Instead, Hightouch clones the template to create a new Triggered Campaign.
What happens behind the scenes
- You select an existing Iterable template (by Template ID).
- When you click Add messages, Hightouch:
- Clones the template
- Creates a new Campaign ID

- Hightouch uses the new campaign ID to send messages via API—not the original template.

Why this matters
- Hightouch sends through the new campaign, not the original.
- To update message content, edit the new campaign version—not the base template.
How to find the right campaign
-
Open the Content tab in the message:
AI Decisioning → Agents → [Select Agent] → Messages → [Select Message] → Content -
Click the link next to Base content to open the Iterable campaign.

4. Configure Iterable Triggered Campaigns for AID
Before adding a message in Hightouch, you need to configure or create the corresponding Triggered Campaign in Iterable.
In Iterable
- Go to Messaging > Campaigns.
- Click New Campaign > Triggered Campaign.
- Select the message type.
- Design your template and publish the campaign.
- Copy the Campaign ID or API Trigger Name.
In Hightouch
- Select the template when adding a message.
- Test the message to confirm delivery.
5. Use Variables in Iterable Templates
Hightouch variables allow you to personalize Iterable messages using live warehouse data, any variable you've defined within the message such as subject line variations, or different content blocks in your Iterable library.
Access variables
- Open a message in Hightouch and go to the
Contenttab. - Under Optimized content, expand a content type (for example, subject or body) and add your variants.
- Click the
...menu on a content type and selectCopy code snippetto get the variable code. - In Iterable, paste the variable tag into the corresponding field in your message template.

Important notes
- Variables are fully supported in Triggered Campaigns.
- Make sure your Iterable template references the correct variable syntax from the code snippet.
Troubleshooting
| Issue | Likely cause | Resolution |
|---|---|---|
| Message fails to send | API errors or misconfigured destination | Check Hightouch logs for API errors. |
| Test user not receiving messages | Identifier mismatch | Verify the identifier (email or user ID) matches a record in Iterable. |
| Campaign sends not triggering | Campaign not published or misconfigured | Confirm the campaign is live and triggerable in Iterable. |
| Variables not rendering | Incorrect syntax or missing field mapping | Double-check variable syntax from Copy code snippet and field mapping. |