Wenn Du Besuchern, Kunden oder externen Dienstleistern einen temporären WLAN-Zugang bereitstellen möchtest, sind die Guest-Voucher von UniFi eine praktische Lösung. Die manuelle Erstellung im UniFi Controller kann jedoch schnell zeitaufwendig werden – insbesondere dann, wenn regelmäßig neue Gäste Zugang benötigen.
In diesem Artikel zeige ich Dir, wie Du mit n8n einen Workflow erstellst, der UniFi Guest-Voucher automatisch generiert, optional per E-Mail versendet und bei Bedarf direkt als druckbare Ausgabe bereitstellt.
Zielsetzung
Der Workflow soll folgende Anforderungen erfüllen:
- Gastzugang über ein Webformular beantragen
- Voucher automatisch über die UniFi API erstellen
- Auswahl zwischen einfacher oder mehrfacher Nutzung
- Optionaler Versand des Vouchers per E-Mail
- Ausgabe eines druckbaren Voucher-Dokuments
Dadurch entfällt die manuelle Erstellung von Gastzugängen im UniFi Controller vollständig.
Voraussetzungen
Für die Umsetzung werden folgende Komponenten benötigt:
- UniFi Network Application (ab Version 8.x empfohlen)
- Ein API-Key für den Zugriff auf die UniFi API
- n8n (selbst gehostet oder Cloud)
- SMTP-Server für den E-Mail-Versand (optional)
UniFi API-Key anlegen
Damit n8n auf die UniFi API zugreifen kann, benötigst Du einen API-Key.
API-Key erstellen
Öffne zunächst Deine UniFi Network Application und navigiere zu:
Settings → Integrations
Dort kannst Du über Create API Key einen neuen API-Schlüssel erstellen.

Vergib beispielsweise einen Namen wie:
n8n-guest-voucher
Nach dem Erstellen wird Dir der API-Key einmalig angezeigt.
n8n Workflow erstellen
Der Workflow besteht aus mehreren Schritten:
- Formular anzeigen
- Eingaben auswerten
- Voucher erzeugen
- HTML-Ausgabe erstellen
- Optional E-Mail versenden
- Ergebnis anzeigen

Das Formular
Der Einstiegspunkt des Workflows ist ein n8n-Formular.
Hier werden die notwendigen Informationen für die Voucher-Erstellung abgefragt.
Folgende Felder sind enthalten:
| Feld | Beschreibung |
|---|---|
| Name | Name des Gastes |
| E-Mail-Adresse | E-Mail-Adresse des Empfängers |
| E-Mail senden | Soll der Voucher per Mail verschickt werden? |
| Mehrfache Verwendung | Soll der Voucher auf mehreren Geräten nutzbar sein? |
Der Benutzer sieht anschließend ein einfaches Formular mit den entsprechenden Eingabefeldern und Auswahlmöglichkeiten.

