Skip to main content
PriceSignal delivers instant notifications when your alert rules trigger. Choose from multiple notification channels based on your preferences, urgency requirements, and integration needs.

Supported Channels

PriceSignal supports six notification channels, each optimized for different use cases:

Telegram

Instant messaging with rich formatting

Email

Detailed alerts with full context

SMS

Critical alerts on your mobile device

Webhook

Custom integrations and automation

Push

Mobile app notifications

None

Silent monitoring (logging only)

Channel Configuration

Each notification channel is configured at the user level and then selected when creating price rules.

Setup Your Channels

First, configure your notification preferences:
mutation AddNotificationChannel($input: NotificationChannelInput!) {
  addUserNotificationChannel(input: $input) {
    id
    channelType
    telegramChatId
    telegramUsername
  }
}

Query Your Channels

query GetMyChannels {
  me {
    notificationChannels {
      id
      channelType
      telegramChatId
      telegramUsername
    }
  }
}
Each user can configure multiple channels. When creating a price rule, specify which channel should receive alerts for that specific rule.

Telegram Notifications

Telegram is the recommended channel for real-time cryptocurrency alerts due to its:
  • Instant delivery (typically < 1 second)
  • Rich message formatting
  • No rate limiting concerns
  • Free to use
  • Mobile and desktop support

Setup Telegram

  1. Start a Chat: Open Telegram and search for the PriceSignal bot
  2. Send /start: Initiate the conversation with /start
  3. Get Your Chat ID: The bot will reply with your unique chat ID
  4. Save the Channel: Use the mutation above with your chat ID
  5. Test: Create a test alert to verify delivery
Configuration Example:
{
  "channelType": "TELEGRAM",
  "telegramChatId": "123456789",
  "telegramUsername": "yourhandle"
}

Telegram Message Format

When an alert triggers, you’ll receive a formatted message:
🚨 Price Alert Triggered

Rule: BTC Above $70,000
Instrument: BTCUSDT
Current Price: $70,245.50
Change: +$1,245.50 (+1.81%)
Triggered At: 2026-03-03 14:23:45 UTC

📊 Condition Met:
Price crossed above $70,000
🚨 Price Alert Triggered

Rule: BTC Support Level
Instrument: BTCUSDT
Current Price: $60,150.00
Change: -$2,350.00 (-3.76%)
Triggered At: 2026-03-03 14:23:45 UTC

📉 Condition Met:
Price fell below $60,000

Email Notifications

Email notifications provide detailed alerts with complete context and historical data.

Email Features

  • HTML formatted messages
  • Charts and price history (if configured)
  • Activation log summary
  • Direct links to your dashboard
  • Archive of all alerts
Use Cases:
  • Long-term position monitoring
  • Detailed analysis requirements
  • Non-urgent alerts
  • Record keeping
Email delivery can take 1-5 minutes depending on your provider. For time-sensitive alerts, use Telegram or SMS instead.

SMS Notifications

SMS provides critical alerts directly to your mobile device, even without internet access.

When to Use SMS

Best For

  • Critical price levels
  • Stop loss triggers
  • High-value positions
  • Emergency notifications

Avoid For

  • High-frequency alerts
  • Low-priority notifications
  • Testing/development
  • Verbose messages

SMS Message Format

SMS messages are concise due to character limits:
PriceSignal Alert: BTC $70,245 (+1.8%) - Rule "BTC Above 70k" triggered at 14:23 UTC
SMS notifications may incur charges depending on your plan. Configure SMS only for your most important alerts to avoid unexpected costs.

Webhook Notifications

Webhooks enable custom integrations with external systems, trading bots, or your own applications.

Webhook Payload

When a rule triggers, PriceSignal sends an HTTP POST request to your webhook URL:
{
  "event": "price_rule_triggered",
  "timestamp": "2026-03-03T14:23:45.123Z",
  "rule": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "name": "BTC Above $70,000",
    "description": "Alert when Bitcoin exceeds $70,000"
  },
  "instrument": {
    "id": "660e8400-e29b-41d4-a716-446655440001",
    "symbol": "BTCUSDT",
    "name": "Bitcoin / Tether",
    "baseAsset": "BTC",
    "quoteAsset": "USDT",
    "exchange": "Binance"
  },
  "trigger": {
    "price": 70245.50,
    "previousPrice": 69000.00,
    "priceChange": 1245.50,
    "priceChangePercentage": 1.81,
    "triggeredAt": "2026-03-03T14:23:45.123Z"
  },
  "conditions": [
    {
      "type": "PRICE",
      "value": 70000,
      "additionalValues": {
        "direction": "above"
      },
      "met": true
    }
  ]
}

Webhook Configuration

mutation ConfigureWebhook {
  addUserNotificationChannel(input: {
    channelType: "WEBHOOK"
    webhookUrl: "https://your-domain.com/api/price-alerts"
    webhookSecret: "your-secret-key"
  }) {
    id
    channelType
  }
}

Webhook Security

