The PHP Novu SDK and package provides a fluent and expressive interface for interacting with Novu's API and managing notifications.
PHP 7.2+ and Composer are required.
To get the latest version of Novu PHP SDK, simply require it:
composer require unicodeveloper/novu
To interact with the Novu SDK, you can instantiate it with either just an API key or with a configuration array that includes the API key and a custom base URI.
use Novu\SDK\Novu;
$novu = new Novu('YOUR_API_KEY_HERE');
// Sign up on https://web.novu.co and grab your API key from https://web.novu.co/settings
If you need to specify a custom base URI (e.g., if you are pointing to a staging environment or a local development setup), you can pass an array with the apiKey
and baseUri
:
use Novu\SDK\Novu;
$config = [
'apiKey' => 'YOUR_API_KEY_HERE',
'baseUri' => 'https://custom-api-url.com/v1/'
];
$novu = new Novu($config);
// Get started with self-hosted Novu here https://docs.novu.co/overview/docker-deploy
Once the Novu
instance is created, you can use it to perform all the actions that Novu's API provides.
Trigger an event - send notification to subscribers:
$response = $novu->triggerEvent([
'name' => '<REPLACE_WITH_TEMPLATE_NAME_FROM_ADMIN_PANEL>',
'payload' => ['customVariables' => 'Hello'],
'to' => [
'subscriberId' => '<SUBSCRIBER_IDENTIFIER_FROM_ADMIN_PANEL>',
'phone' => '07983882186'
]
])->toArray();
Bulk Trigger events:
$response = $novu->bulkTriggerEvent([
[
'name' => '<REPLACE_WITH_TEMPLATE_NAME_FROM_ADMIN_PANEL>',
'to' => '<SUBSCRIBER_IDENTIFIER_FROM_ADMIN_PANEL>',
'payload' => ['customVariables' => 'Hello']
],
[
'name' => '<REPLACE_WITH_TEMPLATE_NAME_FROM_ADMIN_PANEL>',
'to' => '<SUBSCRIBER_IDENTIFIER_FROM_ADMIN_PANEL>',
'payload' => ['customVariables' => 'World']
],
[
'name' => '<REPLACE_WITH_TEMPLATE_NAME_FROM_ADMIN_PANEL>',
'to' => '<SUBSCRIBER_IDENTIFIER_FROM_ADMIN_PANEL>',
'payload' => ['customVariables' => 'Again']
]
])->toArray();
Trigger an event - send notification to topics
$response = $novu->triggerEvent([
'name' => '<event_name>',
'payload' => ['customVariables' => 'Hello'],
'to' => [
[
'type' => 'Topic',
'topicKey' => $topicKey
],
[
'type' => 'Topic',
'topicKey' => $topicSecondKey
]
]
])->toArray();
Broadcast event to all existing subscribers:
$response = $novu->broadcastEvent([
'name' => '<REPLACE_WITH_EVENT_NAME_FROM_ADMIN_PANEL>',
'payload' => ['customVariables' => 'Hello'],
'transactionId' => '<REPLACE_WITH_TRANSACTION_ID>'
])->toArray();
Cancel triggered event. Using a previously generated transactionId during the event trigger, this action will cancel any active or pending workflows:
$response = $novu->cancelEvent($transactionId);
// Get list of subscribers
$subscribers = $novu->getSubscriberList();
// Create subscriber & get the details of the recently created subscriber returned.
$subscriber = $novu->createSubscriber([
'subscriberId' => 'YOUR_SYSTEM_USER_ID>',
'email' => '<insert-email>', // optional
'firstName' => '<insert-firstname>', // optional
'lastName' => '<insert-lastname>', // optional
'phone' => '<insert-phone>', //optional
'avatar' => '<insert-avatar>', // optional
])->toArray();
// Bulk create subscribers
$response = $novu->bulkCreateSubscribers([
[
'subscriberId' => 'SUBSCRIBER_IDENTIFIER>',
'email' => '<insert-email>', // optional
'firstName' => '<insert-firstname>', // optional
'lastName' => '<insert-lastname>', // optional
'avatar' => '<insert-avatar>', // optional
],
[
'subscriberId' => 'SUBSCRIBER_IDENTIFIER>',
'email' => '<insert-email>', // optional
'firstName' => '<insert-firstname>', // optional
'lastName' => '<insert-lastname>', // optional
'avatar' => '<insert-avatar>', // optional
],
]);
// Get subscriber
$subscriber = $novu->getSubscriber($subscriberId)->toArray();
// Update subscriber
$subscriber = $novu->updateSubscriber($subscriberId, [
'email' => '<insert-email>', // optional
'firstName' => '<insert-firstname>', // optional
'lastName' => '<insert-lastname>', // optional
'phone' => '<insert-phone>', //optional
'avatar' => '<insert-avatar>', // optional
])->toArray();
// Delete subscriber
$novu->deleteSubscriber($subscriberId);
// Update subscriber credentials
$response = $novu->updateSubscriberCredentials($subscriberId, [
'providerId' => '<insert-providerId>',
'credentials' => '<insert-credentials>'
])->toArray();
// Update subscriber online status
$isOnlineStatus = true; // or false
$response = $novu->updateSubscriberOnlineStatus($subscriberId, $isOnlineStatus)->toArray();
// Get subscriber preferences
$preferences = $novu->getSubscriberPreferences($subscriberId)->toArray();
// Update subscriber preference
$novu->updateSubscriberPreference($subscriberId, $templateId, [
'channel' => 'insert-channel',
'enabled' => 'insert-boolean-value' // optional
]);
// Get a notification feed for a particular subscriber
$feed = $novu->getNotificationFeedForSubscriber($subscriberId);
// Get the unseen notification count for subscribers feed
$count = $novu->getUnseenNotificationCountForSubscriber($subscriberId);
// Mark a subscriber feed message as seen
$novu->markSubscriberFeedMessageAsSeen($subscriberId, $messageId, []);
// Mark message action as seen
$novu->markSubscriberMessageActionAsSeen($subscriberId, $messageId, $type, []);
// Create a Topic
$novu->createTopic([
'key' => 'frontend-users',
'name' => 'All frontend users'
]);
// Fetch all topics
$novu->getTopics();
// Get a topic
$novu->topic($topicKey);
// Add subscribers to a topic
$subscribers = [
'63e271488c028c44fd3a64e7',
'3445'
];
$novu->topic($topicKey)->addSubscribers($subscribers);
// Remove subscribers from a topic
$subscribers = [
'63e271488c028c44fd3a64e7',
'3445'
];
$novu->topic($topicKey)->removeSubscribers($subscribers);
// Rename a topic
$novu->topic($topicKey)->rename($topicName);
// Get activity feed
$feed = $novu->getActivityFeed();
// Get activity statistics
$stats = $novu->getActivityStatistics()->toArray();
// Get activity graph statistics
$graphStats = $novu->getActivityGraphStatistics()->toArray();
// Get integrations
$novu->getIntegrations()->toArray();
// Create integration
$novu->createIntegration([
'providerId' => '<insert->provider->id>',
'channel' => '<insert->channel>',
'credentials' => [
// insert all the fields
],
'active' => true,
'check' => true
])->toArray();
// Get active integrations
$novu->getActiveIntegrations()->toArray();
// Get webhook support status for provider
$novu->getWebhookSupportStatusForProvider($providerId)->toArray();
// Update integration
$novu->updateIntegration($integrationId, [
'active' => true,
'credentials' => [
// insert all the fields
],
'check' => true
])->toArray();
// Delete integration
$novu->deleteIntegration($integrationId);
// filter layouts
$novu->filterLayouts(['pageSize' => 1])->toArray();
// Create layout
$novu->createLayout([
'name' => '<insert-name-of-layout>',
'identifier' => '<insert-identifier>',
'content' => '<insert-html-content>',
])->toArray();
// Get a layout
$novu->getLayout('<insert-layout-id>')->toArray();
// Set Layout as default
$novu->setLayoutAsDefault('<insert-layout-id>');
// Update layout
$novu->updateLayout('<insert-layout-id>', [
'name' => '<insert-name-of-layout>',
'identifier' => '<insert-identifier>',
'content' => '<insert-html-content>',
])->toArray();
// Delete layout
$novu->deleteLayout('<insert-layout-id>');
// Get all notifications
$novu->getNotifications()->toArray();
// Get all notifications with query parameters
$queryParams = [
'page' => 3
];
$novu->getNotifications($queryParams)->toArray();
// Get one notification
$novu->getNotification($notificationId)->toArray();
// Get notification stats
$novu->getNotificationStats()->toArray();
// Get Notification graph stats
$novu->getNotificationGraphStats()->toArray();
// Get Notification graph stats with query parameters
$queryParams = [
'days' => 5
];
$novu->getNotificationGraphStats($queryParams)->toArray();
// Get notification templates
$novu->getNotificationTemplates()->toArray();
// Create notification template
$novu->createNotificationTemplate([
"name" => "name",
"notificationGroupId" => "notificationGroupId",
"tags" => ["tags"],
"description" => "description",
"steps" => ["steps"],
"active" => true,
"draft" => true,
"critical" => true,
"preferenceSettings" => preferenceSettings
])->toArray();
// Update notification template
$novu->updateNotificationTemplate($templateId, [
"name" => "name",
"tags" => ["tags"],
"description" => "description",
"identifier" => "identifier",
"steps" => ["steps"],
"notificationGroupId" => "notificationGroupId",
"active" => true,
"critical" => true,
"preferenceSettings" => preferenceSettings
])->toArray();
// Delete notification template
$novu->deleteNotificationTemplate($templateId);
// Get notification template
$novu->getANotificationTemplate($templateId);
// Update notification template status
$novu->updateNotificationTemplateStatus($templateId, [
'active' => true
])
// Create Notification group
$novu->createNotificationGroup([
'name' => '<insert-name>'
]);
// Get Notification groups
$novu->getNotificationGroups()->toArray();
// Get changes
$novu->getChanges();
// Get changes count
$novu->getChangesCount()->toArray();
// Apply changes
$novu->applyBulkChanges([
'changeIds' = [
'<insert-all-the-change-ids>'
]
])->toArray();
// Apply change
$novu->applyChange($changeId, []);
// Get current environment
$novu->getCurrentEnvironment()->toArray();
// Create environment
$novu->createEnvironment([
'name' => '<insert-name>',
'parentId' => '<insert-parent-id>' // optional
])->toArray();
// Get environments
$novu->getEnvironments()->toArray();
// Update environment by id
$novu->updateEnvironment($envId, [
"name" => "name",
"identifier" => "identifier",
"parentId" => "parentId"
]);
// Get API KEYS
$novu->getEnvironmentsAPIKeys()->toArray();
// Regenerate API KEYS
$key = $novu->regenerateEnvironmentsAPIKeys()->toArray();
// Update Widget Settings
$novu->updateWidgetSettings([
'notificationCenterEncryption' => true
]);
// Create feed
$novu->createFeed([
'name' => '<insert-name-for-feed>'
]);
// Get feeds
$novu->getFeeds()->toArray();
// Delete feed
$novu->deleteFeed();
// Get messages
$novu->getMessages([
'page' => 1,
'channel' => ['<insert-channel>'],
]);
// Delete message
$novu->deleteMessage();
// Get execution details
$novu->getExecutionDetails([
'notificationId' => '<insert-notification-id>',
'subscriberId' => '<insert-subscriber-id>'
])->toArray();
// Create tenant
$novu->createTenant([
'identifier' => '<identifier>',
'name' => '<name>',
]);
// Get tenants
$novu->getTenants()->toArray();
// Validate MX Record for Inbound Parse
$novu->validateMXRecordForInboundParse()->toArray();
Novu PHP SDK was created by Prosper Otemuyiwa under the MIT license.