Voucher-Typ auswählen
Nach dem Absenden des Formulars wird über einen Rule-Node entschieden, welcher Voucher-Typ erzeugt werden soll.
Einfache Verwendung
Ist die Option Mehrfache Verwendung nicht aktiviert, wird ein klassischer Voucher erzeugt.
Dieser eignet sich beispielsweise für:
- Besucher
- Einzelpersonen
- Kurzzeitige WLAN-Zugänge
Mehrfache Verwendung
Ist die Option aktiviert, wird ein Voucher erzeugt, der auf mehreren Geräten verwendet werden kann.
Typische Anwendungsfälle sind:
- Schulungen
- Meetings
- Externe Dienstleister
- Projektteams
Voucher über die UniFi API erstellen
Die eigentliche Erstellung des Vouchers erfolgt über einen HTTP Request Node.
Hierbei wird die UniFi Network API verwendet, die eine Authentifizierung per API-Key unterstützt.
HTTP Header
Für die Authentifizierung werden folgende Header gesetzt:
X-API-KEY: <DEIN_API_KEY>
Content-Type: application/json
Accept: application/json
Der API-Key wird entweder direkt im Node hinterlegt oder über Umgebungsvariablen beziehungsweise n8n Credentials eingebunden.
Request Body
Für die Erstellung des Gastzugangs wird folgendes JSON an die UniFi API gesendet:
{
"count": 1,
"name": "n8n-generated",
"authorizedGuestLimit": 10,
"timeLimitMinutes": 1440
}
Bedeutung der Parameter
| Parameter | Beschreibung |
|---|---|
| count | Anzahl der zu erzeugenden Voucher |
| name | Bezeichnung des Vouchers |
| authorizedGuestLimit | Anzahl der erlaubten Geräte |
| timeLimitMinutes | Gültigkeitsdauer in Minuten |
In diesem Beispiel wird ein Voucher erstellt, der:
- für bis zu 10 Geräte verwendet werden kann
- 24 Stunden gültig ist
- automatisch über n8n erzeugt wurde
Dynamische Anpassung anhand der Formulareingaben
Der große Vorteil des Workflows liegt darin, dass die Parameter dynamisch aus den Formulareingaben erzeugt werden.
Einfache Verwendung
{
"count": 1,
"authorizedGuestLimit": 1,
"timeLimitMinutes": 1440
}
Hier kann der Voucher nur auf einem Gerät genutzt werden.
Mehrfache Verwendung
{
"count": 1,
"authorizedGuestLimit": 10,
"timeLimitMinutes": 1440
}
In diesem Fall kann derselbe Voucher auf mehreren Geräten verwendet werden.
Die Entscheidung erfolgt automatisch über den Rule-Node im Workflow.
HTML-Ausgabe erzeugen
Nachdem die UniFi API den Voucher erstellt hat, wird das Ergebnis in einem HTML-Node verarbeitet.
Dadurch entsteht eine übersichtliche und druckbare Darstellung des Gastzugangs.
Beispiel:
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Guest-Wifi Voucher</title>
<style>
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif;
background: #f3f4f6;
padding: 32px;
color: #111827;
}
.voucher {
width: 380px;
margin: 0 auto;
background: #ffffff;
border-radius: 26px;
overflow: hidden;
box-shadow: 0 18px 45px rgba(0, 0, 0, 0.16);
}
.header {
background: linear-gradient(135deg, #0057ff, #00b8ff);
color: white;
text-align: center;
padding: 30px 24px;
}
.wifi-icon {
font-size: 44px;
margin-bottom: 10px;
}
.header h1 {
font-size: 28px;
font-weight: 800;
margin-bottom: 6px;
}
.header p {
font-size: 14px;
opacity: 0.9;
}
.content {
padding: 28px;
}
.label {
font-size: 11px;
text-transform: uppercase;
letter-spacing: 1.6px;
color: #6b7280;
text-align: center;
margin-bottom: 10px;
}
.code-box {
border: 2px dashed #cbd5e1;
border-radius: 18px;
padding: 20px 12px;
text-align: center;
margin-bottom: 22px;
background: #f9fafb;
}
.voucher-code {
font-size: 38px;
line-height: 1.1;
font-weight: 900;
letter-spacing: 4px;
color: #111827;
word-break: break-all;
}
.info-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 12px;
margin-bottom: 22px;
}
.info-card {
background: #f9fafb;
border-radius: 14px;
padding: 14px;
border: 1px solid #e5e7eb;
}
.info-title {
font-size: 11px;
color: #6b7280;
margin-bottom: 5px;
}
.info-value {
font-size: 15px;
font-weight: 800;
color: #111827;
}
.instructions {
background: #eef6ff;
border-radius: 16px;
padding: 16px;
font-size: 14px;
line-height: 1.55;
color: #374151;
}
.instructions strong {
color: #111827;
}
.footer {
padding: 18px 24px;
text-align: center;
font-size: 12px;
color: #9ca3af;
border-top: 1px solid #e5e7eb;
}
.print-button {
display: block;
width: 380px;
margin: 18px auto 0;
padding: 14px 18px;
border: none;
border-radius: 14px;
background: #111827;
color: white;
font-size: 15px;
font-weight: 700;
cursor: pointer;
transition: background 0.2s ease;
}
.print-button:hover {
background: #374151;
}
@media print {
body {
background: white;
padding: 0;
}
.voucher {
width: 80mm;
box-shadow: none;
border-radius: 0;
}
.print-button {
display: none;
}
@page {
margin: 0;
size: 80mm auto;
}
}
</style>
</head>
<body>
<div class="voucher">
```
<div class="header">
<div class="wifi-icon">📶</div>
<h1>Guest-Wifi</h1>
<p>Willkommen im WLAN</p>
</div>
<div class="content">
<div class="label">Voucher Code</div>
<div class="code-box">
<div class="voucher-code">
{{ $json.vouchers[0].code }}
</div>
</div>
<div class="info-grid">
<div class="info-card">
<div class="info-title">Netzwerk</div>
<div class="info-value">Guest-Wifi</div>
</div>
<div class="info-card">
<div class="info-title">Gültigkeit</div>
<div class="info-value">
{{ Math.round($json.vouchers[0].timeLimitMinutes / 60) }} Std.
</div>
</div>
</div>
<div class="instructions">
<strong>So verbindest du dich:</strong><br>
1. Mit dem WLAN <strong>Guest-Wifi</strong> verbinden<br>
2. Voucher-Code eingeben<br>
3. Online gehen 🚀
</div>
</div>
<div class="footer">
Erstellt am
{{ new Date($json.vouchers[0].createdAt).toLocaleString('de-DE') }}
</div>
```
</div>
<button class="print-button" onclick="window.print()">
🖨️ Voucher drucken
</button>
</body>
</html>
Voucher direkt ausdrucken
Der HTML-Node liefert die Ausgabe direkt an das Formular zurück.
Dadurch erhält der Benutzer unmittelbar:
- den Voucher-Code
- die Gültigkeitsinformationen
- eine druckfreundliche Darstellung
Der Voucher kann sofort ausgedruckt und dem Gast übergeben werden.

