Skip to content

Document Standard Webhooks delivery - #128

Draft
Tom Tang (qwerzl) wants to merge 6 commits into
mainfrom
agent/standard-webhooks
Draft

Document Standard Webhooks delivery#128
Tom Tang (qwerzl) wants to merge 6 commits into
mainfrom
agent/standard-webhooks

Conversation

@qwerzl

@qwerzl Tom Tang (qwerzl) commented Aug 4, 2026

Copy link
Copy Markdown
Member

Summary

  • document the Standard Webhooks payload shape, headers, signature verification, secret rotation, event filtering, retries, and endpoint disabling
  • document the public normalized-events.v1 and raw-inbound.v1 schema IDs, raw-by-default creation, one-way upgrades, and one-time secret retention
  • clarify that the raw envelope's numeric schemaVersion: 1 is an internal envelope revision, distinct from the endpoint's public schema ID
  • document that customer-facing delivery history and manual replay are not currently exposed, including terminal-failure reconciliation
  • document HTTPS/SSRF behavior and the production egress allowlist/API
  • retain migration guidance for legacy Spectrum signature headers

Why

Customers need one coherent contract for delivery behavior across Fusor and Spectrum Cloud, including explicit payload-schema pinning and the current recovery boundary.

Related changes

The Standard Webhooks payload-size recommendation is intentionally out of scope; these docs do not introduce or change a payload-size limit.

Validation

  • pnpm exec vellum build
  • DOCS_GH_TOKEN=$(gh auth token) pnpm docs:generate
  • pnpm lint
  • pnpm typecheck:docs

Summary by CodeRabbit

  • Documentation
    • Overhauled webhook documentation around signed HTTPS delivery and the Standard Webhooks contract.
    • Added guidance for message.received events, required headers, raw-body verification, replay protection, secret rotation, and legacy compatibility.
    • Clarified durable delivery, ordering, retries, acknowledgements, dead-lettering, endpoint disablement, and re-enablement.
    • Documented endpoint management, subscriptions, destination validation, egress IP allowlisting, and troubleshooting.
    • Streamlined the quickstart with endpoint setup, signature verification, deduplication, and event-processing guidance.

@coderabbitai

coderabbitai Bot commented Aug 4, 2026

Copy link
Copy Markdown

Review Change Stack

Important

Review skipped

No new commits to review since the last review.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: fe0bb3c5-c059-4877-b0e1-9f4b1dfd71c2

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

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

The webhook documentation now defines a Standard Webhooks contract, durable delivery and retries, endpoint management, raw-byte signature verification, secret rotation, and troubleshooting for the message.received event.

Changes

Standard Webhooks contract and operations

Layer / File(s) Summary
Event envelope and request contract
docs-src/webhooks/events.mdx.vel, webhooks/overview.mdx
Documents the message.received envelope, normalized request data, Standard Webhooks headers, subscriptions, compatibility headers, and delivery guarantees.
Delivery, retry, and destination behavior
webhooks/delivery.mdx, webhooks/overview.mdx, webhooks/troubleshooting.mdx
Defines at-least-once delivery, per-endpoint ordering, durable retries, response handling, dead-lettering, endpoint disabling, destination validation, and egress IP allowlisting.
Endpoint registration and lifecycle
webhooks/managing-webhooks.mdx
Documents endpoint creation, schema upgrades, configuration, listing, disablement, re-enablement, secret rotation, egress IP retrieval, and deletion.
Consumer setup and verification
webhooks/quickstart.mdx, webhooks/verifying-signatures.mdx, webhooks/troubleshooting.mdx
Documents raw-byte Standard Webhooks verification, timestamp checks, multi-signature rotation handling, durable enqueueing, webhook-id deduplication, and troubleshooting guidance.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
  participant EventSource
  participant EndpointFanout
  participant WebhookHandler
  participant DurableQueue
  EventSource->>EndpointFanout: Emit message.received
  EndpointFanout->>WebhookHandler: Send signed HTTPS POST
  WebhookHandler->>WebhookHandler: Verify raw body and headers
  WebhookHandler->>DurableQueue: Enqueue by webhook-id
  DurableQueue-->>WebhookHandler: Confirm durable enqueue
  WebhookHandler-->>EndpointFanout: Return 2xx
