Skip to main content
The Pro plan unlocks webhooks so meeting notes can flow into Slack, Discord, n8n, Zapier, Make, or your own server.

Overview

Vowen fires a webhook when a meeting note is ready. It sends an HTTP POST with the note’s transcript, summary, and tags to any URL you configure. Use it to push notes into Slack or Discord, into an automation platform, or into your own service.
Webhooks fire on meeting notes only. There is no per-dictation webhook. If you want dictation text to trigger something, use a voice shortcut or the Vowen CLI.

Setup

1

Open the integration

Go to Settings > Meeting Notes > Integrations and click Configure Webhook.
2

Enter your endpoint

Paste the URL that should receive the POST. This is the only required field.
3

Add headers or a signing secret (optional)

Add custom request headers for authentication, and a signing secret if your receiver should verify that the request really came from Vowen. Both are covered below.
4

Save

Click Save. The integration is enabled as soon as a URL is saved. Disconnect clears the URL, the headers, and the signing secret in one go.
The Integrations tab of Notes settings showing a connected Webhook card naming its destination host, alongside an Obsidian card

The Webhook card sits beside Obsidian on the Integrations tab. Its gear opens the URL, headers and signing secret.

Payload

For any URL that is not a Slack or Discord webhook, the body is a JSON object:
The Configure Webhook panel showing a Webhook URL field, a Headers row, a Signing secret field and a Send automatically toggle

The webhook panel: destination URL, custom headers, an optional signing secret, and whether to fire automatically.

  • event: what produced this delivery. note.created when a summary finishes generating, note.manual_send for the Send to webhook action on a note
  • trigger: auto or manual, the short form of event. Also sent as the X-Vowen-Event header
  • noteId: the note’s identifier, as a string. It is the same on every device once cloud sync has run, and it never changes, so use it to connect an automatic delivery with any later manual send of the same note. X-Vowen-Delivery-Id identifies one delivery; noteId identifies the note
  • title: the note title at the time of sending
  • createdAt: when the note was created, ISO 8601
  • updatedAt: when the note record last changed, ISO 8601. null for notes that have not been edited since updating to the version that introduced it
  • durationSeconds: length of the recording. null when unknown, for example imported text
  • template / templateId: the summary template’s display name and its stored id
  • hasTranscript / hasSummary: whether the matching text field is non-empty, so you can branch without inspecting the text itself
  • transcript: the full transcript, with any speaker names you assigned folded into the Speaker N: prefixes
  • summary: the summary text, with Vowen’s internal citation markers stripped out
  • tags: resolved tag names, not internal IDs. Always present; [] when the note has no tags
transcript, summary and tags are the original payload fields and keep their exact shape, so receivers built against the three-field body keep working. Every other field is additive. Content-Type is always application/json and cannot be overridden by a custom header.
A manual send (the Send to webhook action on a note) posts the same shape with the note’s current transcript, summary and tags, so it can be used to backfill older notes into a receiver. A note with neither a summary nor a transcript is refused.

Slack and Discord formatting

Vowen detects Slack and Discord webhook URLs automatically. Just paste the URL; there is no format selector to set.

Custom headers

Add any number of key: value header pairs under Headers. These are useful for bearer tokens, API keys, or routing headers your endpoint expects. Header values are encrypted at rest on your device.
Vowen’s own X-Vowen-* headers and Content-Type are applied after your custom headers, so a custom header can never shadow them. If you add a header called X-Vowen-Signature, it is overwritten before the request goes out.

Send automatically

The Send automatically checkbox controls whether the webhook fires on its own.
  • On (default): the webhook fires every time a summary is generated
  • Off: nothing fires automatically. Open a note and click Send to webhook to send it by hand
Turn it off to keep a configured endpoint around for occasional manual pushes without every meeting going out.

Verifying deliveries with HMAC signing

Set a Signing secret and Vowen signs every delivery so your receiver can prove the request came from your copy of Vowen and was not replayed. The Generate a new secret button produces 32 random bytes as hex; you can also paste your own. The secret is stored encrypted on your device and never leaves it. Only the derived signature is transmitted.

Headers

What is signed

The signature is an HMAC-SHA256, keyed with your secret, over this exact string:
That is the timestamp, a literal ., then the raw body bytes as sent. The timestamp is inside the signed string rather than merely alongside it, so a captured request cannot be replayed later with a fresh timestamp.
Verify against the raw request body, before any JSON parsing. Re-serializing the parsed object will change whitespace or key order and the signature will not match.

Verification example

Slack and Discord deliveries are signed too, if a secret is set. They will ignore the extra headers, so there is no reason to clear the secret when pointing Vowen at a chat webhook.

Delivery logs

Vowen keeps a log of recent deliveries so you can confirm they are landing and debug failures. Click Logs in the Configure Webhook screen to open the Webhook Logs view.
  • The last 25 deliveries are retained; older entries drop off automatically
  • Each row shows Time, Status, Trigger (auto or manual), Note, and Duration
  • Expanding a row reveals the endpoint, the payload format (json, slack, or discord), request headers, request body, and response body
  • Headers named Authorization, Cookie, or Proxy-Authorization, or whose name contains key, token, secret, password, or auth, are stored as ***, so a custom auth header you added is never written to the log file
  • Request and response bodies are truncated at 2048 characters, with a note showing how many were dropped
  • Refresh re-reads the log; Clear logs empties it

Error handling

A failed webhook never interrupts recording or note generation. Non-2xx responses and network errors are recorded in the delivery log with the status code (or the error message) and moved past. There is no automatic retry, so use the log to spot failures and resend by hand from the note.