Skip to content
This repository was archived by the owner on Jun 26, 2026. It is now read-only.

docs(platform): Document new webhook vendor connectors fixes DOC-343#1123

Merged
jainpawan21 merged 4 commits into
mainfrom
fix/webhook-vendor-connectors-d92a
Jun 17, 2026
Merged

docs(platform): Document new webhook vendor connectors fixes DOC-343#1123
jainpawan21 merged 4 commits into
mainfrom
fix/webhook-vendor-connectors-d92a

Conversation

@jainpawan21

@jainpawan21 jainpawan21 commented Jun 9, 2026

Copy link
Copy Markdown
Member

Summary

Documents the newly available webhook connectors in the Novu dashboard: ClickHouse, Snowflake, Amazon Redshift, Amazon SQS, and Amazon SNS. These connectors let users route Novu webhook events directly to data warehouses and AWS messaging services.

Changes

  • Added a new Webhook connectors page with configuration fields and setup steps for each connector.
  • Updated the webhooks overview to distinguish between standard HTTP endpoints and connector endpoints.
  • Added the connectors page to the webhooks navigation.
  • Removed Svix brand mentions from webhook documentation pages.

Linear Issue: DOC-343

Open in Web Open in Cursor 

Summary by CodeRabbit

  • Documentation
    • Added a comprehensive guide for setting up and configuring webhook connectors with supported integration types and transformation examples.
    • Enhanced webhook verification documentation with clearer instructions for securing webhook endpoints.
    • Improved webhook documentation organization for better accessibility.

Greptile Summary

  • Adds a new webhook connectors guide covering ClickHouse, Snowflake, Amazon Redshift, Amazon SQS, and Amazon SNS.
  • Updates webhook overview content to distinguish standard HTTP endpoints from connector endpoints.
  • Adds the connectors page to webhook navigation and revises existing webhook verification wording.

Confidence Score: 3/5

The changes are documentation-only, but several connector setup instructions can lead users to incomplete or invalid webhook configurations.

The review focused on the changed webhook documentation and identified concrete places where required configuration, event handling, timestamp semantics, and verification guidance are misleading or incomplete.

content/docs/platform/developer/webhooks/connectors.mdx, content/docs/platform/developer/webhooks/index.mdx

T-Rex T-Rex Logs

What T-Rex did

  • T-Rex attempted to run the real app locally by starting the Next.js dev server with PORT=3011 and navigated to the requested routes using Playwright Chromium.
  • The saved server and capture logs document the executed commands, initial Playwright/browser dependency setup, and blockers encountered, including the route render timeout.
  • No accepted before/after UI video pair was produced, so the evaluation remains inconclusive rather than derived from source inspection.
  • In the base behavior, the connectors guide is missing, index.mdx has four direct Svix brand mentions, webhooks.mdx has two, and the validation exits with code 1.
  • In the head behavior, connectors.mdx is present; each named connector has configuration_subsection=True and setup_subsection=True; index.mdx and webhooks.mdx have direct_brand_mentions=0; the validation exits with code 0.
  • The validation script artifact is included so the executed checks are reproducible.

View all artifacts

T-Rex Ran code and verified through T-Rex

Fix All in Cursor

Prompt To Fix All With AI
Fix the following 7 code review issues. Work through them one at a time, proposing concise fixes.

---

### Issue 1 of 7
content/docs/platform/developer/webhooks/index.mdx:82
**Restore verification reference**

Both this page and `content/docs/platform/developer/webhooks/webhooks.mdx` still show the `svix` `Webhook` verifier, but the follow-up prose now points readers only to unspecified “library documentation” without naming or linking that library. Users setting up verification in another language, or trying to install and use the shown package correctly, lose the concrete verification docs path and can end up skipping or misimplementing signature checks.

### Issue 2 of 7
content/docs/platform/developer/webhooks/connectors.mdx:165
**Require target tables**

The Snowflake and Redshift connector sections describe inserting rows into a destination table, but both configuration tables mark `Table name` as optional. If a user follows the docs and leaves this blank, the connector has no target table to write transformed rows into, so setup cannot complete or deliveries can fail at insert time. Please mark `Table name` as required for both Snowflake and Redshift.

### Issue 3 of 7
content/docs/platform/developer/webhooks/connectors.mdx:10
**Keep branding consistent**

