Skip to content

MailerLintEmail

POST mailer/email/lint

Returns warnings, not verdicts: the decision to send stays with the human. The checks are the ones spam filters and mail clients actually react to.

Running it before a campaign is cheaper than reading the bounce report after one.

Access Control

Allowed roles: admin, leader.

Request

POST https://{broker_domain}/mailer/email/lint
{
  "templateId": 4,
  "kind": "MARKETING",
  "to": "[email protected]"
}
{
  "command": "MailerLintEmail",
  "extID": "1",
  "data": {
    "templateId": 4,
    "kind": "MARKETING",
    "to": "[email protected]"
  }
}
const res = await platform.MailerLintEmail({
  templateId: 4,
  kind: "MARKETING",
  to: "[email protected]"
});

Request Data

Field Type Required Description
templateId int No Template to render; use it instead of passing content
subject string No Subject, up to 512 characters
html string No HTML body
text string No Plain-text part; generated from the HTML when omitted
structure array No Email builder tree; the HTML is rendered from it
data object No Placeholder values. Nothing is stored by this method, so nothing is masked either
to string No Recipient, to render the unsubscribe link
kind enum No TRANSACTIONAL or MARKETING

Behavior

  • Warning codes: CLIPPED_BY_GMAIL (over ~102 KB, the footer with the unsubscribe link gets cut off), NO_TEXT_CONTENT, MOSTLY_IMAGES, TEXT_PART_GENERATED, IMAGES_WITHOUT_ALT, NO_UNSUBSCRIBE_LINK, EMPTY_SUBJECT, SUBJECT_TOO_LONG, SUBJECT_ALL_CAPS, SUBJECT_EXCLAMATIONS, SUBJECT_EMOJI_IN_TRANSACTIONAL, EMPTY_LINKS, INSECURE_LINKS, UNRESOLVED_LINKS, IP_LINKS, SPAM_WORDS.
  • ok: true means there is nothing to show the operator — not that the email is perfect.

Response Data

{
  "ok": false,
  "warnings": [
    { "code": "CLIPPED_BY_GMAIL", "message": "Email is 118 KB; Gmail clips at about 102 KB", "details": { "bytes": 120832 } },
    { "code": "IMAGES_WITHOUT_ALT", "message": "3 image(s) have no alt text" }
  ],
  "stats": {
    "bytes": 120832,
    "textLength": 640,
    "subjectLength": 44,
    "links": 7,
    "images": 4,
    "imagesWithoutAlt": 3
  },
  "kind": "MARKETING",
  "templateId": 4,
  "missingPlaceholders": []
}

Errors

Code Error Description
400 VALIDATION_ERROR No content and no template
404 TEMPLATE_NOT_FOUND Template not found in the brand