Customize notifications per tenant

White-label notifications with per-tenant templates, preferences and providers. Fully managed by SuprSend with no custom logic in code required.

Let every tenant own their notification experience

Multi-channel targetting

Personalize templates for every tenant

Define headers, footers, and branding per tenant. Or let tenants customize templates themselves via an embedded UI in your app.
Multi-channel targetting

Route through tenant’s brand handles

Send emails and SMS using your customers' own domains and shortcodes for better recognition and trust.
Multi-channel targetting

Let customers set end-user notification preferences

Give tenants the power to manage their end user’s preferences with SuprSend’s preference center. 
Multi-channel targetting

Unlock full observability for your customers

Provide real-time logs, delivery statuses, and insights so each of your customers always stay in the know.
Multi-channel targetting

Enable engagement campaigns directly from your platform

Offer campaign workflows and targeting controls using APIs and ready UI components.
Multi-channel targetting

Embed notification analytics inside your platform

Let your customers track, troubleshoot, and optimize notifications from within your platform.
Icon for transactional notifications

Scale the right way—no rebuilding per tenant required

Deliver white-labeled notifications

Match each tenant’s guidelines with custom logos, colors, and layouts.

Send tenant-specific content

Customize template content per tenant, not just styling, but messaging too.

Let tenants run their own campaigns

Allow tenants to create and send one-off campaigns, like product launches and promotions, directly from your platform.

Route through tenant-owned handles

Send notifications via your customers’ verified domains for maximum deliverability and brand trust.

Centralize notifications across
channels, teams, and products

One API for all channels

One API for all channels

Send via email, SMS, push, Slack, and more — all through one API.
Centralized notifications

Centralize content with WYSIWYG templates

Build once, personalize with user data, send across any channel.
Centralized notifications

Put users in control with preferences 

Support opt-ins by channel, category, and frequency out of the box.
Centralized notifications

Alert users within your application with in-app notification center

Easily alert users within your application.
Icon for transactional notifications

Developers-first notification platform

Single API to send notifications on all channels
SDKs available in all major languages
Comprehensive documentation
Ready components and headless library available to build beautiful UI
Seamless integration with leading channel providers and third-party platforms

SDKs available in all major languages

const { Event } = require("@suprsend/node-sdk");
const distinct_id = "0fxxx8f74-xxxx-41c5-8752-xxxcb6911fb08”;
const event_name = "product_purchased”;
const properties = {
"order_id" : "123456",
"amount" : "$4900"
}
const event = new Event (distinct_id, event_name, properties, {brand_id : "default", idempotency_key = "__uniq_request_id__"});
const response  = supr_client.track_event(event);response.then((res) => console.log("response", res));
from suprsend import Event
distinct_id = "0fxxx8f74-xxxx-41c5-8752-xxxcb6911fb08”
event_name = "product_purchased”
properties = {
"order_id" : "#123456",
"amount" : "$4900"
}
event = Event (distinct_id = distinct_id, event_name = event_name, properties = properties, idempotency_key = "__uniq_request_id__", brand_id = "default")
response = supr_client.track_event(event)
print(response)
import suprsend.Suprsend;
import Suprsend.Event;
public class Event {
public static void main (String[] args) throws Exception {
trackEvent();
}
private static Subscriber trackEvent() throws SuprsendException {
Suprsend suprsendClient = new Suprsend("_workspace_key_", "_workspace_secret_");
String distinctId ="0fxxx8f74-xxxx-41c5-8752-xxxcb6911fb08";
String eventName = "product_purchased";
JSONObject eventProps = new JSONObject()
.put("order_id","#123456")
.put("amount", "$4900");
Event e = new Event(distinctId, eventName, eventProps);
JSONObject response = suprClient.trackEvent(e);
System.out.println(response);
}
}
package main
import (
"log"

"
github.com/suprsend/suprsend-go"
)
func main() {
ev := &suprsend.Event {
Event name: "product purchased",
DistinctId: "0fxxx8f74-xxxx-41c5-8752-xxxcb6911fb08",
Properties: map[string]interface{}{
"order_id" : "#123456",
"amount" : "$4900"
},
}
_, err = suprClient.TrackEvent(ev)
if err != nil {
log.Fatalln(err)
}
}
curl --request POST \
--url https://hub.suprsend.com/event/ \
--header 'Authorization: Bearer SS.wAxxxxxxxx' \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--data '
{
"distinct_id" : "0fxxx8f74-xxxx-41c5-8752-xxxcb6911fb08",
"event" : "product_purchased",
"properties" : {
"order_id" : "#123456",
"amount" : "$4900"
}
}
'

Implement a centralized notification
infrastructure in weeks, not months

By clicking “Accept All Cookies”, you agree to the storing of cookies on your device to enhance site navigation, analyze site usage, and assist in our marketing efforts. View our Privacy Policy for more information.