Subscribers
In Novu, we call the entities designed to receive notifications as Subscribers. Each subscriber is unique and identified by a unique subscriberId.
We recommend using the internal unique id your application uses for a specific user as the
subscriberId.
Each subscriber has the following data points:
- User Data - Data stored in the subscriber object that you can easily access in your notification templates. This contains basic info such as first name, last name, avatar, locale, email, and phone. This data is fixed and structured.
 - Custom Data - Apart from the above fixed structured user data, any unstructured custom data such as user's address, nationality, height, etc can also be stored in the 
datafield using key-value pairs. - Channel Specific Credentials - 
deviceTokensrequired to send push notifications andwebhookUrlfor chat channel providers can also be stored. 
Subscriber attributes
| Prop | Type | Default | 
|---|---|---|
subscriberId? | string | - | 
firstName? | string | - | 
lastName? | string | - | 
email? | string | - | 
phone? | string | - | 
locale? | string | - | 
avatar? | string | - | 
data? | object | {} | 
Creating a subscriber
We support creating new subscriber using two ways, Ahead of Trigger means adding subscribers before triggering notification or Just-in-time means sending complete subscriber data in to field while triggering.
Just-in-time
A non-existing subscriber can be added by sending subscriber data in to field of the trigger method. If any subscriber with provided subscriberId does not exists, a new subscriber will be created. In this case, subscriber will be created first and then the trigger will be executed synchronously.
When triggering the workflow, you must specify all required to fields per the channels in the workflow. For example, if an email step is included in the workflow, then the to.email field must be specified. Similarly if an SMS step is included, the to.phone field must be specified.
If you are defining workflows with code, you can use the subscriberId to hydrate subscriber data directly from your database or other sources during workflow execution. This is useful when you don't want to store all the subscriber data in Novu.