Step 1 — Draft the newsletter
Newsletters are owned by aUnit — usually a local center or the tenant root. The audience is implicitly everyone in that unit who has newsletter opt-in.
estimatedRecipientCount is the count of recipients the current audience filter would target right now. It is recalculated each time you fetch the newsletter.
Placeholders
{{firstName}}, {{lastName}}, {{email}} and any tenant custom field are resolved per recipient. Use them anywhere in content and they’re substituted at send time.
Step 2 — Preview and test-send
Always send a test to yourself first.Step 3 — Choose: schedule or send now
Send immediately
SENT. The actual delivery is queued — large campaigns take a few minutes to flush through SES.
Schedule for later
SCHEDULED and the worker picks it up at the specified time.
Step 4 — Resend to non-openers (one week later)
A standard pattern: wait 5-7 days after the initial send, then re-send (with a new subject line) only to people who haven’t opened. First check how many would be re-targeted:PATCH /api/v1/newsletters/{uuid}/send as usual.
Step 5 — Read engagement statistics
Once the send completes (typically a few minutes after triggering), opens and clicks start streaming in. Fetch them on the newsletter resource:recipientCount, openCount, clickCount, and unsubscribeCount.
Common gotchas
Placeholders showed up as `{{firstName}}` instead of names
Placeholders showed up as `{{firstName}}` instead of names
Placeholders are case-sensitive and must match exactly.
{{FirstName}} won’t work; neither will {{ firstName }} (with spaces). If a recipient’s field is null, the placeholder resolves to an empty string — consider wrapping with HTML so empty fields don’t leave dangling punctuation.The send is stuck at SENT but nobody got the email
The send is stuck at SENT but nobody got the email
SES has per-tenant sending limits. New tenants are sandboxed (50 emails/day, verified-recipient only) until granted production access. Check
Settings → Developers → Email for the current quota. Contact support to lift sandbox.Can I A/B test subject lines?
Can I A/B test subject lines?
Not directly — there’s no first-class A/B testing UI. The pattern is: send the campaign to a 10% sample (filter the audience tighter), wait, compare open rates against a held-back variant, then send the winner to the rest.
What to do next
- Sync your CRM with Orgo — keep contacts subscribed in sync with your CRM source-of-truth
- Handle webhooks — react to
contact.updatedwhen someone unsubscribes - Rate limits — newsletter sends carry email-cost rate limits

