Frequently Asked Questions
General
What is NotifyHero?
NotifyHero is a push notification service based on ntfy. It lets you send push notifications to your phone or desktop using simple HTTP requests. No signup required - just pick a topic name and start sending.
Is it free?
The public NotifyHero server is free to use for personal and small-scale use. For larger deployments, you can self-host.
Is it open source?
Yes! NotifyHero is based on ntfy, which is fully open source under the Apache 2.0 and GPLv2 licenses.
Are messages encrypted?
Messages are encrypted in transit (HTTPS/TLS). For end-to-end encryption, you can encrypt your message content before sending and decrypt on the client side.
How long are messages stored?
Messages are cached on the server for 12 hours by default. After that, they're automatically deleted. Attachments may have shorter retention.
Topics
What is a topic?
A topic is like a channel or mailbox. Anyone with the topic name can publish to it or subscribe to it. Think of it as a password - pick something hard to guess.
Are topics private?
Topics are public by default - anyone who knows the name can access them. Use hard-to-guess topic names or set up authentication on a self-hosted server for private topics.
How do I create a topic?
Topics are created automatically when you first publish or subscribe to them. No explicit creation needed.
Can I reserve a topic name?
On the public server, topic names are first-come-first-served. For guaranteed access, self-host with authentication.
Messages
What's the maximum message size?
Messages can be up to 4KB by default. For larger content, use attachments.
Can I send images/files?
Yes! You can attach files up to 15MB (default limit). Either attach from a URL or upload directly.
Can I schedule messages?
Yes! Use the Delay header to schedule message delivery up to 3 days in advance.
Why aren't my messages arriving?
Common causes:
- Wrong topic name (case-sensitive)
- Wrong server URL
- App not subscribed to the topic
- Notification permissions not granted
- Battery optimization blocking the app
Mobile Apps
Which platforms are supported?
- Android (Google Play, F-Droid, APK)
- iOS (App Store)
- Web PWA (all platforms)
Why are notifications delayed?
On Android, notifications may be delayed when the phone is in doze mode unless you enable "Instant delivery" in the app settings.
How do I connect to NotifyHero instead of ntfy.sh?
In app settings, change the default server to https://app.notifyhero.com.
Does the app drain battery?
The app is optimized for low battery usage. Instant delivery uses slightly more battery due to the persistent connection.
Self-Hosting
Why self-host?
- Full control over your data
- Private topics with authentication
- Custom rate limits
- No dependency on external services
- Custom domain
What are the requirements?
Minimal: A Linux server with ~100MB RAM. Works on Raspberry Pi!
Can I use it with Docker?
Yes! Docker is the recommended way to run a self-hosted server.
docker run -p 80:80 binwiederhier/ntfy serve
How do I set up authentication?
See the Configuration guide for setting up user authentication.
Integration
How do I use it with my scripts?
Use curl or any HTTP client:
curl -d "Build complete" https://app.notifyhero.com/mytopic
Does it work with [tool name]?
If the tool can make HTTP requests, it works with NotifyHero. See the Examples and Integrations pages.
Is there an API?
Yes! See the API documentation for full details.
Can I send from my CI/CD?
Absolutely! Add a curl command to your pipeline:
curl -d "Deploy finished" https://app.notifyhero.com/deploys
Troubleshooting
"Topic not found" error
This usually means:
- Typo in the topic name
- Wrong server URL
- Authentication required but not provided
Notifications not showing
- Check browser/app notification permissions
- Check Do Not Disturb settings
- Verify the topic name matches
- Try sending a test message
Rate limited
You've exceeded the request limit. Wait a few minutes and try again, or contact the server admin for higher limits.
Connection keeps dropping
- Check your internet connection
- Check if the server is up
- Try using WebSocket instead of SSE