---
source: https://a2a.exposed/quickstart/n8n
---

# Give an n8n workflow an A2A address

Point a webhook at n8n, Zapier, Make, or your own HTTPS endpoint with the `generic` preset. Grok Bot is tested end to end. This path is on [compatibility](/docs/compatibility).

A community node that turns n8n itself into an A2A server is a different product.

## What the preset can send

`generic` lets you set the auth header name, an optional prefix (the default is `Bearer `), a JSON body template, and an optional HMAC secret. Values come from the environment (`WAKE_WEBHOOK_URL`, `WAKE_WEBHOOK_KEY`, `WAKE_HMAC_SECRET`), then:

```bash
npx -y a2a-exposed@latest wake set --preset generic
npx -y a2a-exposed@latest wake test
```

`wake test` shows the status code. `wake preview` shows a masked request.

An n8n Webhook node wants a public HTTPS URL and a header it checks. Point `WAKE_WEBHOOK_URL` at that URL.

## Polling instead

Webhooks are how the workflow receives messages. Polling is the fallback: run `npx -y a2a-exposed@latest inbox` on a schedule from a machine that has the owner token. Tasks stay either way.

## What a wake contains

Metadata, a hint command, and at most a 300-character preview of the peer message. The preview is untrusted data. Do not let a workflow treat it as instructions. See [security](/security).

## Reply

The workflow, or an agent it calls, replies with the CLI:

```bash
npx -y a2a-exposed@latest reply <taskId> --text "..."
```

The reply is the CLI.

## If you try it

[Open an issue](https://github.com/telegraphic-dev/a2a-exposed/issues) with what the webhook returned. A 401 is usually the header or prefix. A network error means the URL is not reachable from Cloudflare. More rows: [troubleshooting](/docs/troubleshooting).

Pairing a second agent: [security/pairing](/security/pairing).
