User Guide

A comprehensive, step-by-step guide to every feature of WardenPoint. If you have a question — the answer is here.

What is WardenPoint?

WardenPoint is a multi-channel notification platform for companies and teams. You create recipients (people who need to receive alerts), configure notification channels (Telegram, voice calls, WhatsApp, Viber, Email, SMS), and send critical notifications — manually from the dashboard or automatically via API.

The key feature: if a recipient does not acknowledge a notification, the system automatically escalates — retries through another channel, increases urgency, or notifies a manager. This ensures that critical alerts are never missed.

💬 Telegram (text, voice, calls)
📞 Voice calls (PBX / Asterisk)
📱 WhatsApp messages
💜 Viber messages
📧 Email notifications
✉️ SMS messages

How it works — 4 simple steps

1
📝

Create account

Register, enter company name, confirm email

2
⚙️

Configure

Add recipients, set up channels and escalation rules

3
📤

Send

Send notifications via dashboard or API

4
🔄

Auto-escalation

System escalates unacknowledged notifications automatically

🚀 Getting Started

1

Register your account

Go to the registration page. Enter your name, email, password, and company name. After registration, you will be automatically logged into the dashboard. No credit card required — the Free plan is available immediately.

2

Add recipients

Go to Dashboard → Recipients → Add Recipient. Enter the person's name and at least one contact method: Telegram username, phone number, or email. For Telegram — enter the recipient's username (e.g., @johndoe) so the system can send messages directly.

3

Set up notification channels

First, set up Telegram: go to Settings → Credentials, enter your Telegram API credentials and authorize the account. Voice calls via WardenPoint telephony work out of the box on paid plans. For WhatsApp, Viber, or custom Asterisk PBX — add their credentials in Settings → Credentials as well.

4

Send a test notification

Go to Dashboard → Notifications → Send Notification. Select a recipient, type a message, choose a priority (start with 'normal'), and click Send. The recipient will receive the notification through the configured channel within seconds.

5

Go live with API integration

Go to Settings → API Keys, create a key. Use the key in the X-API-Key header to send notifications programmatically from your monitoring system, CI/CD pipeline, or any other service. See the API section below for code examples.

💡

Tip

Start with 2–3 test recipients before sending to everyone. Make sure Telegram is linked and the notification arrives. Then add the rest of your team.

📊 Dashboard

The dashboard is your main workspace. Here's what each section does:

Home

Overview of recent notifications, delivery statistics, and quick actions. This is the first page you see after login.

Recipients

List of all people who receive notifications. Add, edit, delete, and view contact details. Each recipient can have multiple contact methods (Telegram, phone, email).

Groups

Organize recipients into groups (e.g., 'DevOps Team', 'Managers'). Send notifications to an entire group with one click or API call.

Notifications

History of all sent notifications. See delivery status (delivered, failed, pending), channel used, timestamps, and escalation chain status.

Escalation Policies

Configure automatic escalation rules: what happens if a notification is not acknowledged — retry on another channel, call the manager, etc.

Analytics

Charts and metrics about notification delivery rates, average response time, most used channels, and escalation frequency. Available on Team plan and above.

Company Settings

Company name, timezone, default language, and general preferences.

Credentials

Tokens and connection details for third-party services: Telegram account credentials, custom Asterisk PBX connection, WhatsApp API key, Viber bot token.

API Keys

Create and manage API keys for programmatic access. Each key is scoped to your company's data.

Billing & Plan

Your current plan, usage statistics, payment history. Upgrade or downgrade your plan here.

Team

Invite team members to your company account. Assign roles (admin, member). Team members can manage recipients and send notifications.

👥 Recipients

Recipients are the people who receive your notifications. Each recipient must have a name and at least one contact method. The more contact methods you add, the more channels the system can use for delivery and escalation.

Adding recipients

Click 'Add Recipient' in the Recipients section. Fill in the name (required), and at least one of: Telegram username (e.g., @johndoe), phone number (international format, e.g., +380501234567), or email address. You can add all three — this gives the system the most flexibility for channel selection and escalation.

Contact types and what they unlock

Each contact type enables specific notification channels:

