ai
Marketing Automation QA: Check Journeys Before Launch With an AI Agent on Rails
A marketing automation QA checklist tests a journey's audience, triggers, branches, timing, links and consent before launch. A Journey QA Reviewer agent works through it at propose level (L2): it reads the configuration and reports findings, and it cannot change or launch anything. Rule-based checks remain the ground truth, and a person resolves every finding on any customer data platform (CDP).
Rail level: L2 · Risk: medium · Function: marketing operations
By Art Kukharenko · Published · Updated
All AI agent railsWho this is for: marketing-operations specialists and leads. Copy the checklist, split it into rule and judgement checks, then test your current QA with seeded defects. The method is part of AI agent rails: one job, one data scope, one approver, one audit trail.
Before: the manual workflow
Manual journey QA usually means one person reading the canvas the evening before launch. Time pressure turns the review into a skim. Builders often check their own work and see what they meant to build. Knowledge of past mistakes sits with one specialist. Nothing records what was checked, so after an incident nobody can say whether a step was missed or never in the routine.
The marketing automation QA checklist
The marketing automation QA checklist below has 27 items in ten groups, and you can copy it as it stands. Each item is tagged rule when a deterministic check can answer it, or judgement when someone must compare it with the intent. It also works as a campaign QA checklist for one-off sends and as a pre-launch checklist for email workflow testing. It draws on the site's consent guidance and on published checklists from Iterable and Scalero 57.
Audience
- The audience definition matches the written request, and its version is recorded. (judgement)
- The audience count sits inside the expected range for this journey. (rule)
- Standard exclusions are attached: test accounts, staff and open complaints. (rule)
- No special-category data or close proxy drives inclusion or priority. (rule, then judgement)
Trigger and entry
- The trigger was fired once in a test and started the right path. (rule)
- Maximum entries and re-entry settings match the intent. (judgement)
- An end date exists, or "runs indefinitely" is a stated choice. (rule)
Branching
- Every step connects onward or exits, with no dead ends. (rule)
- Branch conditions, including the default path, match the written intent. (judgement)
- Exit rules remove people who have already done what the journey asks. (judgement)
Timing and wait steps
- Time zone, send window and quiet hours are set for each market. (rule)
- Wait steps make sense here and avoid public holidays and blackout dates. (judgement)
- A frequency cap is present, and overlap with similar live journeys is known. (rule, then judgement)
Content and fallback values
- Every merge field has a fallback value and renders on test profiles. (rule)
- Copy fits this audience and matches the offer, price and dates on file. (judgement)
- Regulated claims and required disclosures have a recorded sign-off. (rule)
Links and tracking
- Every link resolves over HTTPS to the intended page. (rule)
- Tracking parameters are present and follow your naming convention. (rule)
- A conversion event is attached, so the result can be measured. (rule)
Consent and suppression
- Consent purpose and channel match this message. (rule)
- Suppression lists are attached, and the send step re-checks them at dispatch. (rule)
- The template is tagged as marketing, service or legal notice. (rule)
Deliverability
- Sending domain, authentication and one-click unsubscribe are in place for this stream. (rule)
- Volume fits the warm-up plan and rate limits for this domain. (rule)
Destinations and sync rules
- Every destination is allow-listed, and sync-time filters were checked separately. (rule)
Rollback plan
- A named owner can stop the journey, and the stop steps are written down. (rule)
- A review is booked soon after the first people enter. (rule)
Consent mechanics behind the suppression items are in the suppression architecture article, and the glossary entry on journey orchestration defines the terms.
What rules do and what the model does
Rules answer questions that have one right answer, and the model answers questions about intent. A rule can confirm that a suppression list is attached. It cannot notice that a branch contradicts what the marketer asked for. The split follows the boundary article, which treats deterministic rule checks as ground truth.
The table assigns each common check to its owner and shows what a failure does.
Scroll horizontally to see all columns.
| Check | Owner | What a failure does |
|---|---|---|
| Suppression attached | Rule | Blocks launch |
| Consent purpose matches | Rule | Blocks launch |
| Links resolve | Rule | Blocks launch |
| Tracking parameters present | Rule | Blocks or warns, by your policy |
| Fallback values set | Rule | Blocks launch |
| Frequency cap present | Rule | Blocks launch |
| Audience count in range | Rule | Blocks until a person confirms |
| Destination allow-listed | Rule | Blocks launch |
| Does the branch logic match the written intent? | Model, then a person | Raises a finding |
| Does the copy fit this audience? | Model, then a person | Raises a finding |
| Are the wait steps odd for this journey? | Model, then a person | Raises a finding |
| Does it overlap a similar live journey? | Model, then a person | Raises a finding |
A model's "pass" never overrides a failed rule, and a model's silence does not mean correct. So the report says "no findings in these checks" and lists them. It never says "passed".
After: the job on rails, step by step
The job on rails runs rule checks first, then the agent, then a person, and the launch approval stays last.
- A marketer submits one journey version for launch, and the platform hashes it.
- The Orchestrator routes the submission to this rail. It reads metadata only.
- Rule checks run in the rule layer. A failed rule blocks launch, whatever happens next.
- The Journey QA Reviewer reads the configuration, content, audience counts, rule results and the live journey list.
- Findings arrive with severity, location, evidence and a suggested fix, plus the list of checks actually run.
- A person resolves each finding by fixing it or accepting it with a note. Unresolved high-severity findings stay blocked by the rule layer. A fix creates a new version, so steps 3 to 5 run again.
- The normal launch approval follows. A named approver, who is not the requester, signs the version hash. Any later change voids that approval, and a timeout expires it.
The agent has no write tools at any step. The tool allow-list enforces that, so no prompt can add one. A ledger writer outside the agent records each step.
The rail card
The rail card fixes what the Journey QA Reviewer may do, and each limit sits in a system rather than a prompt. Budget values are yours to set. See the rail card guide for how the fields work.
Scroll horizontally to see all columns.
| Field | Value |
|---|---|
| Job | Review one journey version before launch and report findings with severity and evidence. |
| Trigger | A journey submitted for launch. |
| Data scope | Journey configuration, content, audience counts and rule-check results. No customer profiles. Enforced by the data view. |
| Tool scope | Read: journey configuration, rule-check results, audience counts, live journey list. Propose: findings report. Execute: none. |
| Output contract | Findings with severity, location, evidence and suggested fix, plus a list of checks actually run. |
| Gate | A person resolves every finding. Unresolved high-severity findings stay blocked by the rule layer. |
| Limits | Budget per run. One journey version per run. |
| Ledger | Journey version hash, checks run, findings, who resolved each one and how, model version. |
| Evaluation | Seeded-defect set covering audience, trigger, branch, link, consent and timing errors. |
| Owner and kill switch | Head of marketing operations. An Orchestrator pause returns launches to manual QA. |
The session holds two of the three Rule of Two properties 1. It reads untrusted text, because agency copy, feeds and merge fields can carry instructions. It also reads confidential configuration. So it must not gain the third property, changing state. That is why the rail level stays at L2 and does not move up.
What the ledger shows for one run
One run leaves one record, written by the ledger writer and not by the agent. The example below is illustrative, with example value values, in the style of the segmentation walkthrough.
{
"record_id": "aud_000877",
"event": "journey.qa.reviewed",
"rail": "journey-qa-reviewer@v3",
"submitted_by": "marketer_12",
"journey": {"ref": "jrn_311@v4", "sha256": "4be1..."},
"rule_checks": {"run": 14, "failed": ["suppression_attached"]},
"agent": {"version": "2.1.0", "model": "model-id@version"},
"checks_run": ["branch_intent", "wait_steps", "copy_fit", "overlap"],
"findings": [
{"id": "f1", "severity": "high", "location": "branch_2.exit",
"resolved_by": "marketing_ops_04", "resolution": "fixed in v5"},
{"id": "f2", "severity": "medium", "location": "wait_3",
"resolved_by": "marketing_ops_04", "resolution": "accepted, note n_88"}
],
"ledger": {"prev_hash": "ab41...", "hash": "c7d0..."}
}
Three ways it fails, and the control for each
Journey QA with an agent fails in predictable ways, and each control below lives outside the model.
Scroll horizontally to see all columns.
| Failure | How it shows up | Control |
|---|---|---|
| False assurance | Reviewers treat a short report as approval and stop reading the journey. | The output contract forbids the word "passed". Launch approval stays with a named person. |
| Injection through journey copy | A template or feed tells the model to report nothing. | No write tools exist, rule checks run separately, and seeded injection cases sit in the evaluation set. |
| Findings fatigue | Long lists of minor comments teach people to dismiss everything. | Severity tiers, plus tuning against override data. |
One more failure is human: under deadline, people skip QA. Make the review a launch prerequisite in the workflow, so the launch button stays locked until a run exists for that version hash.
Metrics that are honest
Honest QA metrics count what got through as well as what got caught. Use the definitions in the AI marketing operations roadmap and baseline them before you add the agent.
- QA catch rate on seeded defects, split by defect type.
- Escaped error rate: errors found after launch per 100 campaigns.
- False-finding rate: findings rejected as wrong, not findings accepted and left alone.
- Submission-to-launch-ready time, measured by your team.
- Override rate. Near zero may mean rubber-stamping, so sample decisions.
Report these by rail and role, not by named reviewer. Annex III point 4(b) of the EU AI Act lists monitoring workers' performance as a high-risk use 2, so take advice before using this data to assess a person.
Run a seeded-defect test on your current QA, with or without an agent:
- Copy a few recent journeys into a test workspace.
- Insert known defects: audience, trigger, branch, link, consent and timing.
- Run your normal QA without telling the reviewers which journeys are seeded.
- Count catches by defect type, and write down what was missed.
- Repeat before any change to the model, the prompt or the tools.
How vendor tools compare
Simulators test mechanics and an agent checks intent, so most teams need both. The table reflects vendor pages we opened on 1 November 2026, and features may exist that these pages do not describe.
Scroll horizontally to see all columns.
| Tool | What it tests | Does anyone receive a message? | What it leaves to you |
|---|---|---|---|
| Adobe Journey Optimizer dry run | Reach and branches on the real production audience 3 | No. Channel actions do not run, and custom actions are disabled 3 | Content, and anything behind a bypassed action |
| Adobe Journey Optimizer test mode | Step-by-step logic with up to 100 test profiles 4 | Yes, to test profiles. Triggered events are real and can start other journeys 4 | Reach on the real audience |
| Adobe Journey Optimizer simulation | Paths and decisioning with simulated users 11 | Yes, real sends. It skips consent, frequency caps, quiet hours and opt-outs 11 | All consent checks |
| Microsoft Customer Insights Journeys | Previews and test sends of messages 6 | Test recipients only. Double opt-in logic cannot be tested by test send 6 | Whole-journey paths; we found no path simulator on the pages opened |
| Iterable pre-flight checklist | A manual list, including a reviewer other than the builder 5 | Your choice | Enforcement and records |
| Hightouch destination rules | Filters rows at sync time without changing the audience, most often for consent 8 | Not applicable | Audience counts can differ from what syncs, so check rules separately |
| Cassidy launch checklist agent | Claims URL, tracking and pixel checks 9 | Not stated | No marketing automation platform is named, and we saw no independent review |
A script, or nothing, is sometimes the better answer. If you launch few journeys, a shared checklist and a second reader will do. Build the rule checks before any agent, because they catch the costly errors. If all journeys live in one vendor and the content is not regulated, a vendor assistant may be enough: Braze Operator reviews message content and Canvas configuration, and it cannot launch anything that affects users 10. PrivyCDP's product page describes AI-assisted review of workflows, with limits on data access and review of results.
To see how this job fits the wider function, read AI agents for marketing operations, or return to the AI agent rails hub. To write this rail for your own team, download the rail card template.
Browse use casesFunction playbooksAgent roster
FAQ
How do you QA a marketing automation workflow?
Run deterministic checks first: suppression, consent purpose, links, fallback values, frequency caps and audience range. Then have a second reader compare branches, waits and copy with the written intent. Test the mechanics in a simulator or with test profiles. Record what was checked, and make a person resolve every issue before the normal launch approval.
What should a campaign QA checklist include?
Cover audience, trigger and entry, branching, timing and waits, content and fallback values, links and tracking, consent and suppression, deliverability, destinations and a rollback plan. Tag each item as a rule or a judgement call, so you can automate the rules and spend human attention on intent. The 27-item list above is free to copy.
Can AI do QA for marketing campaigns?
Partly. An agent is useful for reading configuration against intent, spotting odd waits and finding overlap with live journeys. It should not replace rule checks or sign off a launch. Keep it at propose level, with no write tools, so that a bad or manipulated run produces a poor report and nothing worse.
What is the difference between dry run and test mode?
In Adobe Journey Optimizer, dry run uses the real production audience without contacting anyone, and channel actions do not run. Test mode sends real messages to flagged test profiles, and it shortens waits so you can follow each step. Dry run shows reach and branches. Test mode shows what a message and path look like.
How do you test journeys without emailing customers?
Use a dry-run feature if your platform has one, or send only to flagged test profiles in a test workspace. Check whether "simulation" still sends real messages, because Adobe's does. Then review the configuration itself against the checklist, since neither a dry run nor a test profile tells you whether the logic matches the intent.
Sources
- Meta, Agents Rule of Two (31 October 2025)
- EU AI Act, Annex III
- Adobe, Journey dry run
- Adobe, Test your journey
- Iterable, Creating an Iterable journey pre-flight checklist (16 April 2024)
- Microsoft Learn, Check your work using previews and test sends
- Scalero, Email QA checklist
- Hightouch Docs, Destination rules
- Cassidy, AI campaign launch checklist agent
- Braze Docs, What you can do with Operator
- Adobe, Simulate your journey
This article is general information, not legal advice.
Further reading
- Journey QA Reviewer: AI Agent
- AI Agents for Marketing Operations: A
- Correlation ID — definition
- Agent rails
- AI Agent Permissions Template Download
Published: · Updated:
Editorial dates describe content changes. Confirm current sources before making legal, security or purchasing decisions.