Findings Catalog
Synapse Inspect includes 130+ finding codes across many categories, spanning email, push, in-app, SMS, and WhatsApp. Each code is a stable identifier -- codes are never removed or renumbered. New codes are added over time but existing ones remain unchanged.
Categories
| Category | Channel | Description | Example Code |
|---|---|---|---|
html | HTML structure and validity | HTML_MISSING_DOCTYPE | |
css | CSS compatibility across email clients | CSS_SHORTHAND_ISSUE | |
images | Image format, size, and optimization | IMG_MISSING_ALT | |
links | Broken links, redirect chains, tracking | LINK_BROKEN | |
spam | Spam trigger words and patterns | SPAM_TRIGGER_WORDS | |
accessibility | Screen reader and accessibility compliance | A11Y_LOW_CONTRAST | |
rendering | Cross-client rendering issues | RENDER_CLIENT_DEVIATION | |
dark_mode | Dark mode support and compatibility | DARK_MODE_NO_META | |
subject | Subject line and preheader quality | SUBJECT_TOO_LONG | |
tracking | UTM parameters and tracking links | TRACKING_UTM_MISSING | |
push | Push | Payload size, per-platform length, deep links, NLT | PUSH_PAYLOAD_APNS_OVERSIZE |
in_app | In-app | Placement, payload size, CTA limits, NLT | IN_APP_PAYLOAD_OVERSIZE |
sms | SMS | Segments & encoding, opt-out, sender number, NLT | SMS_MULTI_SEGMENT |
whatsapp | Meta placeholder rules, body limit, category, NLT | WA_VARIABLE_COUNT_MISMATCH |
Severities
| Severity | Meaning | Send Impact |
|---|---|---|
critical | Broken rendering or deliverability risk | Blocks send (unless overridden) |
warning | Should be fixed but won't break delivery | Does not block |
info | Best practice recommendation | Does not block |
Finding Structure
Every finding returned by the API has this structure:
| Field | Type | Description |
|---|---|---|
code | string | Stable identifier (e.g., HTML_MISSING_DOCTYPE) |
severity | string | critical, warning, or info |
category | string | One of the 10 categories above |
title | string | Short human-readable title |
description | string | Detailed explanation of the issue |
fix_text | string | Actionable fix instructions |
ast_node_id | string or null | Links to a specific block in the template editor |
client_specific | string or null | Which email client this affects (e.g., outlook_2019) |
context | object or null | Additional context data for the finding |
Actions
Each finding supports one or more actions:
| Action | Description |
|---|---|
auto_fix | Synapse can automatically fix this issue (see Auto-Fixers) |
snooze | Temporarily dismiss the finding (1--365 days) |
mark_fixed | Mark as manually fixed |
mark_false_positive | Dismiss as a false positive |
Sample Findings by Category
HTML
| Code | Severity | Title |
|---|---|---|
HTML_MISSING_DOCTYPE | critical | Missing DOCTYPE declaration |
HTML_MISSING_CHARSET | critical | Missing charset declaration |
HTML_MISSING_LANG | warning | Missing lang attribute on <html> |
HTML_MISSING_VIEWPORT | warning | Missing viewport meta tag |
HTML_DEPRECATED_TAG | warning | Deprecated HTML tag used |
HTML_INVALID_NESTING | warning | Invalid HTML nesting |
HTML_MISSING_TITLE | info | Missing <title> tag |
Dark Mode
| Code | Severity | Title |
|---|---|---|
DARK_MODE_NO_META | warning | Missing color-scheme meta tag |
DARK_MODE_NO_CSS_SCHEME | warning | Missing supported-color-schemes meta |
DARK_MODE_HARDCODED_BG | warning | Hardcoded background color without dark variant |
DARK_MODE_HARDCODED_TEXT | warning | Hardcoded text color without dark variant |
DARK_MODE_LOGO_NO_SWAP | warning | Logo image without dark mode swap |
Accessibility
| Code | Severity | Title |
|---|---|---|
A11Y_MISSING_ALT | warning | Image missing alt text |
A11Y_LINK_NO_TEXT | warning | Link without descriptive text |
A11Y_LOW_CONTRAST | warning | Low color contrast ratio |
Spam
| Code | Severity | Title |
|---|---|---|
SPAM_KEYWORD_FOUND | warning | Spam trigger keyword detected |
SPAM_SCORE_HIGH | critical | High spam score |
SPAM_ALL_CAPS_SUBJECT | warning | Subject line is all caps |
Subject & Preheader
| Code | Severity | Title |
|---|---|---|
SJ001 | warning | Subject line missing |
SJ007 | warning | Preheader text missing |
Subject and preheader on content-only templates. Synapse templates are content-only, so a template body has no <title> or hidden preheader element for these checks to read — SJ001 and SJ007 would fire on every template unless you tell Inspect what the email will actually send with. Pass subject and preheader on POST /v1/inspect: supplying subject suppresses SJ001, and supplying preheader suppresses SJ007. When no subject is supplied, SJ001 is reported as a warning (not a hard block), since a subject legitimately resolves at send time from the flow step, campaign, or template. This is how the dashboard and pre-send checks evaluate the complete email rather than the bare fragment.
SMS
Full guide: SMS Quality Checks.
| Code | Severity | Title |
|---|---|---|
SMS_NLT_REQUIRED_MISS | critical | Required NLT field is missing on the sample contact |
SMS_NLT_UNRESOLVED_EXPRESSION | warning | SMS body has unresolved NLT expressions |
SMS_UCS2_FORCED | warning | A non-GSM-7 character forces expensive UCS-2 encoding |
SMS_MULTI_SEGMENT | warning | SMS body spans multiple segments |
SMS_BODY_TOO_LONG | warning | SMS body spans many segments |
SMS_NO_OPT_OUT_LANGUAGE | warning | SMS body has no opt-out / STOP language |
SMS_FROM_NUMBER_INVALID | warning | Template from_number is not a valid E.164 number |
Full guide: WhatsApp Pre-Submission Inspect.
| Code | Severity | Title |
|---|---|---|
WA_NLT_REQUIRED_MISS | critical | Required NLT field is missing on the sample contact |
WA_NLT_UNRESOLVED | warning | WhatsApp template has unresolved NLT expressions |
WA_VARIABLE_COUNT_MISMATCH | warning | Placeholder count does not match the declared variable schema |
WA_PLACEHOLDER_NOT_SEQUENTIAL | warning | Placeholders are not numbered sequentially from 1 |
WA_PLACEHOLDER_ADJACENT_OR_EDGE | warning | Placeholders are adjacent or at the body's start/end |
WA_BODY_OVER_LIMIT | warning | Template body exceeds Meta's 1024-character limit |
WA_CATEGORY_INVALID | warning | Template category is not a valid Meta category |
The WhatsApp catalog also defines WA_HEADER_OVER_LIMIT, WA_FOOTER_OVER_LIMIT, and WA_BUTTON_LABEL_OVER_LIMIT. These are reserved for when header / footer / button components are stored — the current template model stores the body only, so they do not fire on today's templates. See the WhatsApp guide.
This page shows a representative sample. The full catalog includes 130+ codes.