Contents
n8n integration

n8n push notifications

PushPiper sends push notifications from any n8n workflow, free for 10,000 messages a month. You use n8n's built-in HTTP Request node, with your keys kept in an encrypted Custom Auth credential.

Before you start

Grab two keys from PushPiper. Sign in at pushpiper.com/app (free, no credit card), create an app called n8n for its API token (APP_TOKEN), and copy your user key (USER_KEY) from the dashboard.

Store your keys in a credential

  1. In n8n, create a new credential and pick Custom Auth.
  2. Paste this into the JSON field, fill in your keys and save it as PushPiper.
Custom Auth
{
  "body": {
    "token": "APP_TOKEN",
    "user": "USER_KEY"
  }
}

n8n encrypts credentials and adds this body to every request that uses one, so your keys never show up in the workflow or its exports.

Add the HTTP Request node

  1. Method: POST
  2. URL: https://api.pushpiper.com/1/messages.json
  3. Authentication: Generic Credential Type. Generic Auth Type: Custom Auth, then pick your PushPiper credential.
  4. Switch on Send Body. Leave Body Content Type on JSON and Specify Body on Using Fields Below.
  5. Add the body parameters title and message, plus any extras from the table below. Expressions work, like {{ $json.message }}.

Or skip the clicking: copy this node, paste it onto your canvas and pick the credential.

HTTP Request node
{
  "nodes": [
    {
      "name": "Send to PushPiper",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [0, 0],
      "parameters": {
        "method": "POST",
        "url": "https://api.pushpiper.com/1/messages.json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpCustomAuth",
        "sendBody": true,
        "bodyParameters": {
          "parameters": [
            { "name": "title", "value": "n8n" },
            { "name": "message", "value": "={{ $json.message }}" },
            { "name": "priority", "value": "0" }
          ]
        },
        "options": {}
      }
    }
  ],
  "connections": {}
}

We ran this node on n8n 2.42 against a test server. The request arrives as JSON with title, message, priority, token and user, quotes and line breaks intact. A successful send returns {"status":1,"request":"..."}.

Fields you can send

FieldExampleWhat it does
message{{ $json.message }}The text, up to 1,024 characters. Required.
titleNew orderShown above the message. Defaults to the app name.
priority1-2 to 2. 1 bypasses quiet hours, 2 repeats until acknowledged and needs retry and expire.
soundcashregisterOne of the 23 built-in sounds, none included.
url, url_title{{ $json.link }}A link under the message.
html1Basic HTML like <b> in the message.

Everything else is in the API reference.

Limits and caveats

  • The Pushover node is out. It always calls api.pushover.net.
  • Errors stop the workflow. PushPiper answers HTTP 400 with an errors list for bad input and 429 when you're over quota. The node fails on both unless you change its error handling.
  • One message per item. The node runs once for every item it receives, so 500 items means 500 notifications, all counted against your 10,000. Aggregate first if you want one summary.

Sources

Questions and answers

Can I use n8n's Pushover node with PushPiper?

No. The Pushover node always sends to api.pushover.net and its credential only stores an API key. Use the HTTP Request node from this page; PushPiper takes the same fields.

Do I have to use a credential?

No, you can add token and user as body parameters instead. A Custom Auth credential keeps them encrypted and out of shared or exported workflows.

Can one workflow notify several people?

Yes. Set user in the credential to a comma-separated list of up to 50 user keys, or to a group key.

Does it work on n8n Cloud?

Yes. The HTTP Request node and Custom Auth credentials are part of core n8n, on Cloud and self-hosted.