Webhooks to
Telegram,
Instantly.
POST any payload to your unique URL.
It lands in your Telegram chat within seconds.
No account. No dashboard. No config.
Type /start — get your URL in under 10 seconds.
Works with anything that can send a POST request
How It Works
Three steps. Under a minute.
No email. No OAuth. No SDK.
Start the bot
Open Telegram, message @PingHookBot, and type /start. You get a unique webhook URL immediately.
Paste the URL anywhere
Add it to GitHub Actions, Grafana, n8n, a cron job, or just curl it from your terminal. If it sends HTTP, it works.
Get notified instantly
Every POST becomes a Telegram message. JSON is pretty-printed in a code block. Plain text supports **bold**, _italic_, and ~~strikethrough~~. Labels tag the source.
Features
Everything you need. Nothing you don't.
Smart Labels
Append path segments to tag events by source or environment. /send/key/github/prod shows 📍 Source: github / prod in chat.
Smart Formatting
JSON is auto-indented in a code block. Plain text supports Markdown — **bold**, _italic_, and ~~strikethrough~~ render natively in Telegram.
Zero Config
No SDK. No OAuth. No account. Your webhook URL is your only credential — paste it, POST to it, done.
Webhook History
Use /history in the bot to see your last 10 webhooks — timestamp, labels, and payload preview, all in Telegram.
Replay Webhooks
Type /replay 3 to resend the 3rd most recent payload to your chat. Debug without re-triggering your pipeline.
Write-Only URLs
Your URL can only trigger notifications — it can never be used to read your data. History stays inside Telegram, where only you can access it.
Quick Start
Paste. Send. Done.
Replace YOUR_KEY with the URL from the bot.
# Send a JSON payload with a label curl -X POST https://pinghook.dev/v1/user/send/YOUR_KEY/github/prod \ -H "Content-Type: application/json" \ -d '{"event":"push","repo":"myapp","branch":"main","status":"success"}' # Response { "status": "ok", "message": "Notification sent." }
# Plain text — no Content-Type header needed curl -X POST https://pinghook.dev/v1/user/send/YOUR_KEY/server \ -d "Deployment finished. All checks passed." # Works from any shell, script, or cron job curl -X POST https://pinghook.dev/v1/user/send/YOUR_KEY \ -d "Backup completed at $(date)"
# Plain text with Markdown — renders natively in Telegram curl -X POST https://pinghook.dev/v1/user/send/YOUR_KEY/deploy \ -d "**Deploy succeeded** on main _Started by:_ asaf _Duration:_ 42s _Status:_ ~~failing~~ passing" # Supported: **bold** _italic_ ~~strikethrough~~ # JSON payloads are auto-formatted in a code block — no Markdown needed
# .github/workflows/notify.yml - name: Notify via PingHook if: always() run: | curl -s -X POST \ https://pinghook.dev/v1/user/send/${{ secrets.PINGHOOK_KEY }}/github/${{ github.ref_name }} \ -H "Content-Type: application/json" \ -d '{ "event": "workflow_${{ job.status }}", "repo": "${{ github.repository }}", "branch": "${{ github.ref_name }}", "run": "${{ github.run_number }}" }'
# pip install requests import requests PINGHOOK_URL = "https://pinghook.dev/v1/user/send/YOUR_KEY" requests.post( f"{PINGHOOK_URL}/my-script", json={"event": "job_done", "rows_processed": 42_819} ) # Or plain text requests.post(PINGHOOK_URL, data="ETL pipeline finished successfully")
FAQ
Common questions
Is my payload data stored?
Yes — PingHook now stores your last webhooks so you can view them with /history and replay them with /replay N. Your history is only accessible through your own Telegram chat — not via the webhook URL, not via any dashboard.
What's the rate limit?
Free tier: 5 requests per 60 seconds per webhook URL. Payloads over 100 KB are rejected with a 413. Larger limits are planned for a paid tier.
What payload formats are supported?
JSON (application/json) is auto-indented in a monospace code block. Plain text supports Markdown — **bold**, _italic_, and ~~strikethrough~~ all render natively in Telegram. Both formats support labels.
Can I use multiple labels?
Yes — chain as many path segments as you want: /send/key/github/prod/backend shows 📍 Source: github / prod / backend. Labels are lowercased automatically.
Can I self-host this?
Yes. PingHook is fully open source. Clone the repo, add your own .env, and run it with Uvicorn. The schema.sql file creates everything you need in any PostgreSQL database.
What if someone gets my webhook URL?
The URL is write-only — all it can do is send a notification to your Telegram chat. The rate limiter caps abuse at 5 pings per minute. To regenerate your key, just message the bot — feature coming soon.