Notification Configuration
May 1, 2026 · View on GitHub
English | 中文
Notification Configuration
Open MedKit automatically checks for expired / expiring medicines daily and sends reminders through the following channels:
| Channel | Method | Best For |
|---|---|---|
| Telegram | Bot API | Personal use, instant push to phone |
| Discord | Webhook | Family group / community server |
| Lark (Feishu) | Custom Bot Webhook | Team collaboration |
| Email (SMTP) | SMTP server | Universal, works with any email provider |
| Email (Resend) | Resend HTTP API | Developer-friendly, no infrastructure needed |
All channels are configured in the Web UI under Settings → Notifications — no environment variables or config files needed.
General Notes
- Each channel has an independent toggle and can be enabled simultaneously
- Daily send time follows the business timezone (configured in Settings → General → Business Timezone)
- Reminders are only sent when expired or expiring medicines exist; otherwise skipped
- The "expiring soon" threshold is configurable in Settings → General → Expiring Threshold (default 30 days)
Telegram
Receive reminders via a Telegram Bot — messages push directly to your Telegram chat.
Prerequisites
- Find @BotFather on Telegram and send
/newbotto create a bot - Save the returned Bot Token (format:
123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11)
Setup Steps
- Open Settings → Notifications → Telegram
- Enter the Bot Token and click Verify Token
- After verification, open the bot's chat page (the link is displayed on screen) and send
/start - Return to the settings page and click Start Binding — wait for the system to detect your
/startmessage - Once bound, enable Daily Reminder and set the send time
Notes
- One Bot Token binds to one chat session (personal or group)
- To push to a group, add the bot to the group first, then send
/startin the group - Unbinding does not delete the Bot Token — you can manage it in BotFather
Discord
Push reminders to a specific channel via Discord Webhook.
Prerequisites
- Open Discord channel settings → Integrations → Webhooks
- Click New Webhook and copy the Webhook URL
Setup Steps
- Open Settings → Notifications → Discord
- Enter the Webhook URL and click Verify Webhook
- After verification, click Save & Enable
- Enable Daily Reminder and set the send time
Notes
- Reminders are sent as Embed cards
- One Webhook URL corresponds to one channel
Lark (Feishu)
Push reminders to a group chat via Lark Custom Bot Webhook.
Prerequisites
- Open a Lark group chat → Settings → Group Bots → Add Bot → Custom Bot
- Copy the Webhook URL
- (Optional) If signature verification is enabled, save the Signing Key
Setup Steps
- Open Settings → Notifications → Lark
- Enter the Webhook URL and Signing Key (optional)
- Click Verify Webhook (sends a test message to the group)
- After verification, click Save & Enable
- Enable Daily Reminder and set the send time
Notes
- Reminders are sent as Lark card messages
- If group signature verification is enabled but the key is missing or incorrect, delivery will fail
Send daily expiry reminders via email. Supports SMTP and Resend.
Option 1: SMTP
Works with Gmail, QQ Mail, Outlook, self-hosted mail servers, or any SMTP-capable provider.
Setup Steps
- Open Settings → Notifications → Email, select SMTP as the send method
- Fill in the following fields:
| Field | Description | Example |
|---|---|---|
| SMTP Host | Mail server address | smtp.gmail.com |
| Port | Common: 465 (SSL) or 587 (STARTTLS) | 587 |
| Use SSL/TLS | Auto-enabled for port 465, off for 587 | — |
| Username | Email account login | you@gmail.com |
| Password | Email password or app-specific password | — |
| From | Sender display name and address | OpenMedKit <you@gmail.com> |
| To | Recipient email for reminders | you@example.com |
- Click Test & Save — the system verifies SMTP connectivity
- On success, the channel is auto-enabled. Set the daily send time
Common SMTP Parameters
| Provider | Host | Port | Notes |
|---|---|---|---|
| Gmail | smtp.gmail.com | 587 | Requires App Password |
| QQ Mail | smtp.qq.com | 465 or 587 | Enable SMTP in QQ Mail settings and obtain an authorization code |
| Outlook / Hotmail | smtp.office365.com | 587 | Use account credentials |
| 163 Mail | smtp.163.com | 465 or 994 | Enable SMTP service and set a client authorization password |
| iCloud | smtp.mail.me.com | 587 | Requires App Password |
Option 2: Resend
Resend is a developer-friendly email API with a free tier of 3,000 emails/month — suitable for personal use.
Prerequisites
- Register at Resend Console
- Add and verify your domain (Resend does not allow sending from unverified domains)
- Create an API Key
Setup Steps
- Open Settings → Notifications → Email, select Resend as the send method
- Fill in the following fields:
| Field | Description | Example |
|---|---|---|
| Resend API Key | Created in Resend Console | re_xxxxxxxxx |
| From | Must be an address under a Resend-verified domain | MedKit <notify@yourdomain.com> |
| To | Recipient email for reminders | you@example.com |
- Click Test & Save — the system sends a test email to the recipient
- Receiving the test email confirms the setup is complete. Set the daily send time
Note: The "From" address must use a domain verified in Resend. You cannot use an unverified domain or a third-party email address (e.g. Gmail).
Proxy Configuration
If your deployment environment requires a proxy to reach external services (Telegram / Discord / Resend, etc.), configure it in .env:
HTTP_PROXY=http://192.168.31.1:7890
HTTPS_PROXY=http://192.168.31.1:7890
NO_PROXY=localhost,127.0.0.1,.local
Troubleshooting
| Issue | Possible Cause |
|---|---|
| No daily reminders received | Check that "Daily Reminder" is enabled; verify business timezone and send time are correct |
| Reminder delivery failed | Click "Send Test Notification" to see the specific error; Token / Webhook / password may have expired |
| SMTP connection timeout | Check Host and Port; your deployment may need proxy configuration |
| Resend returns 403 | The sender domain is not verified in Resend |
| Lark reports signature error | Group bot has signature verification enabled but the key is missing or incorrect |
| Telegram binding timeout | Make sure you sent /start to the bot within 30 seconds; verify the Bot Token is correct |