This guide builds the classic first automation: an external system POSTs to a URL, the workflow inspects the payload, and Slack gets a message that matches what happened. You will touch a trigger, a flow-control node, and an action node - the three shapes almost every workflow is made of. The node reference documents all of them.
Create the workflow and add a Webhook trigger
Create a new workflow and drag a Webhook node onto the canvas as its trigger. Open the node: Pipory shows the workflow's unique URL and a per-workflow secret, both with copy buttons. Keep this dialog open - you will need both values to test.
Callers authenticate with the secret either in an x-webhook-secret header or a ?secret= query parameter. A wrong or missing secret gets a 401 and no run is created.
Whatever JSON body the caller POSTs becomes available in every downstream node as {{webhook.your_field}}.
Branch on the payload
Add a Branch node after the trigger. Give it a condition such as {{webhook.status}} equals paid. The node exposes two outputs, true and false, and the run only walks the side the condition selects - nodes on the untaken side report a skipped state on the canvas rather than running.
Post to Slack
Add a Slack node to each branch output. The Slack node takes an incoming webhook URL from your Slack workspace directly in its config, plus a message template:
Payment received: {{webhook.customer}} paid {{webhook.amount}}Put a success message on the true side and a fallback like an alert on the false side.
Fire it and watch it run
Send a test request with the values from the trigger dialog:
curl -X POST 'https://your-pipory-host/api/webhooks/wf/WORKFLOW_ID' \
-H 'x-webhook-secret: YOUR_SECRET' \
-H 'Content-Type: application/json' \
-d '{"status": "paid", "customer": "Ada", "amount": "$49"}'Switch to the canvas while the request is in flight: the webhook node lights up, the branch resolves, one Slack node runs and the other reports skipped - all live. Open the execution afterward to see each node's exact input, output, and duration.
Where to go next
- Flip the payload's
statusto anything else and confirm the false branch fires instead. - Add a trigger filter so runs only spawn for the events you care about.
- Follow the synchronous-response guide to send a reply back to the caller instead of just returning 200.
- Put the run on a clock instead of a webhook with the daily report guide.
Let your automations run the busywork
The canvas, the execution engine, and every node - no per-execution meter, free while in early access.
Frequently asked questions
Written by
Pipory TeamProduct + engineering
Notes from the team building Pipory - workflow design, automation economics, and putting AI to work inside automations.
View all articles by Pipory