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:

ChannelMethodBest For
TelegramBot APIPersonal use, instant push to phone
DiscordWebhookFamily group / community server
Lark (Feishu)Custom Bot WebhookTeam collaboration
Email (SMTP)SMTP serverUniversal, works with any email provider
Email (Resend)Resend HTTP APIDeveloper-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

  1. Find @BotFather on Telegram and send /newbot to create a bot
  2. Save the returned Bot Token (format: 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11)

Setup Steps

  1. Open Settings → Notifications → Telegram
  2. Enter the Bot Token and click Verify Token
  3. After verification, open the bot's chat page (the link is displayed on screen) and send /start
  4. Return to the settings page and click Start Binding — wait for the system to detect your /start message
  5. 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 /start in 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

  1. Open Discord channel settings → Integrations → Webhooks
  2. Click New Webhook and copy the Webhook URL

Setup Steps

  1. Open Settings → Notifications → Discord
  2. Enter the Webhook URL and click Verify Webhook
  3. After verification, click Save & Enable
  4. 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

  1. Open a Lark group chat → Settings → Group Bots → Add Bot → Custom Bot
  2. Copy the Webhook URL
  3. (Optional) If signature verification is enabled, save the Signing Key

Setup Steps

  1. Open Settings → Notifications → Lark
  2. Enter the Webhook URL and Signing Key (optional)
  3. Click Verify Webhook (sends a test message to the group)
  4. After verification, click Save & Enable
  5. 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

Email

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

  1. Open Settings → Notifications → Email, select SMTP as the send method
  2. Fill in the following fields:
FieldDescriptionExample
SMTP HostMail server addresssmtp.gmail.com
PortCommon: 465 (SSL) or 587 (STARTTLS)587
Use SSL/TLSAuto-enabled for port 465, off for 587
UsernameEmail account loginyou@gmail.com
PasswordEmail password or app-specific password
FromSender display name and addressOpenMedKit <you@gmail.com>
ToRecipient email for remindersyou@example.com
  1. Click Test & Save — the system verifies SMTP connectivity
  2. On success, the channel is auto-enabled. Set the daily send time

Common SMTP Parameters

ProviderHostPortNotes
Gmailsmtp.gmail.com587Requires App Password
QQ Mailsmtp.qq.com465 or 587Enable SMTP in QQ Mail settings and obtain an authorization code
Outlook / Hotmailsmtp.office365.com587Use account credentials
163 Mailsmtp.163.com465 or 994Enable SMTP service and set a client authorization password
iCloudsmtp.mail.me.com587Requires 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

  1. Register at Resend Console
  2. Add and verify your domain (Resend does not allow sending from unverified domains)
  3. Create an API Key

Setup Steps

  1. Open Settings → Notifications → Email, select Resend as the send method
  2. Fill in the following fields:
FieldDescriptionExample
Resend API KeyCreated in Resend Consolere_xxxxxxxxx
FromMust be an address under a Resend-verified domainMedKit <notify@yourdomain.com>
ToRecipient email for remindersyou@example.com
  1. Click Test & Save — the system sends a test email to the recipient
  2. 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

IssuePossible Cause
No daily reminders receivedCheck that "Daily Reminder" is enabled; verify business timezone and send time are correct
Reminder delivery failedClick "Send Test Notification" to see the specific error; Token / Webhook / password may have expired
SMTP connection timeoutCheck Host and Port; your deployment may need proxy configuration
Resend returns 403The sender domain is not verified in Resend
Lark reports signature errorGroup bot has signature verification enabled but the key is missing or incorrect
Telegram binding timeoutMake sure you sent /start to the bot within 30 seconds; verify the Bot Token is correct