The surrounding webhook pages were changed to remove direct Svix brand references, but this new connectors page introduces a prominent Svix mention and link in the opening section. If the product-facing docs are meant to avoid vendor branding, the webhooks section now gives conflicting guidance across pages.

### Issue 4 of 7
content/docs/platform/developer/webhooks/connectors.mdx:188-193
**Mark conditional requirements**

This table marks all Redshift target fields as optional, while the callout below says provisioned clusters require `Cluster identifier` and `Database user`, and serverless requires `Workgroup name`. A user can follow the table, omit all of these fields, and end up with an invalid Redshift connector configuration. Please mark the Redshift fields as conditionally required based on provisioned versus serverless setup.

### Issue 5 of 7
content/docs/platform/developer/webhooks/connectors.mdx:89-103
**Handle unmatched events**

This sample only maps `message.sent`. For any other subscribed event type, the `switch` falls through and returns the original webhook payload, so a copied transformation can try to insert a raw event shape into the warehouse table and fail schema validation or create bad rows.

### Issue 6 of 7
content/docs/platform/developer/webhooks/connectors.mdx:120
**Avoid replay timestamps**

`new Date()` records when the transformation runs, not when the Novu event happened. During retries or recovery, old events can be republished with a fresh `receivedAt`, so downstream workers or analytics can treat replayed events as new current events.

### Issue 7 of 7
content/docs/platform/developer/webhooks/connectors.mdx:21-25
**Select events first**

These steps tell users to write the connector schema and transformation before selecting event types, but the transformation must handle every subscribed event type. That ordering encourages users to configure a transformation before they know the complete set of event shapes it must map, which can leave subscribed events unhandled.

Reviews (1): Last reviewed commit: "docs(webhooks): enhance webhook connecto..." | Re-trigger Greptile

Greptile also left 7 inline comments on this PR.

Add documentation for ClickHouse, Snowflake, Redshift, SQS, and SNS
webhook connectors powered by Svix. Update the webhooks overview to
reference connector endpoints alongside standard HTTP webhooks.

Co-authored-by: Pawan Jain <jainpawan21@users.noreply.github.com>
@linear-code

linear-code Bot commented Jun 9, 2026

Copy link
Copy Markdown

DOC-343

@coderabbitai

coderabbitai Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 2a614264-25ea-4037-b77a-a52356d98663

📥 Commits

Reviewing files that changed from the base of the PR and between bf317c7 and fce47ba.

📒 Files selected for processing (5)
  • content/docs/platform/developer/webhooks/connectors.mdx
  • content/docs/platform/developer/webhooks/event-types.mdx
  • content/docs/platform/developer/webhooks/index.mdx
  • content/docs/platform/developer/webhooks/meta.json
  • content/docs/platform/developer/webhooks/webhooks.mdx

📝 Walkthrough

Walkthrough

A new connectors.mdx documentation page is added to the webhooks section, covering five Svix-powered connector endpoint types: ClickHouse, Snowflake, Amazon Redshift, Amazon SQS, and Amazon SNS. The page documents the dashboard setup workflow, the handler(webhook) transformation model, per-connector configuration fields (required and optional), and monitoring/troubleshooting guidance. The meta.json navigation file is updated to include the new page. Existing webhook documentation in index.mdx and webhooks.mdx is updated to replace Svix-specific library references with generic "official verification library" wording and to add an integration-selection step (HTTP webhook vs. connector) to the endpoint creation flow. The event-types.mdx frontmatter gains an icon: 'Tags' field.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes


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.

Co-authored-by: Pawan Jain <jainpawan21@users.noreply.github.com>
@netlify

netlify Bot commented Jun 9, 2026

Copy link
Copy Markdown

Deploy Preview for docs-novu ready!

Name Link
🔨 Latest commit 6f498bf
🔍 Latest deploy log https://app.netlify.com/projects/docs-novu/deploys/6a27f9aa37f8890008268563
😎 Deploy Preview https://deploy-preview-1123--docs-novu.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@netlify

netlify Bot commented Jun 9, 2026

Copy link
Copy Markdown

Deploy Preview for docs-novu ready!

Name Link
🔨 Latest commit fce47ba
🔍 Latest deploy log https://app.netlify.com/projects/docs-novu/deploys/6a324815889b2f0008dd73a4
😎 Deploy Preview https://deploy-preview-1123--docs-novu.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

