> ## Documentation Index
> Fetch the complete documentation index at: https://www.vollna.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# n8n Integration

> Send Vollna job alerts into n8n workflows with a Webhook node

Connect Vollna to [n8n](https://n8n.io) — cloud or self-hosted — using Vollna's [Webhook Notifications](/docs/notifications/webhooks). Every new batch of matching jobs triggers an n8n workflow.

<Note>
  Webhook notifications are available with [Agency plan](https://www.vollna.com/pricing) or as paid add-on.
</Note>

## Step 1: Create a Webhook node in n8n

1. Create a new **Workflow** and add a **Webhook** node as the trigger.
2. Set **HTTP Method** to `POST`.
3. Copy the **Test URL** — you'll switch to the **Production URL** after testing.

<Warning>
  Self-hosted n8n must be reachable from the public internet over HTTPS — Vollna cannot deliver to `localhost` or private network addresses.
</Warning>

## Step 2: Connect it in Vollna

1. Go to **Dashboard → Notifications**, locate **Webhook**, and click **Setup**.
2. Paste the n8n webhook URL into the **Webhook URL** field.
3. With the n8n Webhook node in **Listen for test event** mode, click **Send test request** in Vollna to capture a sample payload.
4. Click **Save settings**. After the test succeeds, **publish** the workflow (the **Active** toggle on n8n 1.x) and replace the Vollna webhook URL with the node's **Production URL**.

## Step 3: Process each job

The payload contains a `projects` **array** (one request can carry several new jobs). To handle each job as its own item:

1. Add a **Split Out** node after the Webhook node.
2. Set **Field to Split Out** to `body.projects`.
3. Connect the node that should run once per job — for example an **IF** node to filter by budget, then Slack or Google Sheets.

See the [webhook field reference](/docs/notifications/webhooks#field-reference) for the full field list.

## Example workflow

**Webhook → Split Out (`body.projects`) → IF (`client_details.total_spent` > 10000) → Slack (Send Message)** — posts jobs from clients who have spent more than \$10,000 on Upwork to your Slack channel; the IF node drops the rest.

## Proposals & invitations

Proposal and invitation events use a separate endpoint with a different payload: add a second Webhook node, register its URL under **Dashboard → Settings → Developers → Webhooks**, and select the events you need. [Team Webhooks](/docs/integrations/webhooks) send one event per request — no Split Out needed; read `body.event`, `body.timestamp`, and `body.data` directly. Log `X-Vollna-Event-Id` (or `body.id`) to trace repeated deliveries; for record-level idempotency, use a stable field inside `body.data` such as `application_uid`.

## Troubleshooting

1. **Webhook fires in test but not in production**: make sure the workflow is **published** (**Active** on n8n 1.x) and Vollna is pointed at the **Production URL** (test URLs only work while the editor is listening).
2. **404 from n8n**: the URL path changes between test and production modes — re-copy the exact URL from the Webhook node.
3. **Payload fields under `body`**: n8n nests the JSON payload under `body` by default — reference fields as `body.filter.name`, `body.projects`, etc.
