Skip to main content

Notification Channels & Templates

Svantic delivers notifications through configurable channels — email, Slack, webhook, SMS, and phone. Each channel has its own message format, delivery mechanism, and capabilities. Templates control how messages are rendered for each channel and event type.

Channel Types

Email

Delivers formatted HTML emails via the platform’s SMTP service. Best for: Approval requests, daily digests, operation summaries, compliance audit trails. Capabilities: Rich HTML formatting, deep links to the dashboard, supports attachments for reports. Configuration:

Slack

Delivers formatted messages to a Slack channel using the Slack API. Supports interactive buttons for approvals directly within Slack. Best for: Real-time alerts, team-visible approval requests, operational notifications. Capabilities: Block Kit formatting, interactive Approve/Deny buttons, threaded replies, severity-coded emoji indicators. Configuration:
For step-by-step instructions on creating a Slack App and obtaining the bot token and channel ID, see the Slack Integration guide. Interactive resolution: When an approval notification includes simple options (Approve/Deny), Slack renders inline buttons. Clicking a button resolves the pending request immediately via the Slack interactive webhook. For complex forms or sensitive fields, a “Complete in Dashboard” button links to the approval page.

Webhook

Delivers a signed JSON payload to any HTTP endpoint. Designed for integration with external systems — PagerDuty, Opsgenie, custom automation, ticketing systems. Best for: System-to-system integration, triggering external workflows, audit logging to external SIEM. Capabilities: JSON payload with full event data, HMAC-SHA256 signature for verification, callback_token for resolution, retry with exponential backoff (3 attempts: 1s, 5s, 30s). Configuration:
Outbound payload structure:
The callback_token allows the receiving system to resolve pending requests without Svantic credentials. POST the token back to the resolve_url with a resolution object.

SMS

Delivers short text messages via Twilio SMS. Best for: Urgent approval requests when approvers are away from their desk, critical alerts that need immediate attention. Capabilities: Short-form messages (160 chars for single segment), deep link to dashboard for resolution. Configuration:

Phone

Delivers voice notifications via Twilio outbound calls. Uses text-to-speech (TTS) for the message and DTMF (keypad) input for resolution. Best for: Critical escalations when other channels haven’t been resolved, high-stakes approvals requiring verbal confirmation. Capabilities: TTS message delivery, DTMF input collection (press 1 to approve, 2 to deny), retry on no-answer, voicemail detection. Configuration:
Resolution via DTMF: The TTS script reads the approval context and offers keypad options. Pressing a key immediately resolves the pending request via the Twilio status callback. Escalation: If the first phone number doesn’t answer, the system tries the next number in the list. If all numbers fail, the request remains pending (and may expire per the policy’s expiration setting).

In-App

Always enabled, not configurable. Every notification appears in the dashboard’s notification bell. Approval requests appear in the Approvals page.

Template System

Templates control how each notification is rendered for each channel. The system uses a master + tenant architecture.

Architecture

Template Master (built-in defaults) → seeded on first boot → Tenant Templates (per-tenant, in database) → runtime lookup → Template Registry → fallback chain → Rendered Notification

Template Master

The template master contains the default templates for every supported combination of event type and channel type. These are shipped with the platform and represent the recommended notification format. On first boot (database seed): The master templates are written to the root tenant’s notification_templates table. These serve as the source of truth for all future tenant creation. On tenant creation: The root tenant’s templates are copied to the new tenant. The new tenant immediately has a full set of working templates that can be customized independently.

Template Structure

Each template is identified by three keys: Template content varies by channel:

Template Variables

Templates can reference variables from the notification context:

Template Resolution

When a notification needs to be sent, the Template Registry resolves the template using a fallback chain:
  1. Exact match: (tenant_id, event_type, channel_type) — tenant has a custom template for this specific event and channel
  2. Category fallback: (tenant_id, event_category.*, channel_type) — tenant has a template for the event category (e.g., guard.* catches all guard events)
  3. Default fallback: (tenant_id, *, channel_type) — tenant’s catch-all template for the channel
  4. Master fallback: If no tenant template matches, use the root tenant’s template (the master)
This means a tenant can override just the email template for approvals while using defaults for everything else.

Editing Templates

Dashboard: Navigate to Settings → Channels → Templates. Select an event type and channel to view and edit the template. A preview pane shows the rendered output with sample data. API:

Default Event-to-Channel Mappings

Every new tenant receives the following default notification mappings. These determine which channels are notified for which events: SMS and phone are never enabled by default — they are opt-in per policy because they are intrusive and incur per-message/per-minute costs. Mappings are managed through policies. Each policy can link to any combination of channels. The table above reflects the built-in policies that ship with every tenant.

Default Templates by Event Type

Approval Required

Alert (Agent Unhealthy, Dispatch Failed, etc.)

Operation Complete

Informational (Agent Registered, Session Started, etc.)


Creating Channels

Dashboard

Navigate to Settings → Channels and click New Channel. Select the channel type, provide a name and configuration, and save.

API

Default Channels

Every new tenant is provisioned with four default channels: The email channel works immediately — no configuration needed beyond the tenant’s admin email address. Other channels require provider credentials before they can deliver.

Linking Channels to Policies

Channels are linked to policies to control which notifications go where:
A single channel can be linked to multiple policies. Individual links can be enabled/disabled without removing the channel. This allows fine-grained control — for example, send all alerts to Slack, but only send critical approvals to the phone channel.

Delivery Tracking

Every notification delivery is tracked: View delivery history in Settings → Channels → (select channel) → Delivery Log, or via the API:

Testing Channels

Send a test notification through any configured channel:
This sends a sample notification through all linked channels without triggering any real enforcement. Use this to verify delivery configuration before going live.

API Reference


Further Reading