Updated the webhook connectors guide to include details on Svix transformations, added specific instructions for data warehouse and message connectors, and clarified the setup process. Improved the structure and clarity of the content, including a new section on writing transformations and examples for better user guidance.
@jainpawan21
jainpawan21 marked this pull request as ready for review June 17, 2026 07:09
@jainpawan21
jainpawan21 merged commit bf99f4a into main Jun 17, 2026
7 of 10 checks passed
@jainpawan21
jainpawan21 deleted the fix/webhook-vendor-connectors-d92a branch June 17, 2026 07:09
```

Check out the <a href="https://docs.svix.com/receiving/verifying-payloads/how" target="_blank" rel="noopener noreferrer">Svix webhook verification documentation</a>, for more instructions and examples of how to verify signatures.
See the library documentation for more instructions and examples of how to verify signatures in other languages.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2 Restore verification reference

Both this page and content/docs/platform/developer/webhooks/webhooks.mdx still show the svix Webhook verifier, but the follow-up prose now points readers only to unspecified “library documentation” without naming or linking that library. Users setting up verification in another language, or trying to install and use the shown package correctly, lose the concrete verification docs path and can end up skipping or misimplementing signature checks.

Prompt To Fix With AI
This is a comment left during a code review.
Path: content/docs/platform/developer/webhooks/index.mdx
Line: 82

Comment:
**Restore verification reference**

Both this page and `content/docs/platform/developer/webhooks/webhooks.mdx` still show the `svix` `Webhook` verifier, but the follow-up prose now points readers only to unspecified “library documentation” without naming or linking that library. Users setting up verification in another language, or trying to install and use the shown package correctly, lose the concrete verification docs path and can end up skipping or misimplementing signature checks.

How can I resolve this? If you propose a fix, please make it concise.

Fix in Cursor

| Private key | Yes | The private key for key-pair authentication. |
| Database name | No | The Snowflake database where events are stored. |
| Schema name | No | The schema containing the target table. |
| Table name | No | The table where events are stored. |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2 Require target tables

The Snowflake and Redshift connector sections describe inserting rows into a destination table, but both configuration tables mark Table name as optional. If a user follows the docs and leaves this blank, the connector has no target table to write transformed rows into, so setup cannot complete or deliveries can fail at insert time. Please mark Table name as required for both Snowflake and Redshift.

Prompt To Fix With AI
This is a comment left during a code review.
Path: content/docs/platform/developer/webhooks/connectors.mdx
Line: 165

Comment:
**Require target tables**

The Snowflake and Redshift connector sections describe inserting rows into a destination table, but both configuration tables mark `Table name` as optional. If a user follows the docs and leaves this blank, the connector has no target table to write transformed rows into, so setup cannot complete or deliveries can fail at insert time. Please mark `Table name` as required for both Snowflake and Redshift.

How can I resolve this? If you propose a fix, please make it concise.

Fix in Cursor


In addition to standard HTTP webhook endpoints, Novu supports webhook connectors that deliver events directly to third-party services. Use them to route Novu events to data warehouses, analytics databases, and AWS messaging services without building a custom receiver.

Novu webhook delivery is powered by [Svix](https://docs.svix.com/introduction). Connector endpoints use Svix [transformations](https://docs.svix.com/transformations) to shape each event before it is written to your destination.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2 Keep branding consistent

The surrounding webhook pages were changed to remove direct Svix brand references, but this new connectors page introduces a prominent Svix mention and link in the opening section. If the product-facing docs are meant to avoid vendor branding, the webhooks section now gives conflicting guidance across pages.

Prompt To Fix With AI
This is a comment left during a code review.
Path: content/docs/platform/developer/webhooks/connectors.mdx
Line: 10

Comment:
**Keep branding consistent**

The surrounding webhook pages were changed to remove direct Svix brand references, but this new connectors page introduces a prominent Svix mention and link in the opening section. If the product-facing docs are meant to avoid vendor branding, the webhooks section now gives conflicting guidance across pages.

How can I resolve this? If you propose a fix, please make it concise.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

Fix in Cursor

Comment on lines +188 to +193
| Cluster identifier | No | The Redshift cluster identifier. Required for provisioned clusters. |
| Workgroup name | No | The Redshift Serverless workgroup name. Required for serverless deployments. |
| Database user | No | The database user for provisioned clusters. |
| Database name | No | The Redshift database where events are stored. |
| Schema name | No | The schema containing the target table. |
| Table name | No | The table where events are stored. |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2 Mark conditional requirements

This table marks all Redshift target fields as optional, while the callout below says provisioned clusters require Cluster identifier and Database user, and serverless requires Workgroup name. A user can follow the table, omit all of these fields, and end up with an invalid Redshift connector configuration. Please mark the Redshift fields as conditionally required based on provisioned versus serverless setup.

Prompt To Fix With AI
This is a comment left during a code review.
Path: content/docs/platform/developer/webhooks/connectors.mdx
Line: 188-193

Comment:
**Mark conditional requirements**

This table marks all Redshift target fields as optional, while the callout below says provisioned clusters require `Cluster identifier` and `Database user`, and serverless requires `Workgroup name`. A user can follow the table, omit all of these fields, and end up with an invalid Redshift connector configuration. Please mark the Redshift fields as conditionally required based on provisioned versus serverless setup.

How can I resolve this? If you propose a fix, please make it concise.

Fix in Cursor

Comment on lines +89 to +103
function handler(webhook) {
switch (webhook.eventType) {
case "message.sent":
webhook.payload = {
event_type: webhook.eventType,
message_id: webhook.payload.id,
subscriber_id: webhook.payload.subscriberId,
channel: webhook.payload.channel,
created_at: webhook.payload.createdAt,
raw_payload: JSON.stringify(webhook.payload),
};
break;
// Add a case for each subscribed event type
}
return webhook;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2 Handle unmatched events

This sample only maps message.sent. For any other subscribed event type, the switch falls through and returns the original webhook payload, so a copied transformation can try to insert a raw event shape into the warehouse table and fail schema validation or create bad rows.

Prompt To Fix With AI
This is a comment left during a code review.
Path: content/docs/platform/developer/webhooks/connectors.mdx
Line: 89-103

Comment:
**Handle unmatched events**

This sample only maps `message.sent`. For any other subscribed event type, the `switch` falls through and returns the original webhook payload, so a copied transformation can try to insert a raw event shape into the warehouse table and fail schema validation or create bad rows.

How can I resolve this? If you propose a fix, please make it concise.

Fix in Cursor

webhook.payload = {
eventType: webhook.eventType,
data: webhook.payload,
receivedAt: new Date().toISOString(),

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2 Avoid replay timestamps

new Date() records when the transformation runs, not when the Novu event happened. During retries or recovery, old events can be republished with a fresh receivedAt, so downstream workers or analytics can treat replayed events as new current events.

Prompt To Fix With AI
This is a comment left during a code review.
Path: content/docs/platform/developer/webhooks/connectors.mdx
Line: 120

Comment:
**Avoid replay timestamps**

`new Date()` records when the transformation runs, not when the Novu event happened. During retries or recovery, old events can be republished with a fresh `receivedAt`, so downstream workers or analytics can treat replayed events as new current events.

How can I resolve this? If you propose a fix, please make it concise.

Fix in Cursor

Comment on lines +21 to +25
5. Enter a **Description** to identify this endpoint.
6. Configure the connector-specific connection settings described in the sections below.
7. For **data warehouse connectors** (ClickHouse, Snowflake, Redshift): define the **table schema** and write a **transformation** that maps Novu webhook payloads to rows matching that schema. See [Data warehouse connectors](#data-warehouse-connectors).
8. For **message connectors** (Amazon SQS, Amazon SNS): review and customize the **transformation** that shapes the message body sent to the queue or topic. See [Message connectors](#message-connectors).
9. Select the [event types](/platform/developer/webhooks/event-types) you want this endpoint to subscribe to.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2 Select events first

These steps tell users to write the connector schema and transformation before selecting event types, but the transformation must handle every subscribed event type. That ordering encourages users to configure a transformation before they know the complete set of event shapes it must map, which can leave subscribed events unhandled.

Prompt To Fix With AI
This is a comment left during a code review.
Path: content/docs/platform/developer/webhooks/connectors.mdx
Line: 21-25

Comment:
**Select events first**

These steps tell users to write the connector schema and transformation before selecting event types, but the transformation must handle every subscribed event type. That ordering encourages users to configure a transformation before they know the complete set of event shapes it must map, which can leave subscribed events unhandled.

How can I resolve this? If you propose a fix, please make it concise.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

Fix in Cursor

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants