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.

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:
| Field | Value |
|---|---|
| Method | POST |
| URL | the protected PingRoom webhook URL or variable expression |
| Authentication | None — the secret is already in the URL |
| Send Headers | on |
| Header | Accept: application/json |
| Header | Idempotency-Key: {{ $json.run_id }} |
| Send Body | on |
| Body Content Type | JSON |
| Specify Body | Using 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 output | What to do | Result |
|---|---|---|
| One item already contains the final summary | Turn on Execute Once as a guard | One request using that item |
| Many records must contribute to one update | Add an Aggregate or Code summary step first, then send its one item | One request with complete totals |
| Every item genuinely needs its own Ping | Leave Execute Once off and give each event its own idempotency key | One request per item |

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:
- The HTTP node output shows
success: true. - Room history contains one Ping with the expected title and message.
- The intended phone shows the amount of information you are comfortable placing on a lock screen.
- 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.


