Skip to main content
All posts
Developers5 min read

How to Send n8n Workflow Results to Your Phone

Add one HTTP Request node, map a useful result, and keep retries from creating duplicate PingRoom alerts.

Two PingRoom avatars arrange wooden workflow blocks while Pingo stands beside the single red result token and a face-down phone.

To send an n8n workflow result to your phone, add an HTTP Request node after the result you care about and POST a short JSON body to a PingRoom incoming webhook. Give the source event a stable idempotency key, and make sure only one summary item reaches the node when you want one alert.

This is a webhook recipe you configure, not a native n8n integration. n8n remains the source of the workflow result; PingRoom carries the selected update to a Room.

Prepare the Room and protect its URL

The destination Room's owner needs active PingRoom Pro to use incoming webhooks. Room members need PingRoom with notifications allowed if they want native phone alerts.

Follow the incoming webhook setup: open the Room, go to Settings → Connections → From another app, add a connection named n8n, leave Quick Ping on Custom message, and copy the generated URL. The incoming webhook feature overview explains when this Room connection is a better fit than sending the update manually.

The full URL contains the webhook secret. Do not put it in a public workflow template, screenshot, support message, or execution log.

If your n8n tier supports custom variables, create PINGROOM_WEBHOOK_URL and use this expression in the node's URL field:

{{ $vars.PINGROOM_WEBHOOK_URL }}

n8n documents variables for Cloud Pro and Enterprise, and self-hosted Business and Enterprise. If variables are unavailable, paste the URL only into a private workflow, restrict who can edit or export it, and rotate the webhook secret in PingRoom if the workflow is exposed.

Choose one result worth interrupting someone for

Do not attach a phone alert to every step. Place it after the workflow has reached a state a person can act on: a batch finished, records need review, a report is ready, or a run stopped with a useful error summary.

This illustrative inventory workflow produces one item:

{
  "run_id": "inventory-sync-2026-10-14-1800",
  "processed": 42,
  "failed": 2
}

run_id identifies this source event. Keep it unchanged when the HTTP node retries the same result. Use a new value when the source event or body changes.

Configure the HTTP Request node

Add an HTTP Request node after the summary step. n8n's current HTTP Request documentation uses these fields:

FieldValue
MethodPOST
URLthe protected PingRoom webhook URL or variable expression
AuthenticationNone — the secret is already in the URL
Send Headerson
HeaderAccept: application/json
HeaderIdempotency-Key: {{ $json.run_id }}
Send Bodyon
Body Content TypeJSON
Specify BodyUsing JSON

Use one expression for the JSON body so numbers remain numbers:

{{
  {
    action: null,
    title: "Inventory sync finished",
    message: $json.processed + " updated; " + $json.failed + " need review",
    data: {
      workflow: "Inventory sync",
      run_id: $json.run_id,
      processed: $json.processed,
      failed: $json.failed
    },
    correlation_id: $json.run_id
  }
}}

The title and message are the short human-facing update. data preserves bounded structured context for connected systems, while correlation_id lets you relate later Pings to the same run. Do not send credentials, full logs, customer records, or anything that should not appear in Room history or on a lock screen.

Make many workflow items become one alert

n8n normally processes each input item. If 40 items reach an HTTP Request node, it can send 40 requests. The official looping guide also explains that Execute Once uses only the first input item; it does not summarize the rest.

Choose the behavior deliberately:

Upstream outputWhat to doResult
One item already contains the final summaryTurn on Execute Once as a guardOne request using that item
Many records must contribute to one updateAdd an Aggregate or Code summary step first, then send its one itemOne request with complete totals
Every item genuinely needs its own PingLeave Execute Once off and give each event its own idempotency keyOne request per item

A PingRoom avatar gathers many gray tokens into one tray while another places one red result token beside a phone, with Pingo guarding a small brass gate.

AI-generated editorial illustration. The scene is an example, not a product screen. Pingo is PingRoom's fictional CMO and has no access to the workflow, webhook secret, or Room.

Pingo's illustrated job is to watch the stray duplicate token. The real control is less theatrical: send one summary item and keep the idempotency key stable.

Retry without creating a second Ping

In the HTTP Request node's Settings tab, turn on Retry On Fail. Three tries with a short wait is a reasonable starting example for a non-urgent workflow; adjust it to the source, PingRoom's response, and your own latency budget.

Use the same Idempotency-Key and the same body on every retry of one event. PingRoom can return the completed response for that key instead of creating another Ping. If the body changes, use a new key; reusing a key with different content returns an idempotency conflict.

Do not turn on Never Error for this recipe. A rejected request should remain visible to the workflow. For more control, route an exhausted request into an n8n error workflow rather than hiding the failure.

Test the small result before publishing the workflow

Execute the HTTP Request node once with harmless sample data. A successful custom Ping returns HTTP 200 with a response shaped like this:

{
  "success": true,
  "notification_id": "<notification-id>",
  "notification_title": "Inventory sync finished",
  "notification_message": "42 updated; 2 need review",
  "action": null,
  "action_state": null
}

Check four places before relying on the workflow:

  1. The HTTP node output shows success: true.
  2. Room history contains one Ping with the expected title and message.
  3. The intended phone shows the amount of information you are comfortable placing on a lock screen.
  4. Repeating the exact request with the same key does not create a second event.

A successful response confirms that PingRoom accepted and queued the Ping. Connectivity, operating-system notification policy, Focus, and Room mutes can still affect what a phone displays. The n8n execution remains the record of what the workflow actually did.

The complete PingRoom field limits, cooldowns, errors, and response contract live in the webhook reference.

Send the first controlled result

Use this pattern when n8n has already decided what happened and a person or small group needs the short result. Keep dashboards, full logs, durable records, and critical escalation in their existing systems.

Start with a harmless workflow and create or choose the destination Room. Send one result, inspect the Room history and phone, then publish the workflow only after the duplicate test passes.

PingRoom

Short-form communication.

View all posts