Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: broken links in how novu works #754

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion community/get-involved.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ Are you passionate about notifications like we are? There are many different—a
### PRs, issues, and bug reports

- Check out our [contributors guide](https://github.com/novuhq/novu/blob/next/CONTRIBUTING.md)
- Once you’ve gone through our [development process](https://docs.novu.co/community/run-in-local-machine), you can contribute directly to open issues.
- Once you’ve gone through our [development process](/community/run-in-local-machine), you can contribute directly to open issues.
- Open a new issue if a relevant one isn’t already open.
- Also, you can create bug reports if you find a bug somewhere.
- Or a feature request if you find something that should be a feature but isn't.
Expand Down
4 changes: 2 additions & 2 deletions community/monorepo-structure.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ This will:
- copy the `.env.example` file to the `.env` file for the API service.
- execute the `npm run build` command to build all the dependency trees locally.

For additional information on running Novu locally, visit the [run locally](https://docs.novu.co/community/run-in-local-machine) guide.
For additional information on running Novu locally, visit the [run locally](/community/run-in-local-machine) guide.

## Apps

Expand Down Expand Up @@ -129,4 +129,4 @@ Novu provides a single API to manage providers across multiple channels with a s

### 📱 In-App

- [Novu](https://docs.novu.co/notification-center/getting-started)
- [Novu](/integrations/providers/in-app/overview)
2 changes: 1 addition & 1 deletion framework/controls.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ You can use variables in any step control value, whether set by the developer or
</Frame>

### Variable Options
- **Subscriber Attributes**: Access all [subscriber attributes](https://docs.novu.co/concepts/subscribers#subscriber-attributes). Example: `{{subscriber.firstName}}`
- **Subscriber Attributes**: Access all [subscriber attributes](/concepts/subscribers#subscriber-attributes). Example: `{{subscriber.firstName}}`
- **Payload Variables**: Use all payload variables defined in the `payloadSchema`. Example: `{{payload.userId}}`
- **Liquid Filters**: Apply [liquid filters](https://liquidjs.com/filters/overview.html) to format or manipulate variable values. Examples: `{{subscriber.firstName | append: ': ' | append: payload.status | capitalize}}` or
`{{payload.invoiceDate | date: '%a, %b %d, %y'}}` will format the date as `Thu, Jan 01, 24`
Expand Down
44 changes: 25 additions & 19 deletions getting-started/how-novu-works.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Novu is an open-source notification infrastructure platform that greatly reduces

We designed Novu with both developers and product teams in mind: it’s easy for developers to implement quickly, and simple for less-technical users to interact with and maintain content with a powerful intuitive dashboard.

Novu functions as an abstraction layer between your application and end users, and managed all aspects of notification workflow logic and delivery provider management.
Novu functions as an abstraction layer between your application and end users, and manages all aspects of notification workflow logic and delivery provider management.

![how-novu-works](/getting-started/media-assets/how-novu-works.png)

Expand Down Expand Up @@ -55,15 +55,15 @@ There are two ways to integrate Novu with your application or website:
</Card>
</CardGroup>

Every request you make is automatically routed to the correct [environment](/concepts/environments), ensuring clean separation between **development** and **production** environments.
Every request you make is automatically routed to the correct [environment](/concepts/environments), ensuring clear separation between **development** and **production** environments.

---

## Workflows

Workflows are the core building blocks of Novu's notification system. They enable you to design sophisticated messaging sequences that can span multiple communication channels like in-app, email, SMS, chat, and push.

Using intuitive logical operators and [action steps](/concepts/workflows#action-step), you create dynamic notification paths that automatically adapt based on your [end user](/additional-resources/glossary#subscribers) preferences and behavior.
Using intuitive logical operators and [action steps](/concepts/workflows#action-step), you can create dynamic notification paths that automatically adapt based on your [end user](/additional-resources/glossary#subscribers) preferences and behavior.

<Tip>
**Every notification in Novu originates from a workflow trigger, making workflows the central orchestration layer for your entire messaging infrastructure.**
Expand All @@ -73,7 +73,7 @@ Whether you need to send a simple welcome email or implement a complex multi-ste

![novu-workflows](/getting-started/media-assets/novu-workflow.png)

In the code snippets below, you can see how an API request looks like to trigger a workflow.
In the code snippets below, you can see how a workflow trigger API request looks.

<CodeGroup>

Expand All @@ -87,7 +87,9 @@ curl -X POST https://api.novu.co/v1/events/trigger \
"subscriberId": "<UNIQUE_SUBSCRIBER_IDENTIFIER>",
"email": "[email protected]",
"firstName": "John",
"lastName": "Doe"
"lastName": "Doe",
"phone": "+1234567890",
"avatar": "AVATAR_URL",
},
"payload": {
"name": "Hello World",
Expand All @@ -109,6 +111,8 @@ await novu.trigger("<WORKFLOW_TRIGGER_IDENTIFIER>", {
email: "[email protected]",
firstName: "John",
lastName: "Doe",
phone: "+1234567890"
avatar: "AVATAR_URL",
},
payload: {
name: "Hello World",
Expand Down Expand Up @@ -292,12 +296,12 @@ Subscribers are in most cases users in your application who receive notification

The subscriber is identified through one of two methods:

- A `subscriber_id` - this uniquely identifies a specific user in your system (similar to how each user has a unique user_id in a database)
- A `topic_id` - this represents a channel or category that multiple subscribers can opt into (like a subscription group)
- A `subscriberId` - this uniquely identifies a specific user in your system (similar to how each user has a unique user_id in a database)
- A `topicKey` - this represents a channel or category that multiple subscribers can opt into (like a subscription group)


<Info>
**When you trigger workflows for subscribers, Novu maintains a cache of their notification-related data, including:**
**When you trigger workflows to subscribers, Novu maintains a cache of their notification-related data, including:**

- Required contact information (email, phone number)
- Profile details (avatar URL)
Expand All @@ -310,6 +314,7 @@ Below is a detailed breakdown of the subscriber object:
```json
{
// Core Identifiers
"subscriberId": "UNIQUE_USER_IDENTIFIER_IN_YOUR_SYSTEM",
"_id": "NOVU_GENERATED_SUBSCRIBER_ID",
"_organizationId": "NOVU_GENERATED_ORG_ID",
"_environmentId": "NOVU_GENERATED_ENV_ID",
Expand All @@ -320,6 +325,8 @@ Below is a detailed breakdown of the subscriber object:
"email": "[email protected]",
"phone": "+98712345670",
"avatar": "AVATAR_URL",
"locale": "en_US",
"avatar": "AVATAR_URL",

// Custom Data
"data": {
Expand Down Expand Up @@ -354,7 +361,6 @@ Below is a detailed breakdown of the subscriber object:
"__v": 0,
"isOnline": false,
"lastOnlineAt": "2022-10-13T17:41:53.238Z",
"avatar": "AVATAR_URL",
"id": "NOVU_GENERATED_SUBSCRIBER_ID"
}
```
Expand All @@ -380,7 +386,7 @@ Each channel connects to a specific delivery [provider](/additional-resources/gl
Use these channels individually or combine them in workflows for multi-channel notification delivery.
</Step>
<Step title="Trigger the workflow">
Make an API call or use a `cURL` command to trigger your workflow using a `subscriber_id`.
Make an API call or use a `cURL` command to trigger your workflow to a `subscriberId`.
</Step>
</Steps>

Expand All @@ -394,31 +400,31 @@ Here's an overview of our supported channels and providers:
<Accordion title="Email" icon="envelope">
Send emails through leading providers including [Amazon SES](https://aws.amazon.com/ses/), [Mailersend](https://www.mailersend.com/), [Mailgun](https://www.mailgun.com/), [Mailjet](https://www.mailjet.com/), [Mailtrap](https://mailtrap.io/), [Mandrill](https://mandrillapp.com/), [Postmark](https://postmarkapp.com/), [Resend](https://resend.com/), [Sendgrid](https://sendgrid.com/), [SMTP](https://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol), and [Sparkpost](https://www.sparkpost.com/).

[Learn more about email channel →](https://docs.novu.co/channels/email)
[Learn more about email channel →](/integrations/providers/email/overview)
</Accordion>

<Accordion title="SMS" icon="message-sms">
Deliver SMS messages through trusted providers including [Africa's Talking](https://africastalking.com/), [Amazon SNS](https://aws.amazon.com/sns/), [Mailersend](https://www.mailersend.com/), [MessageBird](https://messagebird.com/), [Plivo](https://www.plivo.com/), [Sinch](https://www.sinch.com/), [Telnyx](https://telnyx.com/), [Twilio](https://www.twilio.com/), and [Vonage](https://www.vonage.com/).

[Learn more about SMS channel →](https://docs.novu.co/channels/sms)
[Learn more about SMS channel →](/integrations/providers/sms/overview)
</Accordion>

<Accordion title="Push Notifications" icon="mobile">
Send push notifications across major platforms including [Apple Push Notification Service](https://developer.apple.com/notifications/) for iOS, [Expo](https://expo.dev/) for React Native, and [Firebase Cloud Messaging](https://firebase.google.com/products/cloud-messaging) for Android.

[Learn more about Push channel →](https://docs.novu.co/channels/push)
[Learn more about Push channel →](/integrations/providers/push/overview)
</Accordion>

<Accordion title="Chat Platforms" icon="message">
Integrate with popular messaging platforms including [Discord](https://discord.com/), [Microsoft Teams](https://www.microsoft.com/teams), [Slack](https://slack.com/), [Telegram](https://telegram.org/), and [WhatsApp](https://www.whatsapp.com/).

[Learn more about Chat channel →](https://docs.novu.co/channels/chat)
[Learn more about Chat channel →](/integrations/providers/chat/overview)
</Accordion>

<Accordion title="In-app Notifications" icon="bell">
Build native notification experiences with our real-time notification feed API, ready-to-use UI components, and custom integration options for seamless implementation in your application.

[Learn more about In-app channel →](https://docs.novu.co/channels/in-app)
[Learn more about In-app channel →](/integrations/providers/in-app/overview)
</Accordion>
</AccordionGroup>

Expand Down Expand Up @@ -455,7 +461,7 @@ Novu allows you to design notification templates using an intuitive combination

## Actions

Adding action steps (or functions) to your workflows are a powerful way to create more complex and unique notification experiences for your users.
Adding action steps (or functions) to your workflows is a powerful way to create more complex and unique notification experiences for your users.

Each workflow can combine multiple action steps to model complex logic that creates better notification experiences. You can combine the following action steps with any number of channel steps to create personalized notifications for your users:

Expand All @@ -465,15 +471,15 @@ Each workflow can combine multiple action steps to model complex logic that crea
- Group related notifications within a specified time window
- Customize aggregation logic and formatting

[Learn more about Digest action →](https://docs.novu.co/workflows/actions/digest)
[Learn more about Digest action →](/workflow/digest)

### Delay
Delay actions introduce controlled waiting periods between steps in your workflow. This enables better timing and sequencing of notifications.

- Set precise delay durations (seconds to months)
- Support for cron-style scheduling

[Learn more about Delay action →](https://docs.novu.co/workflows/actions/delay)
[Learn more about Delay action →](/workflow/delay)

### Custom
Custom actions allow you to integrate specialized business logic directly into your notification workflows while maintaining workflow durability and state management.
Expand All @@ -482,7 +488,7 @@ Each workflow can combine multiple action steps to model complex logic that crea
- Can serve as a trigger for other workflows
- Pass data from your application's database into the workflow

[Learn more about Custom action →](https://docs.novu.co/workflows/actions/custom)
[Learn more about Custom action →](/workflow/custom)

---

Expand Down
2 changes: 1 addition & 1 deletion getting-started/quickstart.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ Before you can start integrating Novu into your application, you need to create
- [Learn more about how to add credentials to the Subscriber object](/api-reference/subscribers/update-subscriber-credentials)
</Info>

If you have the **In-app** channel step in your workflow, you can test your workflow in the editor with the default subscriber_id, you will see the notification in the **Inbox** section of the Novu dashboard.
If you have the **In-app** channel step in your workflow, you can test your workflow in the editor with the default `subscriberId`, you will see the notification in the **Inbox** section of the Novu dashboard.

<Frame>
<img src="/getting-started/media-assets/test-workflow-inbox.png" alt="Test workflow inbox" />
Expand Down
2 changes: 1 addition & 1 deletion help/channels/email.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,6 @@ Inline images can be sent using `<img>` tag in the email content. PNG, JPEG, GIF

### How to add unsubscribe link in emails?

Add `{{unsubscribe}}` variable in email step content editor and send url value of this variable in payload. Create a simple html page to [fetch preferences](https://docs.novu.co/api-reference/subscribers/get-subscriber-preferences) and then use [update preference api](https://docs.novu.co/api-reference/subscribers/update-subscriber-preference) to update.
Add `{{unsubscribe}}` variable in email step content editor and send url value of this variable in payload. Create a simple html page to [fetch preferences](/api-reference/subscribers/get-subscriber-preferences) and then use [update preference api](/api-reference/subscribers/update-subscriber-preference) to update.

<ContactSupportSnippet />
2 changes: 1 addition & 1 deletion integrations/providers/chat/ms-teams.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,6 @@ Checkout the [API reference](/api-reference/subscribers/update-subscriber-creden

- `subscriberId` is a custom identifier used when identifying your users within the Novu platform.
- `providerId` is a unique provider identifier. We recommend using our ChatProviderIdEnum to specify the provider.
- The third parameter is the credentials object, in this case, we use the `webhookUrl` property to specify the MS Teams channel webhook URL or by calling the `Update Subscriber Credentials` endpoint on Novu API. Check endpoint details [here](https://docs.novu.co/api-reference/subscribers/update-subscriber-preference).
- The third parameter is the credentials object, in this case, we use the `webhookUrl` property to specify the MS Teams channel webhook URL or by calling the `Update Subscriber Credentials` endpoint on Novu API. Check endpoint details [here](/api-reference/subscribers/update-subscriber-preference).

<ProviderImplementation provider="Microsoft Teams" />
2 changes: 1 addition & 1 deletion integrations/providers/chat/zulip.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,6 @@ curl -L -X PUT 'https://api.novu.co/v1/subscribers/<SUBSCRIBER_ID>/credentials'

- `subscriberId` is a custom identifier used when identifying your users within the Novu platform.
- `providerId` is a unique provider identifier. We recommend using our ChatProviderIdEnum to specify the provider.
- The third parameter is the credentials object, in this case, we use the `webhookUrl` property to specify the MS Teams channel webhook URL or by calling the `Update Subscriber Credentials` endpoint on Novu API. Check endpoint details [here](https://docs.novu.co/api-reference/subscribers/update-subscriber-preference).
- The third parameter is the credentials object, in this case, we use the `webhookUrl` property to specify the MS Teams channel webhook URL or by calling the `Update Subscriber Credentials` endpoint on Novu API. Check endpoint details [here](/api-reference/subscribers/update-subscriber-preference).

3. You are all set up and ready to send your first chat message via our `@novu/node` package or directly using the REST API.
2 changes: 1 addition & 1 deletion integrations/providers/push/onesignal.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -69,4 +69,4 @@ novu.trigger("<WORKFLOW_TRIGGER_IDENTIFIER>", {
});
```

Device/notification identifiers can be set by using [setCredentials](https://docs.novu.co/channels/email/resend/#set-device-token) or by using the `deviceIdentifiers` field in overrides.
Device/notification identifiers can be set by using [setCredentials](/integrations/providers/push/fcm#setting-device-token) or by using the `deviceIdentifiers` field in overrides.