Android app to listen for incoming notifications and forward them to a configurable webhook API.
- Notification capture using
NotificationListenerService - Webhook forwarding with configurable URL, HTTP method, auth mode, custom headers, query params, and payload template
- Compatible with Telegram Bot API, Discord webhooks, and any custom API
- Queue system with Room (durable local storage)
- Retry system with WorkManager (network constraints + backoff)
- Background support
- Auto queue scheduling after reboot (
BOOT_COMPLETED)
- Open app -> Home.
- Tap Open Access Settings and enable Notification Access.
- Tap Open Battery Settings and set app to no restriction if available.
- On some OEM ROMs (MIUI/ColorOS/Funtouch), enable Auto Start for the app.
./gradlew assembleDebugGET— no request body, query params appended to URLPOST— with JSON bodyPUT— with JSON bodyPATCH— with JSON body
- None — no auth header
- Bearer — adds
Authorization: Bearer <token> - Custom — define any headers manually
Add per line as key=value:
chat_id=123456789
token=abc123
Use JSON with variable placeholders. Leave blank for default payload.
Available variables:
{deviceId}{packageName}{appName}{title}{text}{postedAt}{notificationKey}
- URL:
https://api.telegram.org/bot<token>/sendMessage - Method:
POST - Payload template:
{"chat_id":"123456789","text":"*{appName}*\n*{title}*\n{text}","parse_mode":"Markdown"}- URL:
https://discord.com/api/webhooks/.../... - Method:
POST - Payload template:
{"content":"**{appName}**\n**{title}**\n{text}"}- URL:
https://example.com/api/alert - Method:
GET - Query params:
device={deviceId}
msg={title}
This repository includes a Node.js webhook receiver in webhook/ for local testing.
cd webhook
npm install
cp .env.example .envnpm run startDefault endpoint:
POST /webhook
Health check:
GET /health
Environment config (webhook/.env):
| Key | Description |
|---|---|
HOST |
Server host |
PORT |
Server port |
WEBHOOK_PATH |
Webhook endpoint path |
WEBHOOK_BEARER_TOKEN |
Optional bearer token |
WEBHOOK_LOG_FILE |
Log file path |
JSON_LIMIT |
Max JSON body size |
This project is licensed under the MIT License. See LICENSE for details.



