One suppression list
Hard bounces, complaints and unsubscribes are suppressed for your whole team, from the API, SMTP and broadcasts.
Emails > SuppressionsKeep contacts in lists with the details that matter to your business, group them with segments that stay up to date, and let each person choose the kinds of email they get.
One book per audience, each with the fields you need and a double opt-in switch.
Upload a CSV or paste rows: extra columns become properties, matched to the book's fields. From your app, add one contact or up to 1,000 in a single call, and keep them in step as people sign up and change plan.
import { Notix } from "notix-js";
const notix = new Notix(process.env.NOTIX_API_KEY);
await notix.contacts.create("cb_customers", {
email: "amara@example.com",
firstName: "Amara",
properties: { plan: "Pro", city: "Lagos" },
});
await notix.contacts.bulkCreate("cb_customers", [
{ email: "kofi@example.com", properties: { plan: "Starter" } },
{ email: "wanjiru@example.com", properties: { plan: "Pro" } },
]);
from notix import Notix
notix = Notix() # reads NOTIX_API_KEY
notix.contacts.create("cb_customers", {
"email": "amara@example.com",
"firstName": "Amara",
"properties": {"plan": "Pro", "city": "Lagos"},
})
<?php
use Notix\Notix;
$notix = new Notix(getenv('NOTIX_API_KEY'));
$notix->contacts->create('cb_customers', [
'email' => 'amara@example.com',
'firstName' => 'Amara',
'properties' => ['plan' => 'Pro', 'city' => 'Lagos'],
]);
curl -X POST https://app.usenotix.dev/api/v1/contactBooks/cb_customers/contacts \
-H "Authorization: Bearer $NOTIX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"email": "amara@example.com",
"firstName": "Amara",
"properties": { "plan": "Pro", "city": "Lagos" }
}'
A saved rule on a contact book. Notix works out who matches every time you use it.
Combine conditions on properties, sign-up date, opens and clicks, bounces and where a person is in an automation. Match all or any, with one level of groups.
{
"version": 1,
"match": "all",
"conditions": [
{ "type": "property", "key": "plan", "op": "equals", "value": "Pro" },
{ "type": "email_activity", "event": "opened", "op": "in_last_days", "days": 30 }
]
}A topic is a kind of email. Contacts switch topics on and off from the link in every broadcast.
The unsubscribe link in every broadcast opens a page where the contact switches each public topic on or off, or leaves everything. The signed link is the key, so there is no password to remember.
const { data: topic } = await notix.topics.create({
name: "Product updates",
description: "New features, about once a month.",
defaultSubscription: "OPT_IN",
visibility: "PUBLIC",
});
// Record a choice the person made in your own app.
await notix.topics.updateContactTopics(contactId, {
topics: [{ topicId: topic!.id, subscribed: false }],
});
curl -X POST https://app.usenotix.dev/api/v1/topics \
-H "Authorization: Bearer $NOTIX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Product updates",
"defaultSubscription": "OPT_IN",
"visibility": "PUBLIC"
}'
Hard bounces, complaints and unsubscribes are suppressed for your whole team, from the API, SMTP and broadcasts.
Emails > SuppressionsTurn it on and new contacts get a confirmation email before they count as subscribed.
per contact bookSet up the page people land on when they leave, under Settings in the console.
SettingsWrite a broadcast in the editor or start from a template, send it to a list or segment now or on a schedule, and read the results.
Explore BroadcastsEmail automations that run on their own: a trigger, then emails, delays, waits for events and branches, for every contact who qualifies.
Explore AutomationsA block editor for email, 54 starter templates across 14 industries, and variables you fill in from the API or a broadcast.
Explore TemplatesImport a CSV, add a segment and send your first broadcast. Contacts are never metered.