Integrations
If it can make an HTTP request, it works with iotpush. Connect your favorite automation platforms in minutes.
n8n
Open-source workflow automation
Use the HTTP Request node in n8n to send push notifications from any workflow.
Get a push notification when a new row is added to Google Sheets
Monitor a website and get alerted when it goes down
HTTP Request Node Configuration
Method: POST
URL: https://www.iotpush.com/api/push/my-topic
Headers:
Authorization: Bearer {api_key}
Content-Type: application/json
Body (JSON):
{
"title": "New Row Added",
"message": "{{$json.column_name}} was added to the sheet",
"priority": "normal"
}💡 Tip: Use n8n expressions like {{$json.field}} to inject dynamic data from previous nodes.
Make (Integromat)
Visual automation platform
Add an HTTP > Make a request module to any Make scenario to send iotpush notifications.
Get push notifications for new Shopify orders
Alert when someone fills out a Typeform
HTTP Module Configuration
Module: HTTP > Make a request
URL: https://www.iotpush.com/api/push/my-topic
Method: POST
Headers:
Authorization: Bearer {api_key}
Content-Type: application/json
Request content:
{
"title": "New Shopify Order",
"message": "Order #{{order_number}} — {{total_price}}",
"priority": "high"
}💡 Tip: Map fields from previous modules using Make's variable picker to create dynamic notifications.
Zapier
Connect your apps and automate workflows
Use the Webhooks by Zapier action to send a POST request to iotpush from any Zap.
New email in Gmail → push notification
New Stripe payment → push alert
Webhooks by Zapier — POST Action
Action: Webhooks by Zapier > POST
URL: https://www.iotpush.com/api/push/my-topic
Headers:
Authorization: Bearer {api_key}
Content-Type: application/json
Data (JSON):
{
"title": "New Payment",
"message": "Received {{amount}} from {{customer_email}}",
"priority": "normal"
}
Payload Type: json💡 Tip: Use Zapier's field mapping to insert data from any trigger (Gmail, Stripe, Airtable, etc.).
Home Assistant
Open-source home automation
Define a REST command in your Home Assistant configuration, then call it from any automation. Perfect for motion sensors, door triggers, temperature alerts, and more.
Motion sensor triggers → push notification to your phone
Temperature sensor exceeds threshold → instant alert
configuration.yaml — REST Command
rest_command:
iotpush_notify:
url: "https://www.iotpush.com/api/push/my-topic"
method: POST
headers:
Authorization: "Bearer YOUR_API_KEY"
Content-Type: "application/json"
payload: >
{"title": "{{ title }}", "message": "{{ message }}", "priority": "{{ priority }}"}Automation Example — Motion Sensor
automation:
- alias: "Motion Alert — Front Door"
trigger:
- platform: state
entity_id: binary_sensor.front_door_motion
to: "on"
action:
- service: rest_command.iotpush_notify
data:
title: "Motion Detected"
message: "Movement at the front door at {{ now().strftime('%H:%M') }}"
priority: "high"💡 Tip: Use Home Assistant templates to include sensor values, timestamps, and device states in your notifications.
cURL / Any Platform
Works with anything that can make HTTP requests
iotpush uses a simple HTTP API. If your tool, script, or platform can send an HTTP POST request, it can send push notifications.
Quick Test
# Simplest possible push notification
curl -d "Hello World!" https://www.iotpush.com/api/push/my-topicWith Authentication
curl -X POST https://www.iotpush.com/api/push/my-topic \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Server Alert",
"message": "CPU usage at 95%",
"priority": "high"
}'Using Headers
curl -X POST https://www.iotpush.com/api/push/my-topic \
-H "Title: Disk Space Warning" \
-H "Priority: urgent" \
-H "Tags: server,disk" \
-d "Only 5% disk space remaining on /dev/sda1"wget Alternative
wget --post-data="Backup complete!" \
https://www.iotpush.com/api/push/my-topicWorks with: Shell scripts, cron jobs, CI/CD pipelines (GitHub Actions, GitLab CI, Jenkins), monitoring tools (Prometheus Alertmanager, Grafana), IoT devices (ESP32, Raspberry Pi), and literally anything else with HTTP.
Apps with their own alert settings
Most apps with built-in Pushover support send only to Pushover's own server and have no setting to change it, so iotPush can't stand in for Pushover inside them. Each app below has a webhook or script option that reaches iotPush directly.
message, title and priority fields of a JSON body. If the body has no message field, as with an app's fixed webhook payload, the whole JSON arrives as the notification text. Where an app lets you write the body or run a script, use that for a readable message.Sonarr / Radarr / Lidarr
Media automation for TV, movies, and music
Their Pushover connection always sends to Pushover. Use a Custom Script connection instead: the app runs your script on each event, and the script sends one readable push.
Setup Steps
- Save the script below where the app can run it (inside the container, if you use Docker) and make it executable
- Go to Settings → Connect → Add → Custom Script
- Set Path to the script and pick the events you want
- Press Test: you should get an iotPush notification
#!/bin/sh
# iotpush-arr.sh: Sonarr/Radarr pass event details as environment variables
TOPIC="media-alerts"
API_KEY="your-topic-api-key"
EVENT="${sonarr_eventtype:-$radarr_eventtype}"
NAME="${sonarr_series_title:-$radarr_movie_title}"
curl -s -X POST "https://www.iotpush.com/api/push/$TOPIC" \
-H "Authorization: Bearer $API_KEY" \
-H "Title: $EVENT" \
-d "${NAME:-Test from your media server}"💡 Lidarr and Readarr pass the same kind of variables with their own prefix.
Prometheus Alertmanager
Metrics alerting for Kubernetes and beyond
Alertmanager's Pushover receiver always sends to Pushover, so use a webhook receiver pointed at your topic.
alertmanager.yml
receivers:
- name: 'iotpush'
webhook_configs:
- url: 'https://www.iotpush.com/api/push/prod-alerts'
send_resolved: true
http_config:
authorization:
type: Bearer
credentials: 'your-topic-api-key'
route:
receiver: 'iotpush'
group_by: ['alertname']
group_wait: 30sNote: Alertmanager sends its own JSON payload, which has no message field, so the alert arrives as raw JSON. For a one-line summary, route it through a small relay (an n8n workflow, for example) that builds {"title": ..., "message": ...} and posts that to iotPush.
UptimeRobot / Healthchecks.io
Uptime and cron job monitoring
Both have a Webhook integration where you write the request body yourself. Fill it in with your monitor's variables, using the placeholder names your service documents.
UptimeRobot
- Add an alert contact of type Webhook
- URL:
https://www.iotpush.com/api/push/your-topic - Send as JSON, with a body like the one below
- If your plan can't add an
Authorizationheader, use a public topic
Healthchecks.io
- Go to Integrations → Webhook
- URL:
https://www.iotpush.com/api/push/your-topic - Method: POST, with a body like the one below
- Add header:
Authorization: Bearer YOUR_API_KEY
POST https://www.iotpush.com/api/push/uptime-alerts
Headers:
Authorization: Bearer your-topic-api-key
Content-Type: application/json
Body (swap in your service's placeholders):
{
"title": "<monitor name> is <status>",
"message": "<monitor URL> - <details>",
"priority": "high"
}SABnzbd / qBittorrent / Transmission
Download managers and torrent clients
Download clients can run a script when something finishes. Point that hook at the script below and pass it the name of the download.
Notification script
#!/bin/bash
# save as: iotpush-notify.sh, then make it executable
# Usage: iotpush-notify.sh "<what finished>"
TOPIC="downloads"
API_KEY="your-topic-api-key"
curl -s -X POST "https://www.iotpush.com/api/push/$TOPIC" \
-H "Authorization: Bearer $API_KEY" \
-H "Title: Download complete" \
-d "$1 has finished downloading"
💡 Pass the download name as the first argument. In qBittorrent, for example, use "Run external program on torrent finished" with /path/iotpush-notify.sh "%N". Check your client's docs for how it passes arguments.
openHAB / Domoticz
Open-source home automation platforms
openHAB (rule)
// rules/notify.rules
rule "Motion Alert"
when
Item MotionSensor changed to ON
then
sendHttpPostRequest(
"https://www.iotpush.com/api/push/home-alerts",
"application/json",
'{"title":"Motion","message":"Motion detected!","priority":"high"}',
newHashMap("Authorization" -> "Bearer YOUR_API_KEY"),
5000
)
endDomoticz (dzVents)
-- Setup → More Options → Events → create a dzVents script
return {
on = { devices = { 'Motion Sensor' } },
execute = function(domoticz, device)
if device.state == 'On' then
domoticz.openURL({
url = 'https://www.iotpush.com/api/push/domoticz',
method = 'POST',
headers = { ['Authorization'] = 'Bearer YOUR_API_KEY' },
postData = {
title = 'Motion Alert',
message = device.name .. ' triggered',
priority = 'high'
}
})
end
end
}🔄 Moving a script off Pushover?
iotPush accepts Pushover's message format at /api/1/messages.json. Any script or library where you set the API URL yourself can switch by changing the URL and credentials.
Change URL
api.pushover.netwww.iotpush.com/api
Use Topic API Key
Your iotPush topic API key
goes in the token field
Topic Name
Your topic name goes in
the user field
# Before (Pushover)
curl -s --form-string "token=PUSHOVER_APP_TOKEN" \
--form-string "user=PUSHOVER_USER_KEY" \
--form-string "message=Hello" \
https://api.pushover.net/1/messages.json
# After (iotPush): same request, new URL and credentials
curl -s --form-string "token=YOUR_IOTPUSH_TOPIC_API_KEY" \
--form-string "user=your-topic-name" \
--form-string "message=Hello" \
https://www.iotpush.com/api/1/messages.jsonn8n community node
On self-hosted n8n you can skip the HTTP Request setup: install n8n-nodes-iotpush from Settings → Community Nodes. It adds an iotPush node and an iotPush Trigger node.
Ready to automate?
Create a free account. No card needed.