원클릭으로
pre-send-qa
Pre-flight QA for an email campaign — merge tags, broken links, spam triggers, compliance, mobile rendering — before you hit send
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Pre-flight QA for an email campaign — merge tags, broken links, spam triggers, compliance, mobile rendering — before you hit send
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Submit an AI agent to the agentlaunch directory and upvote agents via a public no-auth REST API
Comprehensive Google Ads account audit — campaign structure, budget pacing, conversion tracking, wasted spend — across every campaign type, ranked by estimated $ impact
Google Ads Demand Gen audit — audience strategy, creative format diversity, creative freshness, placements, CPA vs goal
Google Analytics 4 configuration and data-quality audit — key events, data streams, custom dimensions, attribution, retention, PII, Ads link, BigQuery export
Build a GA4 measurement plan from a site URL — event taxonomy, parameters, custom dimensions, and key events to mark as conversions
Weekly GA4 check — sessions, users, key-event conversions, revenue, channel mix — with week-over-week deltas and tracking-break alerts
| name | pre-send-qa |
| description | Pre-flight QA for an email campaign — merge tags, broken links, spam triggers, compliance, mobile rendering — before you hit send |
| version | 1.0.0 |
| author | Cogny AI |
| requires | cogny-mcp |
| platforms | ["klaviyo","mailchimp","rule","get-a-newsletter"] |
| user-invocable | true |
| argument-hint | [campaign ID | paste HTML] |
| allowed-tools | ["mcp__cogny__klaviyo__*","mcp__cogny__mailchimp__*","mcp__cogny__rule__*","mcp__cogny__get_a_newsletter__*","mcp__cogny__create_finding","mcp__klaviyo__*","mcp__mailchimp__*","mcp__rule__*","mcp__get_a_newsletter__*","WebFetch","Bash","Read","Write"] |
Catch the embarrassing stuff before it ships to your list. Runs a full pre-flight check on an email: merge tag fallbacks, broken links, spam triggers, CAN-SPAM / GDPR footers, mobile rendering, size limits, accessibility.
Requires: Cogny MCP for campaign-ID mode. Paste-HTML mode works without MCP (but without send-context checks).
/pre-send-qa <campaign-or-draft-id> — QA a specific campaign (or draft, for Get a Newsletter) in your ESP
/pre-send-qa — then paste the email HTML/MJML/text when prompted
Mode A — Campaign ID (MCP). Detect which ESP is connected (check both namespaces: mcp__cogny__<svc>__* and mcp__<svc>__*) and use the right tool:
| ESP | Fetch tool | What the ID refers to |
|---|---|---|
| Klaviyo | get_campaign | Campaign object |
| Mailchimp | tool_get_campaign | Campaign object |
| Rule | tool_get_campaign | Campaign object |
| Get a Newsletter — pre-send | tool_get_draft | A draft that hasn't been sent yet |
| Get a Newsletter — post-send forensics | tool_get_sent + tool_get_report | A sent item |
For every ESP extract: subject, preheader, from name, from email, reply-to, HTML body, text body, target segment/list, scheduled send time. Also fetch the associated list/audience size so Section 2.8 has recipient count.
Get a Newsletter has no single "campaign" object. If the user passes an ID, try tool_get_draft first (pre-send QA is the common use), fall back to tool_get_sent if that 404s. If they want to QA a scheduled send, use tool_list_scheduled to find it.
Mode B — Paste:
Walk through every category. For each item, mark [PASS], [WARN], or [FAIL] and include the specific offending content.
@gmail.com/@outlook.com from addresses (deliverability killer for bulk)Scan body + subject + preheader for:
{{ ... }}, {% ... %}, *|...|*, [[...]], %%...%%, {...} — depending on ESP syntax{{ first_name|default:"there" }} (Klaviyo), *|IFNOT:FNAME|*there*|ELSE:*|FNAME|**|END:IF|* (Mailchimp). Flag any token without a fallback as FAIL.{% if %} must have {% endif %}; same for loopsExtract all <a href="..."> from the HTML. For each:
href="/path" without domain; no href="#" unless intentional anchorlocalhost / 127.0.0.1 / .local — dev leak*.staging.*, *.dev.*, stage., preprod.utm_source/utm_medium/utm_campaignutm_campaign; flag divergence<img> have alt text — non-empty, descriptiveimgur, cloudinary demo, etc. instead of a brand CDNunsubscribe, preferences, opt outdisplay:none or font-size:1pxScan subject + preheader + body for classic triggers and report offenders:
! in subject, !!!, ???$$$, ★, excessive emoji (>3)<body>Output each offender with context:
🔴 Subject contains "!!!"
🟡 Body has 4 instances of ALL CAPS words: "LIMITED", "TODAY", "ACT NOW", "DON'T"
<table> layout (desktop email standard) OR uses MJML — flag flex/grid as a deliverability risk<style> blocks. Many clients strip <head> styles.<meta name="viewport" content="width=device-width">font-family: "Custom Font"; without a web-safe fallback<script>, no <form>, no external fonts loaded via JS — all stripped by most clientsPre-send QA: <campaign name | "pasted email">
Recipient count: <N> Send ETA: <time or "not scheduled">
Overall: <READY TO SEND | FIX BEFORE SEND | CRITICAL ISSUES>
🔴 Critical (will break or embarrass)
— <specific issue with offending text / URL / line>
— ...
🟡 Warnings (fix if you have time)
— ...
🟢 Passed
— <count> checks passed
──
Recommended fix order:
1. ...
2. ...
Merge-tag fallback cheatsheet for <ESP>:
[ESP-specific syntax examples]
If critical issues are found and the campaign is scheduled to send soon, create a finding:
{
"title": "Campaign '<name>' has critical QA issues — blocked send",
"body": "<enumerated issues>",
"action_type": "pre_send_fix",
"priority": "high"
}
Never modify the campaign automatically. Always present the diff and let the user approve each fix.
{{ first_name|default:"there" }}*|FNAME|* with *|IFNOT:FNAME|*there*|ELSE:*|FNAME|**|END:IF|*[Firstname] with platform-specific fallback syntax