Check before you send

Run the pre-send check on a message: a score, a verdict and the fix for each finding.

One call checks a message before you send it. Notix renders it the way a recipient would get it, runs a real spam filter over it, opens up to 20 of its links, and answers with a verdict, a score out of 100 and a list of findings with the fix for each.

The check is a request, not a send. It costs nothing.

Run the check

Send the From address, the subject, and either html or a templateId. Set marketing to true for newsletters and broadcasts.

curl -X POST https://app.usenotix.dev/api/v1/deliverability/check \
  -H "Authorization: Bearer $NOTIX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "news@acme.com",
    "subject": "Your September update",
    "html": "<p>Read the update.</p>",
    "marketing": true
  }'

Send exactly one of html or templateId. With a template, pass its variables too.

Read the report

{
  "verdict": "BLOCK",
  "score": 40,
  "findings": [
    {
      "id": "unsubscribe_missing",
      "severity": "block",
      "title": "The email has no unsubscribe link",
      "detail": "Marketing email must give every recipient a way to unsubscribe.",
      "fix": "Add the unsubscribe link block to the footer of this email."
    }
  ],
  "spam": { "available": true, "score": 2.4, "symbols": [] },
  "checkedAt": "2026-10-05T12:00:00.000Z",
  "budgetExceeded": []
}
FieldMeaning
verdictBLOCK if any finding blocks, else WARN if any finding warns, else PASS.
score0 to 100. Higher is better.
findingsBlock findings first, then warnings, then notes. Each has a fix.
spamThe spam filter's score and the rules that matched. Higher is worse.
budgetExceededChecks that did not finish in time. They neither block nor warn.

If the spam filter cannot be reached, spam.available is false. A filter outage never blocks a send.

What blocks a send

Four findings block:

  • Marketing content with no unsubscribe link anywhere in the body.
  • A From address on a domain your team has not verified.
  • A link whose host is a raw IP address instead of a name.
  • A spam filter score of 10 or more, which means the message would be rejected.

Everything else warns or informs. Fix the warnings when you can, because they lower your score.

Broadcast sends and automation activations run this same check. They refuse anything it blocks, and a deliverability.blocked webhook event names the findings. Running the check yourself first gives you the answer before you get the error.

Check from the console

When you edit a template, a broadcast or an automation email, the console runs the same check and shows the findings next to the email. See Templates and library, Broadcasts and Automations.

The full field list is in the Check a message before sending reference.

Open in ClaudeOpen in ChatGPT