Sending emails

Pre-send checks

What Kula checks in an email before it goes out, and what to do about it

Kula checks every campaign, flow email and transactional template for mistakes that hurt delivery or look careless: an empty first name, a broken link, an email Gmail cuts in half. The checks are fixed rules, run by Kula. Nobody reads your emails.

Where you see them

  • Checks panel next to the editor of a campaign, a flow email or a template. It runs when you save, and Check again runs it on demand.
  • Before a campaign leaves: if something was found, Kula lists it with Fix first and Send anyway.
  • Ask the assistant to fix hands the findings to the assistant, which corrects the draft and tells you what it left.

Warnings never stop you

Every finding is a warning: you can always send. One exception: a link that Google flags as dangerous (malware, phishing). A campaign, flow or template with such a link can't be scheduled, activated or published until the link goes. A scheduled campaign is checked again when it leaves.

What is checked

Variables

FindingWhy it matters
Missing dataThe email uses {{ contact.first_name }} without a default, and at least 1% of the recipients have no first name: they read "Hi ,". Add a default: {{ contact.first_name | default: "there" }}
Unknown variableNo contact of the space has this attribute, often a typo (frist_name). data.* only exists in transactional emails
Invalid variable{{ ... }} that isn't a valid variable is sent as written

An email without variables, or whose variables all have a default, raises nothing here.

Content

FindingWhy it matters
Too heavy for GmailOver about 100 KB once sent, Gmail cuts the email and hides the rest, unsubscribe link included
Mostly imagesLittle text and some images: spam filters distrust it, and readers who block images see nothing
Missing alternative textShown instead of the image when images are blocked
Subject in capitals, !!! or $$$Spam filters and readers distrust it
Long subjectInboxes cut subjects after about 60 characters
FindingWhy it matters
Broken linkThe page answers an error (404, 410, 5xx) or the domain doesn't exist
Link shortenerbit.ly and the like are shared by spammers, so filters distrust them
Misleading linkThe text shows one address and the link goes to another: a phishing pattern
Link to an IP addressInstead of a domain: a spam pattern
Insecure linkhttp:// instead of https://
Dangerous linkFlagged by Google (Web Risk) as malware or phishing. Blocks sending

Kula checks up to 30 links per email. A site that refuses robots, or doesn't answer in time, is never reported as broken: the panel says how many links couldn't be checked.

Checks API

Run the checks from your own editor

Writing emails

Editor, design and variables