Documentation menu

Preflight checklist

Before you hit Send, MailInApp renders the email exactly as a recipient would receive it and runs it through a checklist — no third-party spam-score API, just the checks that actually predict whether an email lands and works.

What it checks

  • Unresolved merge tags — a literal {{like_this}} surviving into the rendered HTML means the tag itself was malformed (a missing field just resolves to an empty string, so this never fires on a blank column).
  • Size vs. the clipping budget — Gmail clips any message over roughly 102KB, hiding everything past the cutoff (including your unsubscribe link). The checklist flags an email approaching or over that limit.
  • Missing alt text on images, for recipients whose client blocks remote images by default.
  • Links with no href, and plain http:// links that should be https://.
  • A missing plain-text part — most inbox filters weigh the HTML/plain-text ratio.
  • A missing unsubscribe link on a marketing send (transactional sends, and any send with type: "transactional" through the Send API, are exempt).
  • All-caps subject lines and excessive ! — both common spam-filter triggers.
  • Image-heavy, low-text emails, which filters treat as a phishing/spam signal.

Where it shows up

The Send panel re-checks automatically (debounced, so it doesn't run on every keystroke) whenever you change the subject or an A/B variant, and shows a checklist right above the Send button — a green check when everything's clean, an amber ⚠ for warnings, a red ✗ for errors. It's not hard-blocking: you can send with warnings. Errors (an unresolved tag, a missing unsubscribe link on a marketing send) trigger one extra confirmation dialog before the ordinary send confirmation, so a real mistake gets a second look without stopping you outright.

The same check runs read-only, with no quota or suppression side effects — it's safe to run as often as you like while you're still editing.

One-click unsubscribe

Every marketing send from a verified sending domain carries List-Unsubscribe and List-Unsubscribe-Post headers, so Gmail, Yahoo and other major inboxes show their own native "Unsubscribe" button next to the sender name — the one-click mechanism these providers require of bulk senders. It resolves to the same account-wide suppression as the {{unsubscribe_url}} merge tag in your footer; either path removes the recipient from every project you send from, not just the one they unsubscribed from.

Preference center

Instead of an all-or-nothing unsubscribe, you can define mail topics under Settings (for example "Product updates" and "Promotions") and assign a project to one. A recipient's unsubscribe link then opens a preference page where they can opt out of just that topic, or everything — a recipient who mutes promotions but keeps transactional receipts stays reachable for the mail they actually want.