Skip to content

Conversation

@Aviatorscode2
Copy link
Contributor

@Aviatorscode2 Aviatorscode2 commented Oct 22, 2025

Summary by CodeRabbit

Release Notes

  • Documentation
    • Restructured APNS integration documentation with a comprehensive end-to-end configuration and setup guide.
    • Added detailed step-by-step instructions for obtaining credentials and connecting APNS to Novu platform.
    • Included practical code examples for device token management using Node.js and cURL.
    • Enhanced notification customization documentation with detailed payload structures and practical override examples.

@linear
Copy link

linear bot commented Oct 22, 2025

MRK-1084 APNS guide

@netlify
Copy link

netlify bot commented Oct 22, 2025

Deploy Preview for docs-novu failed. Why did it fail? →

Name Link
🔨 Latest commit 752c280
🔍 Latest deploy log https://app.netlify.com/projects/docs-novu/deploys/68f95b660e5b2100094fd77e

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Oct 22, 2025

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Walkthrough

Restructured and expanded APNS integration documentation to provide a comprehensive end-to-end configuration guide, including credential setup, Novu connection steps, subscriber token management via API examples, notification sending, and customization payloads, while removing outdated pre-trigger setup content.

Changes

Cohort / File(s) Summary
APNS Documentation Expansion
content/docs/platform/integrations/push/(providers)/apns.mdx
Reorganized introductory content into detailed multi-step guide; added credential acquisition instructions; expanded API integration examples with Node.js and cURL code samples for subscriber token updates; added notification sending examples; enhanced customization section with APNS payload illustrations; removed legacy pre-trigger setup blocks

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Poem

🐰 A guide now blooms, so crisp and clear,
From APNS creds to notifications near,
With code samples bright and steps laid true,
The doc hops forward, a rabbit's view!
Configuration flows, now end-to-end complete.

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title Check ✅ Passed The pull request title "Update content for APNS push guide" accurately reflects the main change in the changeset. The summary indicates that the APNS documentation file has been comprehensively updated with a new introductory section, multi-step configuration instructions, expanded usage sections, and refined examples. The title is concise and specific, clearly identifying that the APNS push guide content is being updated, allowing teammates scanning history to immediately understand the primary change without ambiguity or vague language.
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between be6cc4c and 752c280.

