Works with everything

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.

Example Workflow

Get a push notification when a new row is added to Google Sheets

Example Workflow

Monitor a website and get alerted when it goes down

HTTP Request Node Configuration

n8n — HTTP Request Node
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.

Example Scenario

Get push notifications for new Shopify orders

Example Scenario

Alert when someone fills out a Typeform

HTTP Module Configuration

Make — HTTP Module
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.

Example Zap

New email in Gmail → push notification

Example Zap

New Stripe payment → push alert

Webhooks by Zapier — POST Action

Zapier — Webhooks 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.

Example Automation

Motion sensor triggers → push notification to your phone

Example Automation

Temperature sensor exceeds threshold → instant alert

configuration.yaml — REST Command

yaml
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

yaml
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

bash
# Simplest possible push notification
curl -d "Hello World!" https://www.iotpush.com/api/push/my-topic

With Authentication

bash
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

bash
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

bash
wget --post-data="Backup complete!" \
  https://www.iotpush.com/api/push/my-topic

Works 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.

Webhooks and scripts

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.

How a webhook body becomes a notification: iotPush reads the 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.
*arr

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

  1. Save the script below where the app can run it (inside the container, if you use Docker) and make it executable
  2. Go to Settings → Connect → Add → Custom Script
  3. Set Path to the script and pick the events you want
  4. Press Test: you should get an iotPush notification
bash
#!/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

yaml
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: 30s

Note: 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

  1. Add an alert contact of type Webhook
  2. URL: https://www.iotpush.com/api/push/your-topic
  3. Send as JSON, with a body like the one below
  4. If your plan can't add an Authorization header, use a public topic

Healthchecks.io

  1. Go to Integrations → Webhook
  2. URL: https://www.iotpush.com/api/push/your-topic
  3. Method: POST, with a body like the one below
  4. Add header: Authorization: Bearer YOUR_API_KEY
Webhook request for monitoring services
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

bash
#!/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)

text
// 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
    )
end

Domoticz (dzVents)

text
-- 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.

1️⃣

Change URL

api.pushover.net
www.iotpush.com/api

2️⃣

Use Topic API Key

Your iotPush topic API key
goes in the token field

3️⃣

Topic Name

Your topic name goes in
the user field

Pushover → iotPush
# 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.json

n8n 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.

n8n-nodes-iotpush on npm

Ready to automate?

Create a free account. No card needed.