Skip to Content
GuidesNotifications

Notifications

The notification provider fires structured events at key pipeline moments — rejections, executions, approvals, cap warnings, and monitor alerts. Use it to integrate txfence with Slack, PagerDuty, email, or any webhook endpoint.

Setup

import { createAgent } from '@txfence/core' import { createConsoleNotificationProvider, createWebhookNotificationProvider, createCompositeNotificationProvider, } from '@txfence/core' const notificationProvider = createCompositeNotificationProvider( createConsoleNotificationProvider({ prefix: '[txfence]' }), createWebhookNotificationProvider('https://hooks.slack.com/...'), ) const agent = createAgent( config, adapters, rpcUrls, executor, undefined, undefined, undefined, undefined, // 5–8: capLockProvider, metadataVerifier, approvalProvider, receiptStore undefined, undefined, undefined, undefined, // 9–12: auditLog, telemetryProvider, capLockConfigs, policyNode notificationProvider, // 13: notificationProvider )

Providers

Console

createConsoleNotificationProvider({ prefix: '[txfence]', logLevel: 'info', // 'info' | 'warn' | 'error' })

Logs structured one-line messages to the console.

Webhook

createWebhookNotificationProvider('https://your-endpoint.com/notify', { secret: process.env.WEBHOOK_SECRET, // HMAC-SHA256 signing timeout: 5000, headers: { 'X-Source': 'txfence' }, })

POSTs JSON payload. Optional HMAC-SHA256 signature via x-txfence-signature header.

Composite

createCompositeNotificationProvider(providerA, providerB, providerC)

Fans out to all child providers in parallel. One provider failing does not block others.

NotificationEvent

Eight event variants:

EventFired when
policy_rejectedAction blocked by policy
execution_successTransaction confirmed on-chain
execution_failedExecutor threw or broadcast failed
approval_requestedAction exceeded approval threshold
approval_decisionHuman approved, rejected, or timed out
cap_warningCap consumption crossed warning threshold
monitor_unrecordedMonitor detected an unrecorded transaction
monitor_reorgMonitor detected a chain reorganization

Monitor integration

Pass notificationProvider to MonitorConfig to receive monitor_unrecorded and monitor_reorg events:

import { createMonitor } from '@txfence/monitor' const monitor = createMonitor({ ...monitorConfig, notificationProvider, })
Last updated on