Quick Start
Send your first notification with Notiflows in minutes
This guide walks you through creating your first notiflow and triggering it from your application. By the end, you'll have a working notification flowing through Notiflows.
Prerequisites
- A Notiflows account (sign up here)
- A project created in your Notiflows dashboard
1. Get Your API Key
Every project in Notiflows has its own set of API keys. You'll need the Secret API Key to trigger notiflows from your backend.
- Open your project in the Notiflows dashboard
- Navigate to Settings > API Keys
- Copy your Secret API Key (starts with
sk_)
Keep your secret key secure. Never expose it in client-side code or public repositories.
Store your API key as an environment variable:
export NOTIFLOWS_API_KEY=sk_your_api_key_here2. Create Your First Notiflow
A notiflow defines what happens when you trigger a notification. It's a sequence of steps that can include sending messages through different channels, adding delays, batching notifications, and more.
- In your project, go to Notiflows
- Click Create notiflow
- Enter a name, for example:
welcome-email - Click Create
You'll be taken to the notiflow overview. Now let's build it.
3. Design the Notiflow
Click on Steps to open the visual builder. Every notiflow starts with a Trigger node and ends with an End node.
Add a Channel Step
- From the right sidebar, drag an Email step onto the canvas
- Connect it between the Trigger and End nodes
- Click on the Email step to configure it
Configure the Channel
- Select an email channel (you'll need to have one configured in Channels)
- Set up your email template:
- Subject:
Welcome to our platform, {{ data.name }}! - Body: Design your email content using the template editor
- Subject:
You can use Liquid variables like {{ data.name }} or {{ recipient.email }} that will be populated from the data you send when triggering the notiflow.
Don't have a channel configured yet? Head to Channels in your project and connect an email provider like Resend, SendGrid, or Amazon SES.
4. Publish Your Notiflow
Notiflows use versioning to help you safely iterate on your notification logic. When you make changes, they're saved as a draft version. To make your notiflow live, you need to publish it.
- Go to the Changes tab
- You'll see your draft version listed
- Click Publish
- Confirm the publish action
Your notiflow is now live and ready to receive triggers.
5. Activate the Notiflow
Before a notiflow can process triggers, it needs to be activated.
- Go to the Overview tab
- Toggle the notiflow to Active
6. Install the SDK
Add the Notiflows SDK to your backend application.
npm install @notiflows/nodepip install notiflowsgem install notiflowsgo get github.com/notiflows/notiflows-gocomposer require notiflows/notiflows-php# Maven
<dependency>
<groupId>com.notiflows</groupId>
<artifactId>notiflows-java</artifactId>
<version>1.0.0</version>
</dependency>dotnet add package Notiflows7. Trigger the Notiflow
Now you can trigger your notiflow from your backend whenever you want to send a notification.
import { Notiflows } from '@notiflows/node';
const client = new Notiflows(process.env.NOTIFLOWS_API_KEY);
await client.notify({
notiflow: 'welcome-email',
recipients: [
{ external_id: 'user_123' }
],
data: {
name: 'Jane',
},
});from notiflows import Notiflows
import os
client = Notiflows(os.environ["NOTIFLOWS_API_KEY"])
client.notify(
notiflow="welcome-email",
recipients=[
{ "external_id": "user_123" }
],
data={
"name": "Jane"
}
)require 'notiflows'
client = Notiflows.new(ENV['NOTIFLOWS_API_KEY'])
client.notify(
notiflow: 'welcome-email',
recipients: [
{ external_id: 'user_123' }
],
data: {
name: 'Jane'
}
)package main
import (
"os"
"github.com/notiflows/notiflows-go"
)
func main() {
client := notiflows.NewClient(os.Getenv("NOTIFLOWS_API_KEY"))
client.Notify(¬iflows.NotifyParams{
Notiflow: "welcome-email",
Recipients: []notiflows.Recipient{
{ExternalID: "user_123"},
},
Data: map[string]any{
"name": "Jane",
},
})
}use Notiflows\Client;
$client = new Client(getenv('NOTIFLOWS_API_KEY'));
$client->notify([
'notiflow' => 'welcome-email',
'recipients' => [
['external_id' => 'user_123']
],
'data' => [
'name' => 'Jane'
]
]);import com.notiflows.Client;
import com.notiflows.Recipient;
import java.util.List;
import java.util.Map;
public class Main {
public static void main(String[] args) {
var client = new Client(System.getenv("NOTIFLOWS_API_KEY"));
client.notify(
"welcome-email",
List.of(new Recipient("user_123")),
Map.of("name", "Jane")
);
}
}using Notiflows;
var client = new NotiflowsClient(
Environment.GetEnvironmentVariable("NOTIFLOWS_API_KEY")
);
await client.NotifyAsync(
notiflow: "welcome-email",
recipients: [
new Recipient("user_123")
],
data: new Dictionary<string, string>
{
{ "name", "Jane" }
}
);Understanding the Parameters
| Parameter | Description |
|---|---|
notiflow | The identifier of the notiflow to trigger (e.g., welcome-email) |
recipients | An array of recipient objects, each with an external_id field |
data | (Optional) An object containing variables used in your notification templates |
topic | Alternative to recipients - a topic identifier to notify all subscribers |
actor | (Optional) The user performing the action, with an external_id field |
Use either recipients or topic, not both. With recipients, you specify exactly who gets notified. With topic, all users subscribed to that topic receive the notification.
8. Verify Delivery
After triggering your notiflow, you can verify the notification was sent:
- Go to your notiflow's Runs tab to see execution history
- Click on a run to see detailed delivery information for each recipient
- Check the Notifications section in your project to see all sent notifications
What's Next?
Now that you've sent your first notification, explore more features:
Add More Channels
Send notifications via SMS, push, in-app, Slack, and more
User Management
Manage user profiles and their notification preferences
Build Complex Flows
Add delays, batching, throttling, and multi-channel orchestration
React In-App Feed
Display real-time notifications in your web application