Your server. Your workflows. Our scan events.

If you run n8n, you already own the only piece this integration needs: a Webhook trigger node. The moment a link is clicked or a QR code is scanned, the full event — signed, structured, seconds old — POSTs to your instance, and the workflow does the rest on hardware you control.

n8n channel set-up in the xengo console
Stock nodes only

The Webhook node you already have is the integration.

No community node to vet, no credentials to store in n8n, nothing to update when we ship. We push the event to a URL your Webhook trigger node generates; everything after that is ordinary n8n — IF nodes, Code nodes, three hundred downstream integrations.

  1. 1

    Add a Webhook trigger in n8n

    In n8n: start a workflow with the Webhook node, set the HTTP method to POST, then activate the workflow and copy its Production URL (the Test URL works for a dry run first).

  2. 2

    Create the channel in xengo

    Console → Notifications → Add channel → n8n. Paste the URL into the Webhook URL field, save, and hit Send test — with the node listening you'll see the event arrive with every field expanded.

  3. 3

    Scope it to the right codes

    Attach the channel to the links and QR codes that should trigger it — asset labels to the maintenance workflow, campaign links to the reporting one.

Self-hosted endpoint, first-class channel

Self-hosted endpoint, first-class channel

Your n8n instance sits on the console's Notifications page like any SaaS channel: named, testable with one click, pausable without deleting configuration, with send counts and last-delivery status visible.

  • Send test fires a real event at your Webhook node
  • Multiple channels for multiple workflows or instances
  • Pause during maintenance windows, resume after
When your instance was down, we can prove what happened

When your instance was down, we can prove what happened

Self-hosting means occasional downtime. The delivery log records every POST — first attempt and each retry — with response codes, so you can reconcile against n8n's execution list after the fact.

  • Six attempts per event across roughly 43 minutes
  • Stable webhook-id per event for de-duplication
  • Per-attempt response codes, timestamped in real order
The event

What n8n receives — the whole story, as JSON

Not a bare ping: the full scan event — code, source, destination, tags, timestamp, device — arrives at your Webhook URL within seconds of the scan.

Every delivery carries Svix-compatible signature headers (webhook-id, webhook-timestamp, webhook-signature) signed with your channel's whsec_ secret, and failures retry on a backoff ladder for up to six attempts — with every attempt visible in the console's delivery log. Verification docs →

{
  "event": "click",
  "source": "qr",
  "code": "spring-launch",
  "shortUrl": "go.yourbrand.com/spring-launch",
  "title": "Spring launch pack",
  "destination": "https://yourbrand.com/spring",
  "tags": { "campaign": "spring-24", "sku": "SB-114" },
  "createdAt": "2026-05-02T09:14:11Z",
  "ts": 1752319441000,
  "at": "2026-07-12T10:44:01+00:00",
  "ip": "203.0.113.7",
  "ua": "Mozilla/5.0 (iPhone; …)",
  "referer": null,
  "customerId": "cus_9f2k…"
}

The details that make it dependable

http:// accepted

Unlike the SaaS channels, n8n URLs aren't forced to HTTPS — useful behind your own reverse proxy, though HTTPS remains the sensible default.

Signed for the sceptical

Svix-compatible signature headers (webhook-id, webhook-timestamp, webhook-signature) ship on every delivery — a Code node can verify against your whsec_ secret.

Push beats cron

No Schedule Trigger polling our API: the event arrives seconds after the scan, and the workflow runs exactly as often as reality demands.

Retries that respect state

Failed deliveries retry on a 30s/2m/10m/15m/15m ladder; we re-read the channel each attempt, so pausing it stops the retries too.

Everything in the body

Code, click-vs-QR source, short URL, destination, tags, timestamp, device, referrer — the full event, not a ping that makes the workflow call back for details.

A log on both ends

n8n keeps its execution history; the console keeps the delivery log. Between them, 'did the workflow run for that scan?' is always answerable.

Frequently asked questions

Is there a xengo node in n8n's community nodes?

Not yet — a native n8n node is on the roadmap. Today the stock Webhook trigger node ingests our POST natively, which gives you the same instant trigger without installing or trusting third-party node code on your instance.

Can xengo reach my self-hosted instance?

Deliveries come from our cloud, so the Webhook node's URL must be reachable from the internet — a public hostname, a reverse proxy, or a tunnel. Plain http:// is accepted for n8n channels, but if the URL only resolves on your LAN, the POST can't arrive.

Should I paste the Test URL or the Production URL?

Production. n8n's Test URL only listens while the editor is open, which is handy for the first Send test but wrong for real traffic. Activate the workflow, paste the Production URL, and use Send test again to confirm end to end.

How do I verify the event is genuinely from xengo?

Every delivery carries Svix-compatible signature headers signed with your channel's whsec_ secret, shown once when the channel is created. A Code node can recompute the HMAC and reject anything that doesn't match — or you can rely on the webhook path staying secret.

What if my server is offline when a scan happens?

We retry: six attempts on a backoff ladder covering roughly 43 minutes of outage, each logged with its response code. Delivery is at-least-once and the webhook-id header is stable across retries, so idempotent workflows can de-duplicate cleanly.

More automation platforms

One platform. Everything a link should do.

Smart URLs, dynamic QR codes and a full API — branded on your own domain, safety-screened, and tracked. Build, re-point and measure it all in one place.

Start free trial
1,284 clicks
go.acme.com/spring
1 London 412
2 Manchester 168
3 Bristol 94

Smart URLs

Branded short links on a domain you control — editable, screened, and tracked.

Popular Smart URLs features

  • Your own custom domain, auto-HTTPS
  • Re-point live links without reprinting
  • Every destination safety-screened
  • Honest, bot-filtered analytics

Dynamic QR

Branded QR codes you can re-point any time — never reprint the poster again.

Popular Dynamic QR features

  • Editable destination behind every code
  • Your brand colours + logo
  • Real-time scan alerts
  • Per-code scan analytics
$ curl -X POST api.xengo.io/v1/links
{
  "domain": "go.acme.com",
  "url": "https://acme.com/…"
}
→ 201 go.acme.com/aB3xK

API

Create and manage links + QR at scale, straight from your own tools.

Popular API features

  • REST API with scoped keys
  • Bulk-create thousands of links
  • Programmatic QR generation
  • Webhooks + click / scan alerts

Wire scans into the stack you run yourself

14-day free trial, card required, cancel anytime. One Webhook node, one paste, done.