Notify

Reach people where they'll see it.

One call sends a notification to your app's inbox, email or push. Your users choose what reaches them, and you can see why anything didn't.

One call, every channel.

Send a notification type to your users by your own user ids. Notify writes it for the inbox, the email and each push platform, for up to 1,000 people per call.

Read the guide

Your users choose.

People pick which kinds of notification reach them on which channel, and set quiet hours in their own timezone. Security notices still get through.

Read the guide

Email them only if they haven't seen it.

Every notification lands in your app's inbox, and can go out as a push too. If it is still unread after a delay you set, Notify sends an email.

Read the guide

Know why something didn't arrive.

Every delivery is logged with its outcome and the reason. Explain answers “why didn't they get it?” for one person, in the console.

Read the guide

How it works

Your first notification in three steps.

  1. Turn on Notify and add a notification type with its channels.
  2. Send it from your server to your own user id.
  3. Show the inbox in your app, with the React component or any framework.
server.ts
import { Notify } from "@productcraft/notify";

// Server only: reads PRODUCTCRAFT_API_KEY and PRODUCTCRAFT_WORKSPACE_ID.
const notify = new Notify();

// Your own user id is the recipient. The type's routing picks the channels,
// for example the inbox always, then push, with email as the fallback.
await notify.notifications.send(
  {
    type: "invoice.paid",
    recipients: [{ external_id: "user_123", email: "ada@example.com" }],
    data: { amount: "12.00", invoice_url: "https://app.example.com/invoices/inv_123" },
  },
  // A retry with the same key returns the same notification, never a second one.
  { idempotencyKey: "invoice-paid:inv_123" },
);

More in the box

Everything else Notify does.

What you bring

The keys only you can create. Notify handles everything after them.

  • iOS: your APNs key A key from your own Apple Developer account. Apple ties it to your account, so nobody else can create it for you. Create an APNs key
  • Android: your Firebase project A service account from your own Firebase project, with only the messaging role. Set up Firebase
  • Web push: nothing Notify makes the keys browsers need, so web push works without an Apple or Google account. Set up web push
  • Email: a sender in Mail Email goes out through ProductCraft Mail, from your verified domain.

For your AI agents

MCP tools that list notification types and deliveries and explain skipped messages, behind the policies you set on each key. No tool can read or upload a credential. Read about MCP

Your first notification, end to end.

Send one to your own user id and watch it land in the inbox. Notify is free during the preview, with documented limits and no SLA.

Coming from Knock, Courier, OneSignal or Novu? Read the migration guide