Documentation

Integrations

Integrations connect OpenNVR to the third-party services your team already runs — chat, email, message brokers, object storage, and SIEMs — so camera and detection events flow straight into your existing tooling. You’ll find it under Administration → Integrations in the sidebar.

[!NOTE] Viewing integrations requires the integrations.view permission. Adding, editing, testing, and deleting integrations is superuser-only — non-admins see the list but not the controls.

Integrations tab — grid of configured integration cards

What you can do here

  • Add an integration of one of 8 types: Webhook, Slack, Microsoft Teams, Email (SMTP), MQTT, S3 Storage, Syslog / SIEM, and Prometheus.
  • Choose exactly which events each integration receives (per-event checkboxes).
  • Test Connection on any card to send a dummy event and confirm delivery before you rely on it.
  • Enable/disable, reconfigure, or delete an integration at any time.

Each integration appears as a card showing its status (a green check when enabled, grey when disabled), its type, and a one-line summary of its target. Hover a card to reveal the Test (▶), Configure (⚙), and Delete (🗑) actions.

Add an integration

  1. Click Add Integration (top-right — visible to superusers only). The Add Integration dialog opens.
  2. Pick an Integration Type from the dropdown. (The type is locked once the integration is created — to change type, delete and re-add.)
  3. Give it a Name — this is just a label for the card, e.g. Ops Team Slack.
  4. Fill in the type-specific fields (see each type below).
  5. For event-driven types, tick the Events you want delivered.
  6. Leave Enabled checked (a disabled integration is skipped, and its Test button will fail).
  7. Click Create Integration.

Once saved, hover the new card and click Test Connection (▶) to send a sample event and verify the endpoint receives it.

[!TIP] To change an existing integration, hover its card and click Configure (⚙). Everything except the type is editable. Delete (🗑) asks for confirmation first.

The events matrix

Webhook, Slack, Teams, and MQTT integrations let you subscribe to specific events. Tick any combination of:

Event Fires when
camera.online A camera reconnects / comes online
camera.offline A camera drops / goes offline
motion.detected Motion is detected on a camera
object.detected An AI adapter detects an object (person, vehicle, …)
recording.started A recording session begins
incident.created An incident is raised (e.g. from Alerts & Incidents)

Email and S3 don’t use the events matrix — email is for notifications, S3 is driven by its own upload toggles.


Integration types & fields

Every example value below matches the placeholder shown in the actual form, so you can follow along field-by-field.

Webhook

Posts a JSON payload to any HTTP endpoint.

Field Required Example Notes
Target URL https://api.example.com/hook Where the event JSON is POSTed
Secret Token x-auth-token Optional shared secret sent for verification
Events (checkboxes) Which events to deliver

Slack

Sends messages to a Slack channel via an incoming webhook.

Field Required Example Notes
Webhook URL https://hooks.slack.com/services/... Create one in Slack → Incoming Webhooks
Channel #alerts Overrides the webhook’s default channel
Mention @user or @here Prepended to the message to ping someone
Events (checkboxes) Which events to deliver

Microsoft Teams

Posts to a Teams channel via an incoming webhook connector.

Field Required Example Notes
Webhook URL https://outlook.office.com/webhook/... From the Teams channel’s Connectors
Events (checkboxes) Which events to deliver

Email (SMTP)

Sends email notifications through your own SMTP server.

Field Required Example Notes
SMTP Host smtp.gmail.com Your mail server
Port 587 Defaults to 587 (STARTTLS)
Username nvr@example.com SMTP auth user
Password •••••••• SMTP auth password / app password
Use TLS/SSL (checked) On by default
From Address nvr@example.com Sender shown to recipients
Recipients admin@example.com, security@example.com Comma-separated list

MQTT

Publishes events to an MQTT broker for downstream automation.

Field Required Example Notes
Broker URL mqtt://localhost:1883 mqtt:// or mqtts:// broker address
Username Optional broker auth
Password Optional broker auth
Topic Prefix opennvr Events publish under opennvr/...
Events (checkboxes) Which events to deliver

S3 Storage

Uploads recordings and/or snapshots to any S3-compatible bucket (AWS S3, MinIO, Backblaze, Cloudflare R2, …).

Field Required Example Notes
Endpoint https://s3.amazonaws.com S3-compatible endpoint URL
Access Key AKIA...
Secret Key ••••••••
Bucket Name opennvr-recordings Target bucket
Region auto Defaults to auto
Upload Recordings (checkbox) Push recording segments to the bucket
Upload Snapshots (checkbox) Push event snapshots to the bucket

Syslog / SIEM and Prometheus

Both types are selectable in the dropdown but their configuration forms aren’t wired up yet — the dialog shows “Configuration not available for this type yet.” They’re placeholders for an upcoming release; for now, use the Webhook type to forward events to a SIEM’s HTTP collector, and scrape adapter metrics directly with Prometheus (see System Monitoring).


📸 Screenshots to capture

Capture these from the running app and save them to opennvr-site/public/screenshots/ with the exact filenames below:

  • integrations-overview.png — the Integrations tab with a couple of configured cards (hover one so the Test/Configure/Delete actions show).
  • integrations-add-dialog.png — the Add Integration dialog with the Type dropdown open, showing all 8 types.
  • integrations-slack-config.png — the dialog on Slack, filled in with Ops Team Slack, a webhook URL, #alerts, and a couple of events ticked.
  • integrations-events-matrix.png — a close-up of the Events checkboxes (optional, if it reads well as its own shot).