Unsubscribes respected
A contact who unsubscribed from everything gets no broadcast, whatever their topics say.
every batchWrite a newsletter, a launch note or a price change once, pick who gets it, and let Notix check it before a single copy leaves. Then watch who opened and clicked.
Every broadcast moves through the same three screens, so nothing is skipped by accident.
Start from one of your templates or the starter library. The broadcast keeps its own copy, so editing the template later does not change it.
Pick a contact list, then everyone subscribed or one of its segments, and a topic if you like. Choose a from address on a verified domain.
Notix checks the audience, sender, links, unsubscribe footer and variables. Send now, or schedule a date and time.
A list, an optional segment, an optional topic. The count updates before you send.
Choose one contact list, then everyone subscribed or a segment of it, such as people on the Pro plan or people who opened in the last 30 days. Add a topic and only the contacts who get that kind of email receive it.
await notix.broadcasts.createFromTemplate({
templateId: "tpl_october",
name: "October newsletter",
from: "Acme <news@acme.com>",
contactBookId: "cb_customers",
});
await notix.broadcasts.schedule(id, {}); // nowThe review screen catches the mistakes that reach thousands of people at once. The report shows what happened.
Preview the email as any contact, on desktop and on mobile, and send a test to your own inbox. Then send now, or schedule it for the morning.
The same checks run from the API with notix.broadcasts.review(id), so a broadcast your code prepares is held to the same standard.
A warning lets you send. A blocked check stops the send until it is fixed.
Delivered, opened and clicked as a share of the send, the number who unsubscribed, and a live feed of what is happening. Pause a send that is going out and resume it later.
Your own systems hear about it too: the campaign.started and campaign.completed webhook events mark the start and the end.
Create from a template, review, schedule, pause and resume from your own code or your AI agent.
import { Notix } from "notix-js";
const notix = new Notix(process.env.NOTIX_API_KEY);
const { data: broadcast } = await notix.broadcasts.createFromTemplate({
templateId: "tpl_october",
name: "October newsletter",
from: "Acme <news@acme.com>",
contactBookId: "cb_customers",
segmentId: "seg_engaged",
});
// Run the same checks as the review screen, then schedule it.
const { data: review } = await notix.broadcasts.review(broadcast!.id);
await notix.broadcasts.schedule(broadcast!.id, { scheduledAt: "2026-11-03T09:00:00+01:00" });
from notix import Notix
notix = Notix() # reads NOTIX_API_KEY
broadcast, err = notix.campaigns.create({
"name": "October newsletter",
"from": "Acme <news@acme.com>",
"subject": "What we shipped in October",
"contactBookId": "cb_customers",
"html": '<p>Hi {{firstName,fallback=there}}</p><p><a href="{{notix_unsubscribe_url}}">Unsubscribe</a></p>',
})
notix.campaigns.schedule(broadcast["id"], {"scheduledAt": "2026-11-03T09:00:00+01:00"})
<?php
use Notix\Notix;
$notix = new Notix(getenv('NOTIX_API_KEY'));
$broadcast = $notix->campaigns->create([
'name' => 'October newsletter',
'from' => 'Acme <news@acme.com>',
'subject' => 'What we shipped in October',
'contactBookId' => 'cb_customers',
'html' => '<p>Hi {{firstName}}</p><p><a href="{{notix_unsubscribe_url}}">Unsubscribe</a></p>',
]);
$notix->campaigns->schedule($broadcast['id'], ['scheduledAt' => '2026-11-03T09:00:00+01:00']);
curl -X POST https://app.usenotix.dev/api/v1/broadcasts/from-template \
-H "Authorization: Bearer $NOTIX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"templateId": "tpl_october",
"name": "October newsletter",
"from": "Acme <news@acme.com>",
"contactBookId": "cb_customers"
}'
curl -X POST https://app.usenotix.dev/api/v1/broadcasts/cmp_123/schedule \
-H "Authorization: Bearer $NOTIX_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "scheduledAt": "2026-11-03T09:00:00+01:00" }'
A contact who unsubscribed from everything gets no broadcast, whatever their topics say.
every batchBy default, a key that schedules a broadcast for more than 50 people needs a code emailed to a person first.
over 50 peopleStop a send that is going out and pick it up later, from the console or the API.
pause, resumeA block editor for email, 54 starter templates across 14 industries, and variables you fill in from the API or a broadcast.
Explore TemplatesContact books, custom properties, segments and topics people can opt in and out of, all behind the same API key.
Explore AudienceEmail automations that run on their own: a trigger, then emails, delays, waits for events and branches, for every contact who qualifies.
Explore AutomationsMore on sending and deliverability on the Notix blog.
Import your list, pick a template and review it. The free plan does not ask for a card.