← PushPig
Help & documentation
💡 What is PushPig?
PushPig is not a chat. Messages are sent as a one-way broadcast to all subscribers of a channel.
There is no reply feature, no direct messages and no conversation view.
PushPig is a push notification service: you create channels, other users
subscribe to them — and when you send a message, it lands in real time on all of the
subscribers' devices: Android, browser and via email.
Typical use cases:
- Server and monitoring alerts from your own scripts
- Deploy notifications from CI/CD pipelines
- Updates for a group (family, team, club)
- Forwarding your own smart home events
⚡ Quick start
1. Create a channel
After logging in, click „+ Kanal", enter a name and an optional description.
Public channels are visible to everyone and anyone can join them; private channels are by invitation only.
2. Get an API key
In the dashboard under Settings → API keys, generate a new key.
This key authenticates your application when sending via the REST API.
API keys are secret — don't embed them in public repositories or client apps.
3. Send your first message
curl -X POST https://pushpig.de/api/push/send \
-H "Authorization: Bearer pp_DEIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"channel": "mein-kanal",
"body": "Hallo von der API!"
}'
4. Subscribe & receive notifications
- Android app: open the channel → Subscribe → enable push notifications
- Browser: click the channel in the dashboard → bell icon → allow browser notifications
- Email: enable the email icon in the channel (requires a verified email address)
All endpoints, parameters, scopes, rate limits and response formats are documented in detail in the
“API reference” tab (above).
⚙ Advanced features
Templates
Recurring messages can be saved as a template — either personal (visible only to
you) or shared with everyone who can write to a channel. On the Send message page you can
pick a template and fill in all fields with a single click. Templates are managed via the
Templates button in the send form.
Bulk send with CSV import
For each channel you can start a bulk job in the channel detail view and upload a CSV file with recipients.
The username column is required; additional columns become placeholders like
{name} that you can use in the title and body:
username,name,prize
alice,Alice,100 EUR
bob,Bob,50 EUR
carol,Carol,200 EUR
Body template: Hallo {name}, du hast {prize} gewonnen! → each recipient receives the message
with their own values. Non-subscribers are skipped, bulk jobs are processed asynchronously in the background
and can be tracked in the UI with a progress bar + drilldown. Max. 5000 rows per job.
Quiet hours
Every user can set their own do-not-disturb time per channel. During this window,
push notifications are not delivered but held in a queue and delivered after the block ends.
The time zone used for evaluation comes from your profile (Settings → Time zone).
Anyone who really needs to send an urgent message can set "urgent": true in the API request — these
pushes bypass the quiet hours of all recipients.
Webhooks
Channel owners can set up webhooks that call an external URL on certain events.
Available events: push.sent, push.failed, channel.subscribed,
channel.unsubscribed, bulk.completed. Every request carries an
X-PushPig-Signature header (HMAC-SHA256 of the body with the webhook secret) so recipients can
verify its authenticity.
POST https://example.com/your-webhook
Content-Type: application/json
X-PushPig-Event: push.sent
X-PushPig-Delivery: 8a4f9b21c0d3...
X-PushPig-Signature: sha256=
{
"event": "push.sent",
"channel_id": 42,
"timestamp": "2026-05-15T20:00:00+00:00",
"data": {
"event_id": 1234,
"channel_slug": "deploys",
"title": "Deploy erfolgreich",
"body": "Version 2.4.1 ist live.",
"fcm_sent": 3,
"webpush_sent": 1,
"email_sent": 0
}
}
Verification on the recipient side (Bash):
expected=$(printf '%s' "$BODY" | openssl dgst -sha256 -hmac "$SECRET" | awk '{print $2}')
[[ "sha256=$expected" == "$SIGNATURE_HEADER" ]]
Invite links & QR codes
Channel creators can generate single-use invite links (valid for 7 days). The Android app
also shows the link as a QR code — whoever scans it automatically opens the PushPig app and joins the channel.
If the app isn't installed, the URL redirects to the web version or the Play Store listing.
iOS support (Safari 16.4+)
On iPhone and iPad, web push notifications only work if PushPig has first been added to the
home screen:
- In Safari, use the share icon → add To the home screen
- Launch the app from the home screen (it looks like a native app)
- Enable Browser notifications in the settings
Delivery status per event
In the channel feed, each event shows how many devices it was delivered to — broken down
by Android app (FCM), browser (Web Push) and email. Senders also get the same status directly in the
API response (fcm_sent, webpush_sent, email_sent, deferred).
❓ Frequently asked questions
Can I use PushPig as a chat?
No. PushPig is a one-way broadcast service. Messages go from the sender to all subscribers —
there is no way to reply or to send direct messages.
For chat there are better tools (Signal, Matrix, Slack etc.).
Which platforms does PushPig work on?
- Android app — push notifications via FCM
- Browser (Chrome, Firefox, Edge) — Web Push + real-time feed in the dashboard
- iPhone / iPad (Safari 16.4+) — Web Push, after PushPig has been added to the home screen
- Email — when email notifications are enabled per channel
- REST API — for sending from your own applications and scripts
What are quiet hours and how do they work?
Quiet hours are do-not-disturb times that each subscriber can set individually per channel.
Pushes that fall into this time window are held back and only delivered after the window ends.
Evaluation happens in your profile time zone. Anyone who really needs to send an urgent message can set the
urgent flag — such pushes are still delivered immediately.
Can I restrict API keys?
Yes. When creating an API key you can choose scopes
(push:send, channels:read) and additionally restrict it to specific channels.
That way a key can, for example, only write to a single deploy channel and nothing else.
How do webhooks work?
Channel owners can register external URLs that are called on events (e.g. push.sent,
channel.subscribed, bulk.completed). Every request contains an
X-PushPig-Signature header (HMAC-SHA256 of the body with the webhook secret) so you can
verify its authenticity. Failed deliveries are retried up to 5 times with exponential backoff.
How secure are my messages?
Transmission between client and server is always encrypted with HTTPS/TLS.
Web push messages are additionally end-to-end encrypted according to RFC 8291.
However, messages are stored in plain text in the database — there is
no end-to-end encryption at the database level.
PushPig is therefore not suitable for highly sensitive content.
How long are messages stored?
Notification events are automatically deleted after 90 days.
What's the difference between public and private channels?
Public channels are visible to all logged-in users and can be subscribed to
freely.
Private channels don't appear in the public list and are only accessible via
an invite link or a direct invitation by username/email.
What happens if I delete my account?
All of your data (channels, subscriptions, API keys, FCM tokens, passkeys) is irrevocably deleted.
Channels you created are removed as well, including all events contained in them.
Where do I report abuse or bugs?
Help & API ·
Pricing ·
Contact ·
Imprint ·
Privacy