<!-- BusyBot node reference — https://busybot.net/tools/pushover/ -->

> Node: Pushover (`pushover`) · Action (binary) · v1
> Category: Communication · Credentials: Pushover API (`pushoverApi`)
> Updated: 2026-08-16

# Pushover

> Send push notifications with optional image attachments via Pushover

## Overview

The Pushover tool sends push notifications to users and devices via the Pushover API (POST https://api.pushover.net/1/messages.json). Supports message priority levels (-2 lowest through 2 emergency), optional image attachments from upstream binary data, HTML formatting, supplementary URLs, custom sounds, device targeting, and timestamps. Emergency priority (2) requires retry and expire parameters. All requests use multipart/form-data. Authentication uses an application API token and a per-recipient user/group key.

**Category:** Communication  
**Tool Name:** `pushover`  
**Version:** 1

**Appearance:** Icon: `lucide-Bell` | Color: `#249DF1`

## Node Type

**Action (Binary)** — handles file/binary data operations

## Input / Output

| Direction | Port(s) |
|-----------|--------|
| Input | `Input` |
| Output | `Output`, `Error` |

## Credentials

This tool requires **Pushover API** credentials.
See the [Credentials Guide](https://busybot.net/credentials/pushover-api/) for setup instructions.

### Resources

| Resource | Value |
|----------|-------|
| Message | `message` |

### Operations

| Operation | Value | Description |
|-----------|-------|-------------|
| Message: Push | `push` | Send a push notification |

### Parameters

#### Message: Push

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| User Key | `string` | Yes | — | The user/group key (not email address) of the recipient, viewable on the Pushover dashboard (https://pushover.net/). Supports expressions. |
| Message | `string` | Yes | — | The notification message body. Supports expressions. |
| Priority | `options` | No | `-2` | Notification priority. -2 = silent, -1 = quiet, 0 = normal, 1 = high (bypasses quiet hours), 2 = emergency (requires user confirmation, retry, and expire). |
| | | | | Options: `-2` (lowest), `-1` (low), `0` (normal), `1` (high), `2` (emergency — also send Retry and Expire) |
| Retry (Seconds) | `number` | Yes | `30` | How often (in seconds) the Pushover servers will resend the notification. Minimum 30 seconds. Required for emergency priority. _(shown when Priority is `2`)_ |
| Expire (Seconds) | `number` | Yes | `30` | How many seconds the notification will continue to be retried for. Maximum 10800 (3 hours). Required for emergency priority. _(shown when Priority is `2`)_ |
| Additional Fields | `collection` | No | `{}` | Optional fields for enhanced notifications. |
| — Attachment (Binary Property) | `string` | No | — | Name of the input binary property containing an image file to attach to the notification. Leave empty for no attachment. Names are case-sensitive — see the upstream node's Binary Data panel for the exact names to use. |
| — Device | `string` | No | — | Target device name(s), comma-separated. Omit to send to all of the user's devices. Supports expressions. |
| — HTML Formatting | `boolean` | No | `false` | Whether to enable HTML formatting in the message body. |
| — Sound | `options` | No | — | Notification sound. Choose "Custom" and provide the sound name if your desired sound is not listed. |
| | | | | Options: `pushover` (the default Pushover sound), `bike`, `bugle`, `cashregister`, `classical`, `cosmic`, `falling`, `gamelan`, `incoming`, `intermission`, `magic`, `mechanical`, `pianobar`, `siren`, `spacealarm`, `tugboat`, `alien` (long), `climb` (long), `persistent` (long), `echo` (long), `updown` (long), `vibrate` (vibrate only), `none` (silent), `__custom` (use the Custom Sound Name field) |
| — Custom Sound Name | `string` | No | — | Custom sound name when "Custom" is selected for Sound. _(shown when Sound is `__custom`)_ |
| — Timestamp | `string` | No | — | Unix timestamp or ISO 8601 datetime for the message display time. If omitted, the API receipt time is used. Supports expressions. |
| — Title | `string` | No | — | Message title. Defaults to the application name in Pushover if omitted. Supports expressions. |
| — URL | `string` | No | — | A supplementary URL to show with the message. Supports expressions. |
| — URL Title | `string` | No | — | A title for the supplementary URL. If omitted, just the URL is shown. Supports expressions. |

#### All Operations

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Max Concurrency | `number` | No | `5` | Maximum number of items to process concurrently. Keep low to respect Pushover rate limits (10,000 messages/month). |

## Output Data

One output item per input item, on the `Output` port. The Pushover API response is merged onto the item JSON at the top level, so the incoming fields pass through unchanged and the response fields sit alongside them — reference them directly, for example `{{ $json.status }}`. Binary data on the input item is forwarded to the output item, including the property used as the attachment.

A successful send returns `status` set to `1`, plus the request ID Pushover assigns to the message. Anything the API rejects — an unknown user key, a message over the size limit, an attachment the service refuses — raises an error for that item: in **errorPort** mode the item leaves through the `Error` port carrying an `_error` object instead.

## Usage Examples

- Send a push notification when a workflow completes
- Send an alert with high priority when an error is detected
- Send an emergency notification with retry/expire for critical alerts
- Attach a screenshot image to a push notification
- Send a notification with a supplementary URL link

## Example Configuration

Send a plain notification at normal priority:

```json
{
  "type": "pushover",
  "parameters": {
    "resource": "message",
    "operation": "push",
    "userKey": "u1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o",
    "message": "Your server backup completed successfully",
    "priority": 0
  }
}
```

Raise a high-priority alert with a title and a siren sound:

```json
{
  "type": "pushover",
  "parameters": {
    "resource": "message",
    "operation": "push",
    "userKey": "u1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o",
    "message": "Database connection failed - immediate attention required",
    "priority": 1,
    "additionalFields": {
      "title": "Critical System Alert",
      "sound": "siren"
    }
  }
}
```

Escalate with emergency priority, repeating every minute for an hour until someone acknowledges it:

```json
{
  "type": "pushover",
  "parameters": {
    "resource": "message",
    "operation": "push",
    "userKey": "u1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o",
    "message": "Production payment service is down - immediate response required",
    "priority": 2,
    "retry": 60,
    "expire": 3600,
    "additionalFields": {
      "title": "EMERGENCY: Payment Service Down",
      "url": "https://monitoring.example.com/alerts/12345",
      "urlTitle": "View Alert Details"
    }
  }
}
```

Attach an image produced upstream and format the body as HTML, targeting two named devices:

```json
{
  "type": "pushover",
  "parameters": {
    "resource": "message",
    "operation": "push",
    "userKey": "u1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o",
    "message": "<b>Sales Report</b><br/>Revenue increased by 15% this month",
    "priority": 0,
    "additionalFields": {
      "title": "Monthly Sales Update",
      "html": true,
      "binaryPropertyName": "chart_image",
      "sound": "cashregister",
      "device": "iphone,android-tablet"
    }
  }
}
```

Log a silent notification built from the incoming item, stamped with the current time:

```json
{
  "type": "pushover",
  "parameters": {
    "resource": "message",
    "operation": "push",
    "userKey": "{{ $json.pushoverUserKey }}",
    "message": "Scheduled maintenance completed for {{ $json.hostname }}",
    "priority": -2,
    "additionalFields": {
      "title": "Maintenance Log",
      "timestamp": "{{ $datetime.unix }}"
    }
  }
}
```

### Error Handling

| Mode | Behavior |
|------|----------|
| **stop** | Halts workflow on first error |
| **continue** | Skips failed items, passes successful ones through |
| **errorPort** | Routes failed items to Error output port |

## Tips

Send push notifications (with optional image attachments) to users and devices via the Pushover API.

### Notes

- **Priority defaults to `-2`.** At that level Pushover delivers the message silently and generates no alert, which is rarely what you want for a notification. Set Priority to `0` for a normal push, and raise it only where the interruption is justified.
- **Emergency priority needs acknowledgement.** Priority `2` keeps re-alerting every Retry seconds until the recipient acknowledges it or Expire seconds elapse, so keep it for genuinely urgent traffic.
- **Expressions are resolved per item** in User Key, Message, Title, URL, URL Title, Device and Timestamp, so a single node can notify a different recipient for every item that reaches it.
- **The attachment is optional even when named.** If the binary property you name is not present on an item, that item is still sent — as a notification without an image.