Enbbox Docs

How Enbbox Works

Complete architecture overview of Enbbox notification infrastructure — how workflows, triggers, subscribers, projects, and channels work together to deliver multi-channel notifications at scale.

How Enbbox Works

TL;DR — Your app triggers a workflow via the API → Enbbox executes each step (email, SMS, push, in-app, chat) in order, respecting delays, digests, and conditions → Notifications are delivered through 21+ integrated providers → You track everything in real-time on the dashboard.

Enbbox is a notification infrastructure built around the concept of workflows, projects, and subscriber-based delivery. It centralizes multi-channel messaging and supports real-time in-app experiences through a customizable Inbox component.

Architecture Overview

At its core, Enbbox uses workflows to orchestrate how notifications are sent, step by step, to different channels like email, SMS, in-app, push, and chat. Each workflow is triggered by your application and executed in the context of a specific project.

Your Application → Trigger Event → Enbbox Workflow → Channel Steps → Subscriber

Architecture Highlights

ComponentTechnologyPurpose
BackendRustHigh-performance notification processing
AnalyticsClickHouseReal-time activity tracking and delivery monitoring
DashboardNext.js 16Workflow builder, activity feed, and management UI
AuthenticationOry Hydra (OIDC)Secure identity management with PKCE
SDKsTypeScript, FlutterCross-platform client libraries

Core Concepts

Projects

A Project is an isolated workspace in Enbbox. Each project contains its own workflows, subscribers, integrations, and API keys. You can create multiple projects to separate different applications or teams.

  • Isolated data — Each project has its own subscribers, workflows, and activity history
  • Separate credentials — Each project has its own API key for triggering notifications

Workflows

A Workflow defines the sequence of steps a notification goes through. Workflows support channel steps (email, SMS, in-app, push, chat), action steps (delay, digest, custom), and conditional logic. For example:

  1. Send an in-app notification
  2. Wait 1 hour
  3. If unread, send an email
  4. Wait 24 hours
  5. If still unread, send an SMS

Triggers

A Trigger is an API call from your application that starts a workflow execution. Each trigger includes:

  • Workflow identifier — Which workflow to execute
  • Subscriber(s) — Who to notify
  • Payload — Dynamic data to populate notification content
await enbbox.trigger("order-shipped", {
  to: { subscriberId: "user-123" },
  payload: {
    orderNumber: "ORD-456",
    trackingUrl: "https://...",
  },
});

Subscribers

A Subscriber is a user who receives notifications. Each subscriber has a unique subscriberId and can have:

  • Contact details — Email, phone number, device tokens
  • Preferences — Channel and workflow notification preferences
  • Custom data — Arbitrary metadata for personalization
  • Credentials — Device tokens for push, chat IDs for messaging channels

Topics

Topics are named groups of subscribers. Instead of triggering a workflow for each subscriber individually, you can trigger it for a topic, and all subscribed members receive the notification. This is ideal for broadcast scenarios like product announcements or system alerts.

Channels and Integrations

Enbbox supports 5 notification channels, each backed by configurable Integrations (provider connections):

ChannelExample ProvidersUse Case
In-AppBuilt-in Inbox componentReal-time alerts and updates
EmailSendGrid, Resend, Amazon SES, PostmarkTransactional and marketing
SMSTwilio, Plivo, VonageCritical alerts and OTPs
PushFirebase Cloud Messaging, APNsMobile engagement
ChatSlack, Discord, Microsoft TeamsTeam collaboration alerts

How It All Connects

  1. Configure — Set up integrations, create workflows, define notification content
  2. Trigger — Your application fires a trigger event with subscriber and payload data
  3. Execute — Enbbox processes the workflow steps in order, respecting delays, digests, and conditions
  4. Deliver — Notifications are sent through the configured channel providers
  5. Track — Monitor delivery status, engagement, and subscriber preferences in the dashboard

Next Steps

On this page