Loading

Poem

A rabbit checks each signed byte,
Then queues the event just right.
Retries wait in ordered rows,
Rotating secrets guard the flows.
2xx confirms delivery tonight.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly identifies the main change: documentation for Standard Webhooks delivery and its related behavior.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch agent/standard-webhooks

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

Copy link
Copy Markdown
Member Author

CodeRabbit (@coderabbitai) full review

@coderabbitai

coderabbitai Bot commented Aug 4, 2026

Copy link
Copy Markdown
✅ Action performed

Full review finished.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (1)
webhooks/quickstart.mdx (1)

101-104: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Define or annotate enqueue.

enqueue is used at line 103 but never declared or imported. A reader who copies server.ts gets a runtime error. Add a minimal local definition or state in prose that enqueue is your own queue write.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@webhooks/quickstart.mdx` around lines 101 - 104, Define or annotate enqueue
in the quickstart example so readers understand it is an application-provided
queue-write operation and copying server.ts does not leave an unresolved symbol.
Add a minimal local definition near the existing enqueue call, or explicitly
explain in prose that it must be implemented by the application.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@webhooks/quickstart.mdx`:
- Around line 107-114: Update the quickstart to align its documented runtime
with the implementation: either add the Node.js path using `@hono/node-server` and
serve({ port: 3000, fetch: app.fetch }) with corresponding Node.js install and
run commands, or revise the guide to explicitly support Bun only and remove
Node.js claims.

---

Nitpick comments:
In `@webhooks/quickstart.mdx`:
- Around line 101-104: Define or annotate enqueue in the quickstart example so
readers understand it is an application-provided queue-write operation and
copying server.ts does not leave an unresolved symbol. Add a minimal local
definition near the existing enqueue call, or explicitly explain in prose that
it must be implemented by the application.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: c81b6a2a-d923-46a6-960e-7cd9c0d5b608

📥 Commits

Reviewing files that changed from the base of the PR and between b20664b and fbafedf.

📒 Files selected for processing (7)
  • docs-src/webhooks/events.mdx.vel
  • webhooks/delivery.mdx
  • webhooks/managing-webhooks.mdx
  • webhooks/overview.mdx
  • webhooks/quickstart.mdx
  • webhooks/troubleshooting.mdx
  • webhooks/verifying-signatures.mdx
📜 Review details
🧰 Additional context used
📓 Path-based instructions (2)
docs-src/**/*.mdx.vel

📄 CodeRabbit inference engine (CLAUDE.md)