⛔ Files ignored due to path filters (1)
  • public/images/channels-and-providers/push/apns/apns-integration.png is excluded by !**/*.png
📒 Files selected for processing (1)
  • content/docs/platform/integrations/push/(providers)/apns.mdx (1 hunks)
🧰 Additional context used
🪛 LanguageTool
content/docs/platform/integrations/push/(providers)/apns.mdx

[grammar] ~39-~39: Ensure spelling is correct
Context: ...ields and under the Delivery Provider Crendetials section fill in the following fields:...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
  • GitHub Check: Redirect rules - docs-novu
  • GitHub Check: Header rules - docs-novu
  • GitHub Check: Pages changed - docs-novu
  • GitHub Check: Build and Lint
🔇 Additional comments (1)
content/docs/platform/integrations/push/(providers)/apns.mdx (1)

103-116: Update documentation to use consistent SDK package across examples.

The code snippet uses @novu/node, but the official TypeScript SDK documentation in this project (at content/docs/platform/sdks/server/typescript.mdx) recommends @novu/api. While @novu/node is a valid package with trigger method signature novu.trigger(workflowIdentifier: string, options: {...}), this creates inconsistency within the documentation.

Either:

  1. Update apns.mdx to use @novu/api (matching the TypeScript SDK docs pattern)
  2. Update the initialization to use object syntax: new Novu({ secretKey: '<NOVU_SECRET_KEY>' }) instead of string parameter

The TypeScript SDK documentation shows the current recommended pattern for Node.js environments.

@Aviatorscode2 Aviatorscode2 changed the base branch from main to push-provider-guides October 27, 2025 13:42
Copy link
Contributor

@DianaHackmamba DianaHackmamba left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's a good doc, but I am a little confused by the format. It seems undecided about whether it is a guide or a tutorial. It starts out generic like a guide, but the tone is very casual and the last notification and trigger are written out like a tutorial.

import { Tab, Tabs } from 'fumadocs-ui/components/tabs';

[Apple Push Notification Service](https://docs.expo.dev/push-notifications/overview/), as the name suggests, is a notification delivery service provided by Apple.
This guide will walk you through the entire process of configuring and using the <a href="https://developer.apple.com/notifications/" target="_blank" rel="noopener noreferrer">Apple Push Notification Service (APNS)</a> with Novu.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
This guide will walk you through the entire process of configuring and using the <a href="https://developer.apple.com/notifications/" target="_blank" rel="noopener noreferrer">Apple Push Notification Service (APNS)</a> with Novu.
This guide walks you through the entire process of configuring and using the <a href="https://developer.apple.com/notifications/" target="_blank" rel="noopener noreferrer">Apple Push Notification Service (APNS)</a> with Novu.

This guide will walk you through the entire process of configuring and using the <a href="https://developer.apple.com/notifications/" target="_blank" rel="noopener noreferrer">Apple Push Notification Service (APNS)</a> with Novu.

Apple provides two authentication methods to make a secure connection to APNs. The first is Certificate-Based Authentication (using a .p12 certificate). The second is Token-Based Authentication (using a .p8 key). We'll make use of the **.p8** key.
## How to configure APNS with Novu
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
## How to configure APNS with Novu
## Configure APNS with Novu

3. Enable the Apple Push Notifications service (APNs) checkbox by selecting it.
4. Click the **Continue** button and on the next page, select **Register**.
5. Download the **.p8** key file.
Apple provides two authentication methods to make a secure connection to APNs. The first is a certificate based authentication (using a `.p12` certificate). The second is token based authentication (using a `.p8` key). We'll make use of the `.p8` key.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Apple provides two authentication methods to make a secure connection to APNs. The first is a certificate based authentication (using a `.p12` certificate). The second is token based authentication (using a `.p8` key). We'll make use of the `.p8` key.
Apple provides two authentication methods to make a secure connection to APNS. The first is a certificate-based authentication using a `.p12` certificate. The second is token based authentication using a `.p8` key. For this guide, you'll use the `.p8` key.

Follow <a href="https://developer.apple.com/help/account/keys/create-a-private-key" target="_blank" rel="noopener noreferrer">this Apple’s official guide</a> to generate and download the p8 key for your account.

The overrides field supports all [Notification payload](https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/generating_a_remote_notification?language=objc) values, as shown below:
You also need the following to connect Novu to APNs:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

APNs or APNS? Choose one and use it throughout.


```typescript
import { Novu } from '@novu/api';
* <a href="https://developer.apple.com/help/account/keys/get-a-key-identifier/" target="_blank" rel="noopener noreferrer">**Key ID**</a>: This is a 10-character unique identifier for the authentication key. You can find it in the key details section of the newly created key in your Apple developer account.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
* <a href="https://developer.apple.com/help/account/keys/get-a-key-identifier/" target="_blank" rel="noopener noreferrer">**Key ID**</a>: This is a 10-character unique identifier for the authentication key. You can find it in the key details section of the newly created key in your Apple developer account.
* <a href="https://developer.apple.com/help/account/keys/get-a-key-identifier/" target="_blank" rel="noopener noreferrer">**Key ID**</a>: This is a 10-character unique identifier for the authentication key. You can find it in the key details section of the newly-created key in your Apple developer account.

* **Team ID**: Your 10-character Team ID.
* **Bundle ID**: Your app's Bundle ID.
![APNS Integration in Novu](/images/channels-and-providers/push/apns/apns-integration.png)
6. Click **Create Integration**.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What happens next? How do I know the integration was created successfully?


### Step 1: Add subscriber device token

Before Novu can send a push notification to a subscriber(user), you must associate their device's unique push token with their Novu subscriber profile.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Before Novu can send a push notification to a subscriber(user), you must associate their device's unique push token with their Novu subscriber profile.
Before Novu can send a push notification to a subscriber (user), you must associate their device's unique push token with their Novu subscriber profile.

Checkout the [API reference](/api-reference/subscribers/update-provider-credentials) for more details.
### Step 2: Send a notification

Now you're ready to send a push notification. [Create a workflow with a Push step](/platform/workflow/build-a-workflow) and trigger it. Novu will send the notification to all devices associated with the subscriber.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Now you're ready to send a push notification. [Create a workflow with a Push step](/platform/workflow/build-a-workflow) and trigger it. Novu will send the notification to all devices associated with the subscriber.
Now you're ready to send a push notification. [Create a workflow with a Push step](/platform/workflow/build-a-workflow) and trigger it. Novu sends the notification to all devices associated with the subscriber.

subscriberId: "subscriberId",
},
payload: {
abc: 'def', // If the notification is a data notification, the payload will be sent as the data
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
abc: 'def', // If the notification is a data notification, the payload will be sent as the data
abc: 'def', // If the notification is a data notification, then the payload is sent as the data


Now you're ready to send a push notification. [Create a workflow with a Push step](/platform/workflow/build-a-workflow) and trigger it. Novu will send the notification to all devices associated with the subscriber.

The example below demonstrates a simple trigger using Novu’s SDK.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you also want to link to instructions for more complex triggers so that the user can iterate on this simple one?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants