Notifications
Stay informed when subscribers join, pay, or need attention. Notify your subscribers about their subscription status.
Overview
Subscriptions Manager supports four notification channels:
Professional receipts and confirmations via SMTP
Telegram
Instant alerts via your custom bot
Webhook
HTTP POST to your backend for integrations
Nostr
Decentralized DMs for privacy-focused users
Two-Level Configuration
Global Settings (Extension Level)
Configure your notification credentials in the Settings (⚙️ gear icon).
These become your defaults for all plans.
Global Settings
├── Email: ✓ (SMTP configured)
├── Telegram: ✓ (Bot configured)
├── Webhook: ✗ (not configured)
└── Nostr: ✗ (not configured)Per-Plan Settings
Each plan can either:
- Inherit global settings (default)
- Override with custom channel configuration
Global: Email ✓, Telegram ✓
Plan: "Basic"
└── Uses global defaults → Email ✓, Telegram ✓
Plan: "Premium"
└── Custom override → Email ✓, Telegram ✓, Nostr ✓
Plan: "Budget"
└── Custom override → Email ✓ onlyWhat Subscribers See at Checkout
Subscribers only see contact methods you've configured. If you haven't set up Telegram, they won't see a Telegram field at checkout.
| Your Configuration | Checkout Shows |
|---|---|
| Email only | Email address field |
| Email + Telegram | Email + Telegram Chat ID fields |
| Email + Telegram + Nostr | Email + Telegram + Nostr NIP-05 fields |
| All channels | All contact fields available |
This ensures subscribers aren't confused by options you can't actually deliver.
Channel Setup Details
Email (SMTP)
Requirements:
- SMTP server hostname
- Port (587 for TLS, 465 for SSL)
- Username (usually your email)
- Password (app password recommended)
- From address
Common providers:
| Provider | Server | Port |
|---|---|---|
| Gmail | smtp.gmail.com | 587 |
| Outlook | smtp.office365.com | 587 |
| ProtonMail | smtp.protonmail.ch | 587 |
| Custom | your-smtp.domain.com | 587 |
For Gmail, use an App Password instead of your regular password.
Telegram
Requirements:
- Bot token from @BotFather
- Your chat ID (for merchant notifications)
Setup:
- Message @BotFather on Telegram
- Send
/newbotand follow prompts - Copy the bot token
- Start a chat with your bot
- Get your chat ID from
api.telegram.org/bot<TOKEN>/getUpdates
For subscribers: They provide their own chat ID at checkout. They must message your bot first for notifications to work.
Webhook
Requirements:
- URL that accepts POST requests
- (Optional) Secret for HMAC signature verification
Payload:
{
"event_type": "subscription_created",
"message": "New subscription: Pro Plan...",
"timestamp": 1704067200
}Signature header: X-Subscription-Signature (HMAC-SHA256 if secret configured)
Use cases:
- Zapier/n8n automation
- Custom CRM integration
- Slack/Discord notifications
- Database logging
Nostr
Requirements:
- Your private key (nsec or hex format)
How it works:
- Your key sends DMs to subscribers
- Subscribers provide their NIP-05 identifier (e.g.,
user@domain.com) - Messages are sent via public relays
Use a dedicated Nostr key for notifications, not your main identity. The key is stored encrypted.
Create a dedicated key:
- NostrID — Quick online generator
- Nostr Key Generator — Local Python script
Notification Events
Merchant Notifications (You Receive)
| Event | Trigger |
|---|---|
| New subscription | Subscriber completes first payment |
| Payment received | Any successful payment |
| Payment failed | Payment attempt failed |
| Subscription renewed | Automatic renewal succeeded |
| Subscription cancelled | Subscriber or you cancelled |
| Subscription expired | Grace period ended without payment |
| Expiring soon | (Optional) Days before expiration |
Subscriber Notifications (They Receive)
| Event | Content |
|---|---|
| Subscription confirmed | Welcome + manage link |
| Payment receipt | Amount + transaction ID |
| Renewal reminder | Upcoming charge notification |
| Payment failed | Alert + grace period info |
| Expiring soon | Renewal prompt |
| Subscription expired | Resubscribe link |
| Subscription cancelled | Confirmation + access end date |
Event Toggle Settings
In Global Settings, enable/disable specific events:
✓ Notify on payment received
✓ Notify on payment failed
✓ Notify on subscription created
✓ Notify on subscription cancelled
✓ Notify on subscription renewed
✓ Notify on subscription expired
☐ Notify on expiring soon (optional)How Notifications Flow
Event occurs (e.g., payment received)
│
├── Check: Is event enabled in settings?
│ └── No → Skip notification
│
├── Get notification config
│ ├── Plan has custom config? → Use plan config
│ └── No custom config? → Use global settings
│
├── Send to MERCHANT via configured channels
│ ├── Telegram (if configured)
│ ├── Email (if configured)
│ ├── Webhook (if configured)
│ └── Nostr (if configured)
│
└── Send to SUBSCRIBER via their chosen contact
└── Email/Telegram/Nostr based on their preferenceTroubleshooting
Test Before Relying on Real Events
Always use the Test button in Settings to verify each channel works before your first real subscriber.
Email Issues
- Not arriving? Check spam folder
- Auth failed? Use app password, not regular password
- Connection refused? Verify SMTP host and port
Telegram Issues
- Bot not responding? Subscriber must message your bot first
- Wrong chat ID? Re-fetch from getUpdates endpoint
- Token invalid? Regenerate from @BotFather
Nostr Issues
- DM not delivered? Verify subscriber's NIP-05 is resolvable
- Key error? Ensure nsec format is correct
- Relay issues? Default relays are used if none specified
Webhook Issues
- Timeout? Ensure your endpoint responds within 10 seconds
- Signature mismatch? Verify secret and HMAC algorithm
Best Practices
- Start with Email — Most universal, works for everyone
- Add Telegram — Great for real-time alerts
- Test everything — Before going live with subscribers
- Use per-plan overrides — Premium plans can offer more contact options
- Monitor logs — Check LNbits logs for notification errors