docs-src/**/*.mdx.vel: Pull type information through vellum from .d.ts files instead of writing it by hand - use sym.signature for full declarations, sym.members[] for interface properties, sym.variants[] for enums/discriminated unions, and sym.doc.summary for descriptions
Import TypeTooltip from /snippets/type-tooltip.mdx in every .mdx.vel file that mentions a type symbol in prose
Use <TypeTooltip> whenever a named type appears inline (method return type, parameter, passing reference), with one {% set %} per symbol at first reference and pairing the tooltip with a short prose description
Use <Accordion> for reference material like long options tables, enumerated values, and event-type mappings, with title being just the type name (no suffixes), description from {{ sym.doc.summary }}, and related accordions stacked in <AccordionGroup>
In Accordion tables containing TypeScript type text, apply the standard escape chain: replace("\n", " ") | replace(" ", "") | replace("|", "\\|") | replace("<", "&lt;") | replace(">", "&gt;")
Use <Tabs> component when showing the same task in multiple ways (e.g. plain text / with options / builder API), not successive ### headings
Do not include type annotations in code block comments; move type information to prose with <TypeTooltip> instead
Avoid scare-quote comments in code blocks (e.g. // Narrowed, // Returns); explain in surrounding prose or delete
Keep code snippets minimal with real API calls and no mock data shaped to look real
Drive table rows from vellum when they map 1:1 to source members/variants using {% for %} loops; only hand-write tables when there's no corresponding symbol, when adding categorization/editorial structure, or for dynamic counts using {{ sym.variants | length }}
When vellum extracts well-formed patterns, use the extracted data; for fall-through cases (unions of named references, non-literal discriminators, mixed unions, pure literal unions), hand-write tables...

Files:

  • docs-src/webhooks/events.mdx.vel
**/*.mdx

📄 CodeRabbit inference engine (AGENTS.md)

**/*.mdx: Pages should be written as MDX files with YAML frontmatter
Use active voice and second person ("you") in documentation
Keep sentences concise with one idea per sentence in documentation
Use sentence case for headings in documentation
Bold UI elements in documentation (e.g., Click Settings)
Use code formatting for file names, commands, paths, and code references in documentation

Files:

  • webhooks/quickstart.mdx
  • webhooks/overview.mdx
  • webhooks/delivery.mdx
  • webhooks/verifying-signatures.mdx
  • webhooks/managing-webhooks.mdx
  • webhooks/troubleshooting.mdx
🧠 Learnings (1)
📚 Learning: 2026-05-27T07:01:01.271Z
Learnt from: yanxue06
Repo: photon-hq/docs PR: 56
File: docs-src/webhooks/events.mdx.vel:0-0
Timestamp: 2026-05-27T07:01:01.271Z
Learning: In Vellum-templated webhook docs where the data source is a Zod schema whose fields (e.g., iMessage `Space` `type`/`phone` from `spaceSchema`) are not exposed as enumerable members/variants to the TypeScript extractor, do not use Vellum `{% for %}` loops to generate rows. Instead, write the relevant table rows explicitly (e.g., hand-written rows inside the appropriate `<Accordion>` blocks) so the docs render the expected `type`/`phone` entries.

Applied to files:

  • docs-src/webhooks/events.mdx.vel
🪛 Betterleaks (1.7.3)
webhooks/quickstart.mdx

[high] 38-38: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)

🪛 LanguageTool
webhooks/delivery.mdx

[grammar] ~21-~21: Ensure spelling is correct
Context: ...ter verifying the signature and durably enqueueing the event. Run slow application work af...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

webhooks/troubleshooting.mdx

[style] ~19-~19: To form a complete sentence, be sure to include a subject.
Context: ...de message.received. - deliveryMode should be fusor for Standard Webhooks delive...

(MISSING_IT_THERE)


[style] ~70-~70: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...-Afterfor intentional backpressure. - Return503` for a temporary outage. - Return ...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~71-~71: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... Return 503 for a temporary outage. - Return most other 4xx responses for permanen...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~72-~72: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...sponses for permanent request errors. - Return 410 only to disable the endpoint. ##...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

🔇 Additional comments (15)
docs-src/webhooks/events.mdx.vel (4)

9-61: LGTM!


129-142: LGTM!


110-127: 🗄️ Data Integrity & Integration

The format is intentionally split: X-Spectrum-Signature uses the v0= header prefix, while the signed string uses v0:. webhooks/verifying-signatures.mdx documents both formats, so these pages are not inconsistent.

			> Likely an incorrect or invalid review comment.

63-102: 📐 Maintainability & Code Quality

Keep the hand-written webhook tables.

The configured spectrum-ts@12.0.0 package does not expose a matching symbol for these fields. Its native webhook schema uses a different event/space/message envelope, so Vellum loops and TypeTooltip do not apply here.

			> Likely an incorrect or invalid review comment.
webhooks/overview.mdx (2)

62-95: LGTM!


41-58: 🎯 Functional Correctness

Keep the slack platform value.

The event reference lists imessage and whatsapp as examples and explicitly supports new platform values.

			> Likely an incorrect or invalid review comment.
webhooks/delivery.mdx (3)

6-53: LGTM!


55-92: LGTM!


109-110: 🗄️ Data Integrity & Integration

Keep the succeed response key.

The API reference defines the envelope as { succeed, data }, and the webhook examples use the same key.

			> Likely an incorrect or invalid review comment.
webhooks/troubleshooting.mdx (2)

6-45: LGTM!


53-107: LGTM!

webhooks/managing-webhooks.mdx (2)

106-132: LGTM!

Also applies to: 134-142, 144-154


87-89: 🗄️ Data Integrity & Integration

No changes needed. The four-day retry window and delivery_failures mapping match webhooks/delivery.mdx.

webhooks/quickstart.mdx (1)

27-50: LGTM!

Also applies to: 126-147

webhooks/verifying-signatures.mdx (1)

6-38: LGTM!

Also applies to: 42-97, 99-134

Comment thread webhooks/quickstart.mdx Outdated
@qwerzl

Copy link
Copy Markdown
Member Author

CodeRabbit (@coderabbitai) review

@coderabbitai

coderabbitai Bot commented Aug 4, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Copy Markdown
Member Author

CodeRabbit (@coderabbitai) review

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 3

🧹 Nitpick comments (1)
webhooks/managing-webhooks.mdx (1)

74-74: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Use active voice and second person for the downgrade rule.

Schema downgrades are not supported. is passive. Replace it with You cannot downgrade an endpoint schema.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@webhooks/managing-webhooks.mdx` at line 74, Update the downgrade rule in the
schema documentation to use active voice and address the reader directly: state
that the user cannot downgrade an endpoint schema, replacing the passive wording
while preserving the same meaning.