Contact TypeExampleUnlocked Channels
Telegram@johndoeTelegram text, voice messages, voice calls via Telegram
Phone+380501234567PBX voice calls (Asterisk), SMS
Email[email protected]Email notifications

Recipient groups

Groups let you organize recipients (e.g., 'Backend team', 'Night shift', 'Management'). When you send a notification to a group, every member of that group receives it. You can also set notification rules at the group level — for example, all members of the 'Critical Alerts' group get voice calls by default.

CSV Import

To add many recipients at once, use CSV import. Go to Recipients → Import. Your CSV must have a header row with columns: name, phone, email, telegram_username. Only the 'name' column is required — others are optional. Example:

name,phone,email,telegram_username
John Doe,+380501234567,[email protected],@johndoe
Jane Smith,+380671234567,[email protected],

📡 Notification Channels

WardenPoint supports 9 notification channels across 7 providers. Each channel has different strengths: text channels are great for informational alerts, voice channels grab immediate attention for critical situations. Here's a detailed breakdown:

💬

Telegram — Text Message

Provider: Telegram

Sends a text message to the recipient's Telegram account from your company's dedicated Telegram number. Supports up to 4,096 characters. Acknowledgment is available via a link in the message.

Best for: informational alerts, status updates, non-urgent notifications.

🎤

Telegram — Voice Message

Provider: Telegram

Sends an audio voice message to Telegram. The system converts your text to speech (TTS) and sends the resulting audio file. The recipient hears the message without reading. Great for getting attention when the person might not read texts.

Best for: medium-priority alerts where you need the person to hear the message.

📞

Telegram — Voice Call

Provider: Telegram

Initiates a voice call through Telegram. The recipient's phone rings with a Telegram call, and they hear the TTS message. This is the most attention-grabbing Telegram channel — the phone literally rings.

Best for: high-priority and critical alerts via Telegram.

🤖

Telegram Bot — Text

Provider: Telegram Bot

A separate bot (BotFather-issued) delivers text with inline ack/snooze buttons. No personal Telegram account with a phone number required.

Best for: self-service onboarding for recipients who don't want to share a phone number.

🎙️

Telegram Bot — Voice notes

Provider: Telegram Bot

The same bot sends a voice note (OGG/Opus) with ack/snooze buttons. TTS generates the audio by default, or you can upload your own track.

Best for: alerts that should be heard without a text context, without a personal Telegram account.

☎️

Voice Call — WardenPoint Telephony

Provider: WardenPoint PBX

Makes a real phone call (PSTN) using WardenPoint's built-in telephony system (Asterisk). The recipient's phone rings, they pick up, and hear the TTS message. No setup required — works out of the box on all paid plans.

Best for: critical alerts when you need to call a real phone number, not just Telegram.

🏢

Voice Call — Custom Asterisk PBX

Provider: Your own Asterisk

If your company has its own Asterisk PBX, you can connect it to WardenPoint. Calls will go through your PBX, using your SIP trunks and phone numbers. This gives you full control over call routing and costs. Requires Team plan or above.

Best for: companies with existing PBX infrastructure who want to use their own phone lines.

📱

WhatsApp — Text Message

Provider: WhatsApp Business API

Sends a text message via WhatsApp. Useful if your recipients prefer WhatsApp over Telegram. Supports delivery and read receipts. Requires WhatsApp Business API credentials in Settings → Credentials.

Best for: teams where WhatsApp is the primary messenger.

💜

Viber — Text Message

Provider: Viber Bot API

Sends a text message via Viber. Maximum 1,000 characters. Supports delivery confirmation. Requires Viber bot token in Settings → Credentials.

Best for: recipients in regions where Viber is popular (Eastern Europe, Southeast Asia).

📧

Email

Provider: Email (SMTP)

Sends an email notification. Supports rich HTML formatting and up to 50,000 characters. Acknowledgment via a button link in the email. Works out of the box — no additional setup needed.

Best for: detailed notifications, documentation-style alerts, recipients without messengers.

✉️

SMS

Provider: SMS Gateway

Sends a short text message via SMS. Limited to 160 characters. Works on any mobile phone, even without internet. Available on Team plan and above.

