AMPscript does not throw. It renders blank.
A bad Lookup, a variable you output but never set, a missing v() — none of these raise an error. The platform does exactly what you told it to, produces an empty string, and sends. There is no warning in Preview, nothing in the job log, no failed-send notification.
The first signal is a subscriber reading “Hi ,” or an empty order table. By then it is in tens of thousands of inboxes and the only remaining decision is whether to apologise.
Test sends are the wrong instrument
A test send uses one subscriber, usually yours, usually complete. The failures that matter live in the records where a field is null, a LookupRows returns zero rows, or an attribute name is spelled slightly differently from the Data Extension column.
Preview against a few subscribers finds some of it. It will not find @frist where you meant @first, because that variable is simply never set and renders as nothing on every single record, including yours.
Fourteen patterns, read from the code
Paste your AMPscript and the tool flags unchecked Lookup and LookupRows calls, variables output but never assigned, inline output missing v(), concatenation with + instead of Concat, C-style && and ||, one-based row indexing mistakes, and unbalanced IF or FOR blocks.
Every finding carries the line number and the correction, so the output is a work list rather than a lecture.
What it does not do
It reads your code, not your Data Extensions. It cannot know whether Subscribers actually has a FirstName column or whether that column is populated for the audience you are about to send to.
Treat it as the fast first pass that catches the structural mistakes in seconds, then preview with real data for the rest. It runs entirely in your browser — the code you paste is not sent anywhere.
What’s inside
- Lookup and LookupRows used with no empty check — the most common silent blank
- Variables output but never set, including near-miss typos like @frist for @first
- Inline output missing v(), the classic blank-merge bug
- Concatenation with + instead of Concat, and C-style && / || instead of AND / OR
- One-based row indexing mistakes in LookupRows loops
- Unbalanced IF / FOR blocks that swallow everything after them
- A line number and the specific fix on every finding
- Runs in the browser — the AMPscript you paste is not sent anywhere