> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hightouch.com/llms.txt
> Use this file to discover all available pages before exploring further.

# QA guide

> Use this checklist to QA your messages before launching an AI Decisioning agent.

## Before you begin

* At least one [agent](https://docs.hightouch.com/ai-decisioning/agents.md) with [messages](https://docs.hightouch.com/ai-decisioning/messages.md) configured
* A connected destination ([Braze](https://docs.hightouch.com/ai-decisioning/braze.md), [Iterable](https://docs.hightouch.com/ai-decisioning/iterable.md), or [Salesforce Marketing Cloud](https://docs.hightouch.com/ai-decisioning/sfmc.md))

## Why QA in AI Decisioning

Your team has likely already QA'd creatives before adding them to AI Decisioning. This guide covers the additional QA you should run inside AID — specifically for things AID introduces on top of your existing creative workflow:

* **Variants** — AID can serve different subject lines, images, CTAs, and more. You need to confirm every option renders correctly.
* **Payload fields** — AID passes user data (like first name or product recommendations) to your messaging platform. You need to confirm these populate in the rendered message.
* **Targeting and send rules** — AID applies audience eligibility, send limits, and timing at the message, variant-type, and individual-variant levels. You need to confirm these match your campaign intent.
* **UTM parameters** — AID constructs links with tracking parameters. You need to confirm URLs resolve correctly and UTMs are intact.

> [!TIP]
>
> Run through this checklist whenever you launch a new agent, add or update
> messages, or change targeting rules.

## How to preview and test variants

A single message in AID can have multiple **variant types** (for example, subject line, image, CTA). Each variant type can have multiple **options**. To QA your message, you preview and test each option individually.

For each variant option:

1. **Preview the variant** — In your message’s **Content** tab, expand the variant type you want to test (for example, **subject**) and click the **eye icon** next to the option you want to preview. The **"Now previewing"** banner confirms the option is selected.

![Clicking the eye icon to preview a subject line variant. The "Now previewing" banner appears in the preview pane.](https://mintcdn.com/hightouch-3c037897/L_vQfA0JQEpeGUUo/images/ai-decisioning/qa-guide/aid-qa-email-variant-preview-subject.png?fit=max\&auto=format\&n=L_vQfA0JQEpeGUUo\&q=85\&s=80b4543e19e595a637786fe49cca4858)

2. **Send a test** — Click **Send test**. In the dialog that appears, enter the identifier for your test user (for example, an email address or user ID) and click **Send test**. The test message uses exactly the variant options you’ve selected.

![Clicking the Send test button.](https://mintcdn.com/hightouch-3c037897/L_vQfA0JQEpeGUUo/images/ai-decisioning/sfmc/aid-sfmc-send-test.png?fit=max\&auto=format\&n=L_vQfA0JQEpeGUUo\&q=85\&s=5daa41fd330ef196755d49820fb7fc2f)

![The Send test dialog, where you enter the identifier for your test user.](https://mintcdn.com/hightouch-3c037897/L_vQfA0JQEpeGUUo/images/ai-decisioning/qa-guide/aid-qa-test-send-callout.png?fit=max\&auto=format\&n=L_vQfA0JQEpeGUUo\&q=85\&s=e0c4296919ede3fa928c288e7ed2961e)

3. **Check the test message** — Open the test email, SMS, or push notification and verify the content renders as expected. Use the [channel-specific checklists](#email-qa) below to know what to look for.

4. **Repeat for each variant option** until you’ve tested every option across all variant types.

5. After testing all variants, switch to the **Configuration** tab to review message-level settings like send limits, timing, and audience eligibility. See the [channel-specific checklists](#email-qa) below for the full list of configuration checks.

> [!NOTE]
>
> "Now previewing" is not just a visual preview. It determines what gets sent in
> your test message.

## Email QA

Preview and test each variant option in the **Content** tab, then confirm your send rules in the **Configuration** tab.

Go to: `AI Decisioning > Agents > [Your Agent] > Messages > [Your Message]`

### Content tab

If your message uses variants, [preview and test each option](#how-to-preview-and-test-variants) as you work through the checks below.

* [ ] [Sender and metadata](#sender-and-metadata)
* [ ] [Subject line and preheader](#subject-line-and-preheader)
* [ ] [Body content](#body-content)
* [ ] [Links and CTAs](#links-and-ctas)
* [ ] [Footer](#footer)
* [ ] [Variant-type send limits](#variant-type-send-limits)
* [ ] [Individual variant eligibility](#individual-variant-eligibility)

#### Sender and metadata

* Confirm the **sender email address** matches what recipients should see in their inbox.

#### Subject line and preheader

![Previewing a subject line variant](https://mintcdn.com/hightouch-3c037897/L_vQfA0JQEpeGUUo/images/ai-decisioning/qa-guide/aid-qa-email-variant-preview-subject.png?fit=max\&auto=format\&n=L_vQfA0JQEpeGUUo\&q=85\&s=80b4543e19e595a637786fe49cca4858)

* Confirm the subject line and preheader render correctly for each variant.
* Confirm personalization tokens (first name, dynamic fields, etc.) populate with real user data — not placeholder text or blanks.

#### Body content

![Previewing a body content variant](https://mintcdn.com/hightouch-3c037897/L_vQfA0JQEpeGUUo/images/ai-decisioning/qa-guide/aid-qa-email-variant-preview-body.png?fit=max\&auto=format\&n=L_vQfA0JQEpeGUUo\&q=85\&s=6943ecf0186c461e5d8246fbc33bd6a8)

* Confirm the content matches your intended messaging and layout.
* Confirm images render correctly and include alt text.
* Confirm dynamic or conditional content behaves as expected for different audience segments.

#### Links and CTAs

AID constructs the final URL including UTM parameters, so check the full link — not just the display text.

![Previewing a CTA variant](https://mintcdn.com/hightouch-3c037897/L_vQfA0JQEpeGUUo/images/ai-decisioning/qa-guide/aid-qa-email-variant-preview-cta.png?fit=max\&auto=format\&n=L_vQfA0JQEpeGUUo\&q=85\&s=dca296dcf49a743c306ed3889314a0f8)

* Confirm all links and buttons lead to the correct destination.
* Confirm UTM parameters and tracking links are intact.

#### Footer

* Confirm the footer displays correctly.
* Confirm unsubscribe, privacy, and legal links work.

#### Variant-type send limits

These let you set send limits per variant type. For example, you can cap how often a specific subject line is sent to the same user. To access these, click **Send limit** at the top of a variant type section.

![Variant-level settings overview](https://mintcdn.com/hightouch-3c037897/L_vQfA0JQEpeGUUo/images/ai-decisioning/qa-guide/aid-qa-email-variant-timing-overview.png?fit=max\&auto=format\&n=L_vQfA0JQEpeGUUo\&q=85\&s=682e3e6b2d7de5a6b174df7904fb79c2)

![Send limit at the variant type level](https://mintcdn.com/hightouch-3c037897/L_vQfA0JQEpeGUUo/images/ai-decisioning/qa-guide/aid-qa-email-variant-timing-send-limit.png?fit=max\&auto=format\&n=L_vQfA0JQEpeGUUo\&q=85\&s=53ca16175d0c87d14a3b204855e040c2)

* Confirm send limits are set correctly for each variant type.

#### Individual variant eligibility

These let you restrict specific variant options to certain audience segments. For example, you can limit a "VIP exclusive" subject line to loyalty-tier users. To access these, hover over the **audience icon** to the right of a variant option and click **Add eligibility filters**.

![Audience eligibility at the individual variant option level](https://mintcdn.com/hightouch-3c037897/L_vQfA0JQEpeGUUo/images/ai-decisioning/qa-guide/aid-qa-email-variant-timing-eligibility.png?fit=max\&auto=format\&n=L_vQfA0JQEpeGUUo\&q=85\&s=cc752b3a01b8c8fdbeef012cbc18ec2f)

![Audience eligibility at the individual variant option level (continued)](https://mintcdn.com/hightouch-3c037897/L_vQfA0JQEpeGUUo/images/ai-decisioning/qa-guide/aid-qa-email-variant-timing-eligibility-2.png?fit=max\&auto=format\&n=L_vQfA0JQEpeGUUo\&q=85\&s=503dc4dc881973ee41cc3bc475844966)

* Confirm audience eligibility filters are correct for each variant option.

### Configuration tab

Expand the **Advanced** section.

* [ ] [Message-level settings](#message-level-settings)
* [ ] [Message status](#message-status)

#### Message-level settings

These apply to all variants of this message.

![Configuration tab showing advanced tab dropdown](https://mintcdn.com/hightouch-3c037897/L_vQfA0JQEpeGUUo/images/ai-decisioning/qa-guide/aid-qa-email-message-timing-send-limit.png?fit=max\&auto=format\&n=L_vQfA0JQEpeGUUo\&q=85\&s=d0e4a281c66654e00e98ae2c61cfb2f3)

![Message-level advanced settings](https://mintcdn.com/hightouch-3c037897/L_vQfA0JQEpeGUUo/images/ai-decisioning/qa-guide/aid-qa-email-message-timing-eligibility.png?fit=max\&auto=format\&n=L_vQfA0JQEpeGUUo\&q=85\&s=567b3ebfb109a174b31649399c2a6021)

* **Send limit**: How often this message can be sent to the same user. Confirm this matches your campaign cadence (for example, 1 send every 30 days). See [Send limits](https://docs.hightouch.com/ai-decisioning/messages.md#send-limits-1).
* **Timeline**: Start and end dates for the message. Confirm these are set or intentionally left open. See [Timeline](https://docs.hightouch.com/ai-decisioning/messages.md#timeline).
* **Delivery windows**: If enabled, confirm the allowed days and time blocks match your intended send schedule. See [Delivery windows](https://docs.hightouch.com/ai-decisioning/messages.md#delivery-windows).
* **Audience eligibility**: The base audience filter inherited from your agent. You can’t edit it here, but confirm it’s correct. See [Eligibility](https://docs.hightouch.com/ai-decisioning/messages.md#eligibility).
* **Campaign attribution**: If set, confirm the campaign IDs are correct for outcome tracking. See [Campaign attribution](https://docs.hightouch.com/ai-decisioning/messages.md#campaign-attribution).

#### Message status

Confirm the message is set to **Enabled** before your agent goes live.

![Message enabled — list view](https://mintcdn.com/hightouch-3c037897/L_vQfA0JQEpeGUUo/images/ai-decisioning/qa-guide/aid-qa-message-enabled-1.png?fit=max\&auto=format\&n=L_vQfA0JQEpeGUUo\&q=85\&s=d4b3d644702d738d0be0d13d0b688acc)

![Message enabled — detail view](https://mintcdn.com/hightouch-3c037897/L_vQfA0JQEpeGUUo/images/ai-decisioning/qa-guide/aid-qa-message-enabled-2.png?fit=max\&auto=format\&n=L_vQfA0JQEpeGUUo\&q=85\&s=87ab646d0d1f7739e8205218127ced3a)

![Message enabled — confirmation](https://mintcdn.com/hightouch-3c037897/L_vQfA0JQEpeGUUo/images/ai-decisioning/qa-guide/aid-qa-message-enabled-3.png?fit=max\&auto=format\&n=L_vQfA0JQEpeGUUo\&q=85\&s=3b8e61addeb26c26c3fb5c9f2f731f11)

> [!WARNING]
>
> You can send a **test** even if a message is **disabled**.
>
> However, once AID is live, agents will **NOT** send a message unless it is
> **enabled**.

## SMS QA

SMS has tighter constraints than email — character limits, carrier filtering, and compliance requirements. Preview and test each variant option in the **Content** tab, then confirm your send rules in the **Configuration** tab.

Go to: `AI Decisioning > Agents > [Your Agent] > Messages > [Your Message]`

### Content tab

If your message uses variants, [preview and test each option](#how-to-preview-and-test-variants) as you work through the checks below.

* [ ] [Sender](#sender)
* [ ] [Title and body content](#title-and-body-content)
* [ ] [Links and actions](#links-and-actions)
* [ ] [Compliance](#compliance)
* [ ] [Variant-type send limits and eligibility](#variant-type-send-limits-and-eligibility)

#### Sender

* Confirm the **sender ID or phone number** appears as expected.

#### Title and body content

![SMS test send](https://mintcdn.com/hightouch-3c037897/L_vQfA0JQEpeGUUo/images/ai-decisioning/qa-guide/aid-qa-sms-test.png?fit=max\&auto=format\&n=L_vQfA0JQEpeGUUo\&q=85\&s=8c94d63e9819457b06b89bb39348c60c)

* Confirm the text is accurate, correctly formatted, and not truncated. SMS messages over 160 characters split into multiple segments, which can affect readability and cost.
* Confirm personalization tokens populate with real user data.
* Confirm dynamic content renders correctly for different audience segments.

#### Links and actions

* Confirm all links work and track correctly.
* Confirm shortened URLs or deep links open as expected.

#### Compliance

* Confirm opt-out instructions are included in every variant (for example, "Reply STOP to unsubscribe").
* If your messages are subject to TCPA or other regulations, confirm required disclosures are present.

#### Variant-type send limits and eligibility

If your message has variants, confirm send limits and audience eligibility filters are set correctly at the variant level. See the [email QA section](#variant-type-send-limits) for details on where to find these settings.

### Configuration tab

Expand the **Advanced** section.

* Confirm message-level send limits, timing, delivery windows, audience eligibility, and campaign attribution are correct. See [Message configuration](https://docs.hightouch.com/ai-decisioning/messages.md#message-configuration) for details on each setting.
* Confirm the message is set to **Enabled** before your agent goes live.

> [!WARNING]
>
> You can send a **test** even if a message is **disabled**.
>
> However, once AID is live, agents will **NOT** send a message unless it is
> **enabled**.

## Push notification QA

Push notifications have tighter display constraints than email — titles and body text can be truncated differently on iOS and Android. Preview and test each variant option in the **Content** tab, then confirm your send rules in the **Configuration** tab.

Go to: `AI Decisioning > Agents > [Your Agent] > Messages > [Your Message]`

### Content tab

If your message uses variants, [preview and test each option](#how-to-preview-and-test-variants) as you work through the checks below.

* [ ] [Sender and app info](#sender-and-app-info)
* [ ] [Notification content](#notification-content)
* [ ] [Links and actions](#links-and-actions-1)
* [ ] [Variant-type send limits](#variant-type-send-limits-1)
* [ ] [Individual variant eligibility](#individual-variant-eligibility-1)

#### Sender and app info

* Confirm the app name and sender ID are correct.
* Confirm icons or media display correctly.

#### Notification content

* Confirm the title and body display as expected.
* Confirm personalization tokens populate with real user data.
* If possible, test on both iOS and Android. iOS typically truncates titles around 40 characters and bodies around 110 characters. Android varies by device.

#### Links and actions

Deep links open specific screens in your app (for example, a product page or cart). If misconfigured, the user may land on the home screen instead.

* Test all deep links by tapping the notification on a test device and confirming you reach the correct screen.
* If you have fallback URLs for users without the app, test those as well.

#### Variant-type send limits

These let you set send limits per variant type. For example, you can cap how often a specific notification title is sent to the same user.

![Push variant-level settings overview](https://mintcdn.com/hightouch-3c037897/L_vQfA0JQEpeGUUo/images/ai-decisioning/qa-guide/aid-qa-push-variant-timing-overview.png?fit=max\&auto=format\&n=L_vQfA0JQEpeGUUo\&q=85\&s=0ccf6b825da239f651c94c80a72f48f1)

![Push send limit at the variant type level](https://mintcdn.com/hightouch-3c037897/L_vQfA0JQEpeGUUo/images/ai-decisioning/qa-guide/aid-qa-push-variant-timing-send-limit.png?fit=max\&auto=format\&n=L_vQfA0JQEpeGUUo\&q=85\&s=e9cbaf3485add0fd87b9b4ab013986c0)

* Confirm send limits are set correctly for each variant type.

#### Individual variant eligibility

These let you restrict specific variant options to certain audience segments. For example, you can limit a promotional notification to users who have the latest app version.

![Push audience eligibility at the individual variant option level](https://mintcdn.com/hightouch-3c037897/L_vQfA0JQEpeGUUo/images/ai-decisioning/qa-guide/aid-qa-push-variant-timing-eligibility.png?fit=max\&auto=format\&n=L_vQfA0JQEpeGUUo\&q=85\&s=8b3cb1d6b1907de5c04f800237c6eece)

![Push audience eligibility at the individual variant option level (continued)](https://mintcdn.com/hightouch-3c037897/L_vQfA0JQEpeGUUo/images/ai-decisioning/qa-guide/aid-qa-push-variant-timing-eligibility-2.png?fit=max\&auto=format\&n=L_vQfA0JQEpeGUUo\&q=85\&s=fc9f16322c3fc5ec630dc798ab9b7031)

* Confirm audience eligibility filters are correct for each variant option.

### Configuration tab

Expand the **Advanced** section.

* [ ] [Message-level settings](#message-level-settings-1)
* [ ] [Message status](#message-status-1)

![Push notification advanced configuration settings](https://mintcdn.com/hightouch-3c037897/L_vQfA0JQEpeGUUo/images/ai-decisioning/qa-guide/aid-qa-push-message-timing-send-limit.png?fit=max\&auto=format\&n=L_vQfA0JQEpeGUUo\&q=85\&s=51a7bd4a8510020582710f6edb1ba995)

#### Message-level settings

These apply to all variants of this message.

* Confirm send limits, timing, delivery windows, audience eligibility, and campaign attribution are correct. See [Message configuration](https://docs.hightouch.com/ai-decisioning/messages.md#message-configuration) for details on each setting.

#### Message status

Confirm the message is set to **Enabled** before your agent goes live.

> [!WARNING]
>
> You can send a **test** even if a message is **disabled**.
>
> However, once AID is live, agents will **NOT** send a message unless it is
> **enabled**.

## Troubleshooting

If something isn't working during QA, check here for the most common issues.

Go to: `AI Decisioning > Agents > [Your Agent] > Messages > [Your Message]`

### Message test not received

If your test send doesn’t arrive:

1. **Confirm the message is enabled.**

![Message list showing enabled toggle (state 1)](https://mintcdn.com/hightouch-3c037897/L_vQfA0JQEpeGUUo/images/ai-decisioning/qa-guide/aid-qa-message-enabled-1.png?fit=max\&auto=format\&n=L_vQfA0JQEpeGUUo\&q=85\&s=d4b3d644702d738d0be0d13d0b688acc)

![Message detail showing enabled toggle (state 2)](https://mintcdn.com/hightouch-3c037897/L_vQfA0JQEpeGUUo/images/ai-decisioning/qa-guide/aid-qa-message-enabled-2.png?fit=max\&auto=format\&n=L_vQfA0JQEpeGUUo\&q=85\&s=87ab646d0d1f7739e8205218127ced3a)

![Message detail showing enabled confirmation (state 3)](https://mintcdn.com/hightouch-3c037897/L_vQfA0JQEpeGUUo/images/ai-decisioning/qa-guide/aid-qa-message-enabled-3.png?fit=max\&auto=format\&n=L_vQfA0JQEpeGUUo\&q=85\&s=3b8e61addeb26c26c3fb5c9f2f731f11)

2. **Check the identifier.**

* Confirm you entered the correct identifier (for example, email, user ID, or subscriber key).
* It must match both your channel configuration and the value shown in the test send.

![Test send callout showing the identifier field](https://mintcdn.com/hightouch-3c037897/L_vQfA0JQEpeGUUo/images/ai-decisioning/qa-guide/aid-qa-test-send-callout.png?fit=max\&auto=format\&n=L_vQfA0JQEpeGUUo\&q=85\&s=e0c4296919ede3fa928c288e7ed2961e)

![Channel configuration showing the identifier setting](https://mintcdn.com/hightouch-3c037897/L_vQfA0JQEpeGUUo/images/ai-decisioning/qa-guide/aid-qa-channel-config-identifier.png?fit=max\&auto=format\&n=L_vQfA0JQEpeGUUo\&q=85\&s=2f7d04475f2d8327d4be827fa5882d92)

3. **Confirm the identifier exists in your destination.**

* The user must already exist in your email or messaging platform.

4. **Select a user to preview.**

* In the message preview, select a user from **Preview as** before sending a test.

![Selecting a user with Preview as](https://mintcdn.com/hightouch-3c037897/L_vQfA0JQEpeGUUo/images/ai-decisioning/qa-guide/aid-qa-sfmc-select-user.png?fit=max\&auto=format\&n=L_vQfA0JQEpeGUUo\&q=85\&s=5a34f0ebf9cf85dba6ee74d8295a4037)

### Personalization not working

If personalization appears blank or incorrect:

1. **Check your channel payload configuration.**

* Confirm the fields you’re using are included in the channel payload (these are the fields sent with each message).

![Channel configuration payload fields](https://mintcdn.com/hightouch-3c037897/L_vQfA0JQEpeGUUo/images/ai-decisioning/qa-guide/aid-qa-channel-config-payload-1.png?fit=max\&auto=format\&n=L_vQfA0JQEpeGUUo\&q=85\&s=bb70ce516788a53836a89d4a8ce168f0)

![Channel configuration payload fields (continued)](https://mintcdn.com/hightouch-3c037897/L_vQfA0JQEpeGUUo/images/ai-decisioning/qa-guide/aid-qa-channel-config-payload-2.png?fit=max\&auto=format\&n=L_vQfA0JQEpeGUUo\&q=85\&s=7ba669e1195e157fdb710b4509936bf0)

2. **Check your user data model.**

* Fields like `first_name` and `last_name` must exist on the agent's parent model.
* If they’re on a related model, you can either:

  * Merge the model into the main user model (so all fields are available in one place), or
  * Add the fields through the agent's **Configuration > Additional user columns** (to include specific fields without merging everything)

### Variants not showing

If your test email shows the same content regardless of which variant you select, the destination template is likely missing the required code snippet.

* Confirm the code snippet is added to your destination template.
* See the variable setup guide for your destination: [Braze](https://docs.hightouch.com/ai-decisioning/braze.md#use-variables-in-braze), [Iterable](https://docs.hightouch.com/ai-decisioning/iterable.md#5-use-variables-in-iterable-templates), or [Salesforce Marketing Cloud](https://docs.hightouch.com/ai-decisioning/sfmc.md#use-variables-in-sfmc).

> [!TIP]
>
> This is a one-time setup step. Once the snippet is in your template, it
> applies to all messages and variants.

### Variant images not displaying

If images appear broken or don't load in your test email:

* Confirm the code snippet is added to your destination template.
* Confirm all image URLs are publicly accessible — open each URL in an incognito browser window to verify.

## Next steps

Once you've completed QA, confirm your [agent](https://docs.hightouch.com/ai-decisioning/agents.md) is enabled and ready to launch.