Each webhook request includes a signature in the X-PriceSignal-Signature header:
X-PriceSignal-Signature: sha256=5d41402abc4b2a76b9719d911017c592
X-PriceSignal-Timestamp: 1709476425
Verify the signature using your webhook secret:
const crypto = require('crypto');

function verifyWebhook(payload, signature, secret) {
  const hmac = crypto.createHmac('sha256', secret);
  const digest = 'sha256=' + hmac.update(payload).digest('hex');
  return crypto.timingSafeEqual(
    Buffer.from(signature),
    Buffer.from(digest)
  );
}
Always verify signatures to prevent spoofed alerts.

Webhook Retry Policy

  • Timeout: 10 seconds
  • Retries: 3 attempts with exponential backoff
  • Success: HTTP 200-299 response
  • Failure: Any other status code or timeout
Webhook URLs must be HTTPS in production. HTTP is only allowed for localhost during development.

Push Notifications

Mobile push notifications via the PriceSignal mobile app (iOS and Android).

Setup Push Notifications

  1. Download the App: Install PriceSignal from the App Store or Google Play
  2. Sign In: Use your PriceSignal account credentials
  3. Enable Notifications: Grant notification permissions when prompted
  4. Auto-Configuration: Push channel is automatically configured
Push Message Example:
🚨 BTC Above $70,000
Current Price: $70,245.50 (+1.81%)
Tap to view details

Push Notification Features

Rich Notifications

Includes price charts and trend indicators

Deep Links

Tap to open directly to rule details

Action Buttons

Quick actions: Disable rule, Snooze, View chart

Grouped Alerts

Multiple alerts grouped by instrument

Silent Monitoring (NONE)

Set notificationChannel to NONE for rules you want to track without notifications:
mutation CreateSilentRule {
  createPriceRule(input: {
    name: "BTC Price Tracker"
    description: "Track but don't notify"
    instrumentId: "..."
    notificationChannel: "NONE"
    conditions: [{
      conditionType: "PRICE"
      value: 70000
      additionalValues: "{\"direction\": \"above\"}"
    }]
  }) {
    id
    name
    notificationChannel
  }
}
Use Cases:
  • Backtesting strategies
  • Gathering activation data
  • Testing new conditions
  • Historical analysis
Even with NONE, all triggers are logged in activationLogs for later review.

Per-Rule Channel Selection

Each price rule can use a different notification channel:
mutation CreateMultiChannelRules {
  # Critical alert via SMS
  critical: createPriceRule(input: {
    name: "BTC Stop Loss"
    instrumentId: "..."
    notificationChannel: "SMS"
    conditions: [{
      conditionType: "PRICE"
      value: 55000
      additionalValues: "{\"direction\": \"below\"}"
    }]
  }) { id }
  
  # Regular alert via Telegram
  regular: createPriceRule(input: {
    name: "BTC Resistance"
    instrumentId: "..."
    notificationChannel: "TELEGRAM"
    conditions: [{
      conditionType: "PRICE"
      value: 75000
      additionalValues: "{\"direction\": \"above\"}"
    }]
  }) { id }
  
  # Analysis via Email
  analysis: createPriceRule(input: {
    name: "BTC Weekly High"
    instrumentId: "..."
    notificationChannel: "EMAIL"
    conditions: [{
      conditionType: "PRICE_PERCENTAGE"
      value: 10
      additionalValues: "{\"direction\": \"increase\", \"timeframe\": \"7d\"}"
    }]
  }) { id }
}

Notification Best Practices

Choose the Right Channel

Telegram or SMSFor:
  • Price levels that require immediate action
  • Stop loss triggers
  • Time-sensitive opportunities
  • Critical market movements
Average delivery: < 5 seconds

Avoid Notification Fatigue

  1. Prioritize: Use SMS only for critical alerts
  2. Consolidate: Group similar alerts to same channel
  3. Tune Thresholds: Adjust to reduce noise
  4. Review Regularly: Check activation logs weekly
  5. Disable Inactive: Remove rules you don’t act on

Testing Notifications

Before deploying production rules:
  1. Create a test rule with a channel you monitor
  2. Set a threshold that will trigger soon
  3. Verify you receive the notification
  4. Check message formatting and content
  5. Test any webhook integrations thoroughly
  6. Delete the test rule once confirmed
Always test new notification channels before using them for critical alerts. Verify that messages are delivered and formatted correctly.

Delivery Status

Track notification delivery in the activation logs:
query GetNotificationStatus($ruleId: ID!) {
  priceRule(id: $ruleId) {
    activationLogs {
      nodes {
        triggeredAt
        price
        notificationStatus
        notificationError
        notificationDeliveredAt
      }
    }
  }
}
Status Values:
  • PENDING: Notification queued for delivery
  • SENT: Successfully sent to notification service
  • DELIVERED: Confirmed delivered (webhooks only)
  • FAILED: Delivery failed (check error message)
Webhook delivery can be confirmed via 200-level HTTP responses. Other channels report SENT but not necessarily DELIVERED due to third-party limitations.

Build docs developers (and LLMs) love