Best for: recipients without internet access, backup channel for critical alerts.

🔔 Priorities

Every notification has a priority level that determines how aggressively it is delivered and escalated. Choose the right priority for each situation:

🟢 Low

Informational alerts that don't require immediate action. System sends a text message via the default channel. Quiet hours are respected.

Default: Telegram text → no escalation. Retry: 2 attempts with 5 min delay. Respects quiet hours.

🔵 Normal

Standard alerts that should be delivered reliably. If the text message fails, the system falls back to a voice message.

Default: Telegram text → voice message on fail. Retry: 3 attempts with 1 min delay. Respects quiet hours.

🟠 High

Important alerts that need quick attention. Starts with a voice message, escalates to voice call, then text. Bypasses quiet hours.

Default: voice message → voice call → text message. Retry: 3 attempts with 1 min delay. Bypasses quiet hours.

🔴 Critical

Emergency alerts that must be acknowledged immediately. Starts with a voice call, then voice message, then text. Maximum retry attempts. Always bypasses quiet hours.

Default: voice call → voice message → text message. Retry: 5 attempts with 1 min delay. Always bypasses quiet hours.

Escalation

Escalation is the core feature that makes WardenPoint different from a simple notification sender. When a notification is sent, the system doesn't just fire-and-forget — it tracks whether the recipient acknowledged it, and takes action if they didn't.

What is escalation?

After sending a notification, the system waits for an acknowledgment (ACK) from the recipient. ACK can happen by: clicking an acknowledgment link in a Telegram message, clicking a link in an email, or simply answering a voice call. If no ACK is received within the configured timeout (e.g., 2–5 minutes), the system moves to the next escalation step: sends via a different channel, retries the same channel, or notifies a manager.

📤
Send via first channel
Wait for ACK
No ACK received
🔄
Escalate to next step
ACK received → stop

Escalation policies

You can create reusable escalation policies in Dashboard → Escalation Policies. A policy is a set of ordered rules: 'first send Telegram text, wait 3 min, then call via PBX, wait 2 min, then notify the manager'. Policies can be assigned to individual recipients or groups.

Available escalation actions

sendSend the notification via a specific channel and provider (e.g., send voice message via Telegram).
retryRetry the same channel that failed. Useful when network issues cause temporary failures.
notify_managerSend a separate notification to the team manager or on-call person, informing them that the original recipient did not respond.

Acknowledgment (ACK)

ACK is how the system knows the recipient got the message. For Telegram text — clicking the acknowledgment link in the message. For Telegram voice/call — the message being delivered. For email — clicking the acknowledgment link. For voice calls — answering the call. Once ACK is received, the escalation chain stops immediately — no further steps are executed.

⚙️ Notification Settings

Notification settings let you fine-tune how each recipient (or group) receives alerts. You can configure these per priority level:

Per-recipient settings

Each recipient can have individual notification rules for each priority level (low, normal, high, critical). Go to Recipients → select a recipient → Notification Settings. Here you configure which channels to use, escalation order, retry count, and timeouts.

Per-group settings

Same as per-recipient, but applied to an entire group. Useful when all members of a team should have the same notification rules. Individual recipient settings override group settings.

Quiet hours

Set a time range when low and normal priority notifications are held and not delivered (e.g., 22:00–08:00). High and critical priorities bypass quiet hours. Configure per recipient or per group.

Schedule grid (7×24)

A detailed weekly schedule (7 days × 24 hours) that defines when a recipient is available to receive notifications. Useful for shift workers — only notify people who are currently on duty.

Retry settings

Configure how many times the system retries a failed delivery (1–10 attempts) and the delay between retries (1–60 minutes). Higher priority notifications get more retries by default.

Channel and provider selection

For each escalation step, choose the channel type (text_message, voice_message, voice_call) and the provider (Telegram, platform Asterisk, custom Asterisk, WhatsApp, Viber, Email, SMS). This gives you full control over the delivery path.

📤 Sending Notifications

There are two ways to send notifications: manually through the dashboard, or programmatically via the REST API.

Sending from the dashboard

Go to Dashboard → Notifications → Send Notification. Select a recipient (or group), type your message (up to 4,096 characters), choose a priority level, and optionally attach an audio file. Click Send. The notification will be processed immediately — you'll see the status update in real time on the Notifications page.