Source: Coding guidelines

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@webhooks/managing-webhooks.mdx`:
- Around line 64-69: Update the webhook PATCH curl example to stop passing
PROJECT_SECRET through the -u argument; use a protected --netrc-file or
equivalent credential source so the secret is not exposed in process arguments,
while preserving PROJECT_ID authentication and the request payload.
- Around line 23-24: Clarify in the webhook management example that its string
schemaVersion selects the management API endpoint payload contract, and is
distinct from the numeric schemaVersion in the raw event envelope documented in
webhooks/overview.mdx. Explicitly instruct readers not to send the envelope
value to the management API or compare the two fields.

In `@webhooks/troubleshooting.mdx`:
- Line 19: Update the Standard Webhooks troubleshooting checklist to reference
the endpoint’s public schema ID instead of using raw-inbound.v1. Document
raw-inbound.v1 only when describing the delivered envelope’s internal
schemaVersion, keeping these identifiers clearly separate.

---

Nitpick comments:
In `@webhooks/managing-webhooks.mdx`:
- Line 74: Update the downgrade rule in the schema documentation to use active
voice and address the reader directly: state that the user cannot downgrade an
endpoint schema, replacing the passive wording while preserving the same
meaning.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 30e6950d-8171-4e2b-a9c8-38902e7f730a

📥 Commits

Reviewing files that changed from the base of the PR and between 2807570 and 4a3e009.

📒 Files selected for processing (5)
  • docs-src/webhooks/events.mdx.vel
  • webhooks/managing-webhooks.mdx
  • webhooks/overview.mdx
  • webhooks/quickstart.mdx
  • webhooks/troubleshooting.mdx
🚧 Files skipped from review as they are similar to previous changes (2)
  • docs-src/webhooks/events.mdx.vel
  • webhooks/quickstart.mdx
📜 Review details
🧰 Additional context used
📓 Path-based instructions (1)
**/*.mdx

📄 CodeRabbit inference engine (AGENTS.md)

**/*.mdx: Pages should be written as MDX files with YAML frontmatter
Use active voice and second person ("you") in documentation
Keep sentences concise with one idea per sentence in documentation
Use sentence case for headings in documentation
Bold UI elements in documentation (e.g., Click Settings)
Use code formatting for file names, commands, paths, and code references in documentation

Files:

  • webhooks/overview.mdx
  • webhooks/managing-webhooks.mdx
  • webhooks/troubleshooting.mdx
🪛 LanguageTool
webhooks/troubleshooting.mdx

[style] ~19-~19: To form a complete sentence, be sure to include a subject.
Context: ...e message.received. - schemaVersion should be raw-inbound.v1 for Standard Webhoo...

(MISSING_IT_THERE)

🔇 Additional comments (2)
webhooks/overview.mdx (1)

28-28: LGTM!

webhooks/managing-webhooks.mdx (1)

48-56: LGTM!

Comment thread webhooks/managing-webhooks.mdx
Comment thread webhooks/managing-webhooks.mdx
Comment thread webhooks/troubleshooting.mdx Outdated
Walk through this checklist in order:
- `enabled` must be `true` and `status` must be `active`.
- `eventTypes` must include `message.received`.
- `schemaVersion` should be `raw-inbound.v1` for Standard Webhooks delivery.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Use the public endpoint schema ID here.

raw-inbound.v1 is the raw envelope's internal schemaVersion, not the public schema ID used by the endpoint record. This checklist can mark valid endpoints as misconfigured. Check the endpoint's public schema ID here, and document raw-inbound.v1 only for the delivered envelope.

As per PR objectives, keep the raw envelope's internal schemaVersion separate from public endpoint schema IDs.

🧰 Tools
🪛 LanguageTool

[style] ~19-~19: To form a complete sentence, be sure to include a subject.
Context: ...e message.received. - schemaVersion should be raw-inbound.v1 for Standard Webhoo...

(MISSING_IT_THERE)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@webhooks/troubleshooting.mdx` at line 19, Update the Standard Webhooks
troubleshooting checklist to reference the endpoint’s public schema ID instead
of using raw-inbound.v1. Document raw-inbound.v1 only when describing the
delivered envelope’s internal schemaVersion, keeping these identifiers clearly
separate.

