What you will build
GeoHook sends a message to ntfy.sh when you enter or leave a location. The ntfy app receives it as a push notification, including on another device. You need GeoHook, the ntfy app on the receiving device, and internet access. The hosted service requires no server of your own.
1. Subscribe in ntfy
- Install the ntfy app and allow notifications.
- Add a subscription: server
https://ntfy.sh, topic a long, random name of your own. ReplaceYOUR_RANDOM_TOPICeverywhere with that name (letters, digits, hyphens or underscores, no spaces). - Subscribe to exactly the same server and topic on every receiving device. Topics do not need to be created separately in advance.
home and confidential content. A random name does not replace access control. An account alone does not protect a topic; reserve and protect it through the available ntfy account options if needed.2. Create the action in GeoHook
- Open a location or use + to create one with a geo area.
- Add an action under Entry Actions, e.g. Notify arrival.
- Set the target URL to
https://ntfy.sh/. - Open Advanced HTTP Settings, select POST, and turn Include base data off.
- Leave username and password empty for an unprotected topic. Under Additional JSON Fields, use Add Field to add the following properties individually as key/value pairs, without quotation marks.
topic→YOUR_RANDOM_TOPICtitle→GeoHook: Arrivalmessage→I have arrived home.
GeoHook automatically builds this JSON request. You do not need to enter a custom body or HTTP headers:
{
"topic": "YOUR_RANDOM_TOPIC",
"title": "GeoHook: Arrival",
"message": "I have arrived home."
}
topic property. Keep the URL as https://ntfy.sh/, without a topic path. Otherwise, the entire JSON text may appear as the notification. Disabling base data also prevents sending the location name and coordinates.3. Save and test
- Keep the action enabled and use no additional execution conditions for the first test.
- Save the action and location. Reopen the saved action and tap Trigger Webhook Now under Test.
- Check the HTTP response in the history and the message on the receiving device. A successful HTTP status confirms acceptance by ntfy, not that a push notification was displayed.
- Then use Simulate Entry in the location's debug section, followed by a real location change. Automatic triggering requires GeoHook's Always location permission.
For a departure notification, create a second action under Exit Actions. Keep the topic and change title and message, for example to “GeoHook: Departure” and “I have left home.” These are fixed texts; this guide does not use dynamic placeholders.
Protected topics and your own server
For a protected topic, enter your ntfy username and password in GeoHook's HTTP settings (HTTP Basic Auth). The account needs write access; the receiving device also needs to be signed in with read access. Keep credentials out of URLs and support chats.
For your own ntfy server, replace the server address on both sides with its reachable HTTPS address. Timely iOS notifications require additional server configuration; see ntfy: self-hosted iOS notifications.
If no message arrives
- HTTP 400 / JSON instead of a message: Check the URL, POST, and the spelling of
topic,title,message. - HTTP 401/403: Check credentials and topic write permissions.
- HTTP 429: Request limit reached; retry later.
- HTTP success but no push: Compare server and topic, check the ntfy subscription and notification permissions, and check Focus mode and mute settings.
- Manual test works but location changes do not: Check activation, location permission, conditions, and cooldown in GeoHook. See Help & FAQ.
Sources: ntfy JSON API · ntfy Authentication · ntfy Documentation.