Sending via API

Use the REST API to send notifications from your monitoring tools, scripts, CI/CD pipelines, or any other system. All API endpoints are under /api/v1/ and require an API key for authentication. Here are the available methods:

Synchronous send

Sends one notification and waits for the result. Returns the delivery status in the response. Best for simple integrations where you need immediate feedback.

POST /api/v1/notifications/send

Asynchronous send

Queues the notification for background processing and returns immediately with a notification ID. The notification is delivered asynchronously. Best for high-volume sends where you don't need to wait.

POST /api/v1/notifications/send-async

Send to group

Send a notification to all members of a recipient group. Supports both sync (send-to-group) and async (send-to-group-async) modes.

POST /api/v1/notifications/send-to-group

Bulk send (async)

Send multiple notifications at once (up to 100 in a single request). Each notification can have a different recipient and message. All are processed asynchronously.

POST /api/v1/notifications/send-bulk-async

🔌 API Integration

The WardenPoint REST API lets you integrate notifications into any system. All endpoints are versioned under /api/v1/ and return JSON responses.

📖

Interactive API Documentation (Swagger UI)

Explore all endpoints, try requests interactively, and see response schemas in our Swagger documentation.

Open Swagger UI

Authentication

Every API request must include your API key in the X-API-Key header. You can create API keys in Dashboard → Settings → API Keys. Each key is scoped to your company — it can only access your company's recipients and notifications.

🔑

How to get your API key

  1. Log in to your WardenPoint dashboard
  2. Go to Settings → API Keys
  3. Click "Create API Key" and give it a name
  4. Copy the full token (shown only once!) — it looks like acb_xxx...xxx.secret

API Endpoints

MethodPathDescription
POST/api/v1/notifications/sendSend a notification synchronously. Waits for delivery and returns the result.
POST/api/v1/notifications/send-asyncQueue a notification for async delivery. Returns immediately with notification ID.
POST/api/v1/notifications/send-to-groupSend a notification to all members of a group (synchronous).
POST/api/v1/notifications/send-to-group-asyncSend a notification to all group members (asynchronous).
POST/api/v1/notifications/send-bulk-asyncSend up to 100 notifications in one request (all async).
GET/api/v1/notificationsList all notifications with filtering and pagination.
GET/api/v1/notifications/{id}Get full details of a specific notification.
GET/api/v1/notifications/{id}/statusGet delivery status of a notification.
POST/api/v1/notifications/{id}/retryRetry a failed notification (sync).
POST/api/v1/notifications/{id}/cancelCancel a pending notification.
POST/api/v1/notifications/{uuid}/acknowledgeAcknowledge a notification (stop escalation chain).
GET/api/v1/recipients/{id}/availabilityCheck which channels are available for a recipient.
GET/api/v1/recipients/{id}/routesGet the notification delivery routes configured for a recipient.

Request body reference (POST /send)

FieldTypeRequiredDescription
recipient_uuidstring (UUID)YesUUID of the recipient (from the Recipients page or API).
messagestringYesNotification message text. Maximum 4,096 characters.
prioritystringNoPriority level: low, normal (default), high, critical.
audio_filestringNoPath to a pre-uploaded audio file for voice channels.
max_attemptsintegerNoNumber of delivery attempts (1–10). Overrides plan defaults.

Code Examples

send-alert.sh
POSThttps://wardenpoint.com/api/v1/notifications/send
# Send a critical production alert
curl -X POST https://wardenpoint.com/api/v1/notifications/send \
-H "X-API-Key: $WARDENPOINT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"recipient_uuid": "00000000-0000-4000-8000-000000000001",
"message": "Production checkout latency above threshold",
"priority": "critical"
}'
200 OK· 142ms·
Ln 9

🪝 Outbound webhooks

WardenPoint POSTs to your own systems when notification lifecycle events happen — acknowledgments, escalations, delivery failures. Subscribe your endpoints to the events you care about and react automatically: close tickets, update incidents, kick runbooks.

⚙️

Where to configure