Copy link
Copy Markdown
Member Author

CodeRabbit (@coderabbitai) review

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
webhooks/managing-webhooks.mdx (1)

36-38: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Split the two actions into separate sentences.

Line 36 combines current delivery handling with future upgrade preparation. Use one sentence for each action.

Proposed revision
-For a `normalized-events.v1` endpoint, use `signingSecret` for current
-deliveries and retain the complete `whsec_` `standardSigningSecret` for a future
-upgrade to `raw-inbound.v1`.
+For a `normalized-events.v1` endpoint, use `signingSecret` for current
+deliveries. Retain the complete `whsec_` `standardSigningSecret` for a future
+upgrade to `raw-inbound.v1`.

As per coding guidelines, “Keep sentences concise with one idea per sentence in documentation.”

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@webhooks/managing-webhooks.mdx` around lines 36 - 38, In the documentation
sentence describing normalized-events.v1 endpoints, separate the
current-delivery use of signingSecret from retaining the complete whsec_
standardSigningSecret for a future raw-inbound.v1 upgrade into two concise
sentences.

Source: Coding guidelines

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@webhooks/managing-webhooks.mdx`:
- Around line 36-38: In the documentation sentence describing
normalized-events.v1 endpoints, separate the current-delivery use of
signingSecret from retaining the complete whsec_ standardSigningSecret for a
future raw-inbound.v1 upgrade into two concise sentences.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 5deb5ed4-1b38-4626-9642-1d2f6ac09eb2

📥 Commits

Reviewing files that changed from the base of the PR and between 4a3e009 and 44473a2.

📒 Files selected for processing (1)
  • webhooks/managing-webhooks.mdx
📜 Review details
🧰 Additional context used
📓 Path-based instructions (1)
**/*.mdx

📄 CodeRabbit inference engine (AGENTS.md)

**/*.mdx: Pages should be written as MDX files with YAML frontmatter
Use active voice and second person ("you") in documentation
Keep sentences concise with one idea per sentence in documentation
Use sentence case for headings in documentation
Bold UI elements in documentation (e.g., Click Settings)
Use code formatting for file names, commands, paths, and code references in documentation

Files:

  • webhooks/managing-webhooks.mdx
🔇 Additional comments (1)
webhooks/managing-webhooks.mdx (1)

66-68: LGTM!

Copy link
Copy Markdown
Member Author

CodeRabbit (@coderabbitai) review

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Copy Markdown
Member Author

CodeRabbit (@coderabbitai) review

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Copy Markdown
Member Author

CodeRabbit (@coderabbitai) review

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown
⚠️ Action not completed

Already reviewed.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

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.

1 participant