New:Introducing Socket Scanning for VS Code Marketplace Extensions.Learn more →
Get Started

node-red-contrib-simplepush

Package Overview
Dependencies
Maintainers
1
Versions
15
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

node-red-contrib-simplepush

Simplepush tasks, notifications and submissions for Node-RED

latest
Source
npmnpm
Version
3.0.0
Version published
Weekly downloads
72
-41.46%
Maintainers
1
Weekly downloads
 
Created
Source

node-red-contrib-simplepush

Simplepush nodes for Node-RED.

Send tasks and notifications to Android and iOS, optionally end-to-end encrypted, and get the answers back into your flow: button taps, text, choices, slider values, photos, voice recordings, files and locations. Receive what people send from the app on their own.

Install

Run the following command in your Node-RED user directory - typically ~/.node-red

npm install node-red-contrib-simplepush

npm

Requires Node.js 20 or newer and Node-RED 3 or newer.

Nodes

NodeWhat it does
simplepush taskSends a task and outputs every answer.
simplepush notificationSends a push with at most one answer, an image or audio clip, or a link.
simplepush inOutputs every submission people send from the app.
Simplepush accountConfig node with the credentials, shared by all nodes. One connection per account.

Account

  • Personal: API token from the app (Settings > API Token). Optional Personal Password, which encrypts sends to your own devices and decrypts your submissions. Optional topic passwords: a send to a listed topic is encrypted with its password.
  • Organization: integration token, created by an organization admin with sp integration create. Encryption uses the organization's keys, which come with the token.

Topics are created and subscribed to in the app. Leave the topic blank to send to your own devices. An organization send needs exactly one of topic, member or broadcast.

simplepush task

Inputs are set in the node or passed as msg.inputs, in the shape of the TypeScript SDK:

msg.inputs = [
    { type: "actions", actions: ["Approve", "Deny"] },
    { type: "text", description: "Comment", required: false },
    { type: "choice", options: ["Red", "Green", "Blue"], multi: true, maxSelections: 2 },
    { type: "slider", min: 0, max: 14, step: 0.1, unit: "pH" },
    { type: "photo" }, { type: "voiceRecording" }, { type: "file" }, { type: "location" }
];

required defaults to true. Each type at most once.

Message properties, used when the node's field is blank:

Property
msg.payloadThe message. Objects are sent as JSON.
msg.topic, msg.member, msg.broadcastThe target. member and broadcast are for organizations.
msg.title, msg.tagTitle and a label to group or filter by.
msg.priority1 (silent) to 5 (critical, sounds on a muted phone). Default 3.
msg.expiresInSeconds until an unanswered task expires.
msg.sharedtrue: one task for all recipients, the first answer completes it. Default: one task per recipient.
msg.markdowntrue renders the message as Markdown.
msg.linksArray of URLs shown with the task.
msg.attachmentsArray of files: URLs to download, or {filename, data, contentType} with data a Buffer.
msg.autoCommittrue (default) saves each input as it is filled, false shows a Submit button.

A boolean on the message wins over the node's checkbox.

Outputs: one message per answer. With actions in the node there is one output per action, otherwise the first output. After those, one output each for tasks that ended without an answer: declined, canceled (withdrawn by the sender), expired. A task that everyone deleted from their list ends without a message.

Property
msg.payloadThe answer: action, text, choice, choices, slider, location, and photo, voice, file as {data, filename, contentType, size} with data a Buffer. On the outputs for tasks without an answer, the status.
msg.statuscompleted, declined, canceled or expired.
msg.taskId, msg.groupIdThe task, and the group of tasks when every recipient got their own.
msg.recipientWho answered: publicId, name.
msg.completedAtWhen the task was completed.
msg.declinesOn a declined task: who declined, in order, as {recipient, reason, note}. One entry per task sent to one recipient; everyone on a shared task.
msg.noteThe note left when declining, when one person declined.

simplepush notification

A push that does not stay in the app's task list. One answer at most: action buttons or a choice (up to 3 each), or text. Set in the node or as msg.input:

msg.input = { type: "actions", actions: ["Open", "Ignore"] };

msg.image or msg.audio is a URL or {filename, data, contentType}. msg.link adds an Open link button (any scheme, so an app link opens that app); not together with an answer.

A notification does not expire. Answers leave through the first output (msg.status completed). With a timeout, recipients who did not answer in time leave through the second output with msg.status pending. Without one the node waits until everyone answered or the flow is redeployed.

simplepush in

One message per submission: msg.payload has text, location, and photo, file, audio with data a Buffer. msg.sender, msg.submissionId, msg.submittedAt.

Upgrading from 1.x

Flows from 1.x keep working once the node has an account:

  • The old key becomes the topic. The app migration imports every old key as a topic of the same name.
  • event becomes tag, the timeout becomes Expires in, the actions become an actions input with one output per action.
  • salt is gone. Set a password for the topic in the app and add the topic and password to the account. A password saved on a 1.x node keeps working until then.
  • msg.payload of an answer is an object: the tapped action is msg.payload.action.
  • Unanswered tasks leave through their own outputs (declined, canceled, expired) after the action outputs instead of raising an error.
  • msg.key and msg.password raise an error, use msg.topic and the account. msg.salt is ignored.

See simplepu.sh for more details.

Keywords

node-red

FAQs

Package last updated on 30 Sep 2026

Related posts