Create and manage webhooks in the Dashboard: Integrations → Webhooks. Each webhook has a URL, a per-webhook signing secret, an event mask, and an active toggle.

Open webhooks

Available events

Subscribe to one or more events. WardenPoint sends a separate POST for each.

  • notification.sentNotification queued and sent through its first channel.
  • notification.deliveredThe channel confirmed delivery (delivery receipt from the provider).
  • notification.failedAll delivery attempts exhausted without success.
  • notification.acknowledgedThe recipient acknowledged the alert (button, call, DTMF).
  • escalation_chain.startedEscalation chain started for an unacknowledged alert.
  • escalation_chain.resolvedEscalation chain ended via acknowledgment.
  • escalation_chain.expiredEscalation chain ran out of steps without acknowledgment.
  • recipient.contact.failedA single recipient contact failed to deliver.

Common request envelope

Every event starts with the same envelope: event name, company UUID, and timestamp. Event-specific fields are merged in on top (see per-event schemas below).

envelope.json
{
"event": "<event.name>",
"company_uuid": "8d4a7a30-c5e0-4f48-9a76-a3a4d3e0c1f2",
"timestamp": "2026-05-21T08:14:23+00:00",
...<event-specific fields below>
}

Payload schemas per event

Exact contract for each of the 8 events. Fields prefixed `// optional` may be absent depending on channel.

notification.acknowledged.json
{
"event": "notification.acknowledged",
"company_uuid": "...",
"timestamp": "...",
"notification_uuid": "...",
"recipient_uuid": "...",
"recipient_name": "Alice Smith",
"channel": "telegram",
"status": "acknowledged",
"sent_at": "...",
"acknowledged_via": "telegram_button" // telegram_button | dtmf | api | dashboard | telegram_bot_button | telegram_bot_snooze_1h
}

Signature verification

Every request is signed with HMAC-SHA256 in the X-WardenPoint-Signature header. Always verify the signature before processing the payload — this guarantees the request came from WardenPoint and not from someone who happens to know your URL.

verify-webhook.mjs
// Node.js — Express / raw HTTP
const crypto = require('crypto');
 
function verifyWebhook(req) {
const secret = process.env.WP_WEBHOOK_SECRET;
const signature = req.headers['x-wardenpoint-signature'] || '';
const body = req.rawBody; // requires bodyParser.raw or similar — do NOT use req.body (parsed)
const expected = 'sha256=' + crypto.createHmac('sha256', secret).update(body).digest('hex');
 
// Constant-time compare to defeat timing attacks
const a = Buffer.from(expected);
const b = Buffer.from(signature);
return a.length === b.length && crypto.timingSafeEqual(a, b);
}
 
app.post('/webhooks/wardenpoint', (req, res) => {
if (!verifyWebhook(req)) return res.status(401).send('bad signature');
const event = JSON.parse(req.rawBody.toString());
// handle event.event === 'notification.acknowledged' etc.
res.status(204).end();
});

Request headers

  • X-WardenPoint-SignatureHMAC-SHA256 of the request body, prefixed with "sha256=".
  • X-WardenPoint-Webhook-IdThe UUID of the webhook in your account — useful for logs and debugging.
  • X-WardenPoint-TimestampUnix timestamp of when the request was sent. Useful for deduplication or rejecting stale requests.

Retries & dead-letter

If your endpoint returns non-2xx or times out, WardenPoint retries automatically:

  • 5 attempts with 1s / 5s / 30s / 5min / 1h backoff.
  • After the final failed attempt the delivery is marked "dead-letter" — visible in the dashboard.
  • Hit "Replay" in the deliveries log to re-send a request after fixing the issue on your side.

📋 Alert templates

Save pre-built alert presets with placeholders once, then fire them from your code with one POST per slug. Variables come from the request body; the rest (recipient, priority, escalation policy) comes from the template.

When it helps

  • The same alert message lives in 3-5 places in your codebase — centralise the wording.
  • DevOps/runbook references a 'db_down' playbook — the slug becomes a public contract.
  • You want to change alert wording without a re-deploy — edit the template body, version auto-bumps.

Fire a template

Pass in the body; backend substitutes them, applies the default priority/recipient, and ships through the same pipeline as /send.