Optionaler Versand per E-Mail
Nicht jeder Voucher muss ausgedruckt werden. Deshalb bietet der Workflow zusätzlich die Möglichkeit, den Zugang direkt per E-Mail zu versenden.
Über die Checkbox „E-Mail senden“ entscheidet der Benutzer selbst, ob eine E-Mail verschickt werden soll.
Ein Switch-Node prüft die Auswahl:
- Checkbox aktiviert → E-Mail versenden
- Checkbox deaktiviert → Workflow beenden
Der SMTP-Node erstellt anschließend automatisch eine Nachricht mit dem erzeugten Voucher-Code.
Beispiel:
Hallo,
für Dich wurde ein WLAN-Gastzugang erstellt.
Voucher-Code:
ABCD-EFGH
Der Zugang ist 24 Stunden gültig.
Viel Spaß beim Surfen.
Dadurch kann der Gast den Zugangscode direkt auf seinem Smartphone oder Notebook empfangen.
Fazit
Mit n8n lässt sich die Erstellung von UniFi Guest-Vouchern einfach und effizient automatisieren. Über ein Webformular werden die benötigten Informationen erfasst, anschließend erzeugt die UniFi API automatisch den passenden Voucher.
Je nach Bedarf kann der Gastzugang für ein einzelnes Gerät oder mehrere Geräte erstellt werden. Zusätzlich lässt sich der Voucher direkt ausgeben, ausdrucken oder per E-Mail versenden.
Durch die Verwendung der UniFi API mit API-Key-Authentifizierung ist die Lösung nicht nur komfortabel, sondern auch zukunftssicher und deutlich einfacher als ältere Ansätze mit Session-Logins und Cookies. Gerade in Umgebungen mit regelmäßig wechselnden Gästen sorgt dieser Workflow für eine erhebliche Zeitersparnis und einen professionellen Bereitstellungsprozess für WLAN-Gastzugänge.