fire-template.sh
POSThttps://wardenpoint.com/api/v1/notifications/from-template/{slug}
# Fire pre-saved 'db_down' template
curl -X POST https://wardenpoint.com/api/v1/notifications/from-template/db_down \
-H "X-API-Key: $WARDENPOINT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"vars": {
"service": "mysql",
"host": "db-prod-01",
"error": "connection timeout after 30s"
}
}'
200 OK· 142ms·
Ln 11

Pinning to a version

Every save creates a new version. Existing callers keep working — add "version": N to the body to pin to a specific historical version.

pin-version.sh
# Pin to a specific version (e.g. v2)
curl -X POST https://wardenpoint.com/api/v1/notifications/from-template/db_down \
-H "X-API-Key: $WARDENPOINT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"version": 2,
"vars": { "service": "mysql", "host": "db-01", "error": "..." }
}'

Override defaults per-call

Pass an "override" object with priority, recipient_uuid and group_uuid keys in the body to swap any default for that single call.

override.sh
# Override defaults per-call
curl -X POST https://wardenpoint.com/api/v1/notifications/from-template/db_down \
-H "X-API-Key: $WARDENPOINT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"vars": { "service": "mysql", "host": "db-01", "error": "..." },
"override": {
"priority": "critical",
"recipient_uuid": "00000000-0000-4000-8000-000000000001"
}
}'

Placeholder syntax

Mustache-lite — substitution only, no logic, no loops:

  • {{ var }} — HTML-escaped (default; safe for any channel).
  • {{{ var }}} — raw value, no escape. Your responsibility.
  • No conditionals, no loops, no expressions — this is not a full templating engine.

🔑 Credentials & Setup

Most channels require external service credentials. Go to Dashboard → Settings → Credentials to configure them. Only email works out of the box — all other channels need setup.

Telegram Account

WardenPoint sends Telegram messages as a regular user (not a bot). Your company provides a dedicated Telegram account — the system logs in via MadelineProto and sends messages, voice messages, and calls from that account directly to recipients.

What you need

  • Telegram API ID and API Hash (from my.telegram.org)
  • Dedicated phone number for the Telegram account
  • One-time authorization via SMS code in Settings → Credentials
  • 2FA password (if enabled on the account)

Custom Asterisk PBX

Connect your company's own Asterisk PBX to make calls through your existing phone infrastructure. Calls are routed through your SIP trunks using your phone numbers.

What you need

  • Asterisk AMI host and port
  • AMI username and password
  • SIP trunk configuration
  • Caller ID (your phone number)

WhatsApp Business API

Send messages via WhatsApp. Requires a WhatsApp Business API account. The system uses the Cloud API to send messages and receive delivery/read receipts.

What you need

  • WhatsApp Business Account ID
  • Phone Number ID
  • Permanent access token
  • Webhook URL for delivery reports

Viber Bot

Send messages via Viber. You need to create a Viber bot account and provide the bot token.

What you need

  • Viber Bot token (from Viber Admin Panel)
  • Bot name
  • Webhook URL (configured automatically)
  • Viber Admin Panel access

💳 Plans & Billing

WardenPoint offers tiered plans. The Free plan includes Telegram and email; paid plans unlock PSTN voice calls, SMS, WhatsApp and Viber along with higher recipient/voice/SMS quotas and advanced features. The plan cards below are pulled from the live billing config.

Free

$0/mo

Telegram, email and webhooks — free forever. PSTN voice and SMS unlock on the Team plan.

Team

$12/mo

Adds PSTN voice calls, SMS credits and longer retention to Free.

Popular

Pro

$39/mo

Adds WhatsApp, analytics, custom TTS and 90-day retention. Designed for serious on-call.

Business

$79/mo

Adds Viber, custom credentials, ElevenLabs premium TTS and largest included limits.

Enterprise

Custom

Dedicated infrastructure with SLA guarantees and named support.

Payment methods: credit/debit card via MonoPay or PayPal. Annual plans get a 20% discount. You can change your plan at any time — upgrade takes effect immediately, downgrade at the end of the billing period.

FAQ

Need Help?

Can't find the answer? Our support team is ready to help you.