QR-Code erstellen
Vollständiger Guide zum Erstellen, Gestalten, Prüfen und Automatisieren von QR-Codes in QR Vello.
Diese Seite ist der Basis-Guide für QR Vello. Sie erklärt, wie du QR-Codes im
Dashboard erstellst, welche Code-Typen node-qr unterstützt, wie dynamische
Codes funktionieren und welche API-Fläche für externe Integrationen stabil ist.
Dashboard-Flow
Öffne /qr/codes und klicke auf "Create" beziehungsweise
"Neuer QR-Code". Der Erstellprozess besteht aus sechs fachlichen Schritten.
- Typ wählen: statisch oder dynamisch.
- QR-Art wählen: URL, vCard, WLAN, Text, E-Mail, SMS, Telefon, Geo, Event, PDF oder Landing Page.
- Inhalt ausfüllen: Ziel-URL, Kontaktdaten, WLAN-Daten oder den jeweiligen Payload.
- Design festlegen: Farben, Logo, Module, Eyes, Frame, Error-Correction, Margin.
- Organisation setzen: Tags, Ordner, Kampagne, Brand Kit und optional Custom Domain.
- Preflight prüfen: Scanbarkeit, Kontrast, Logo-Größe, Margin und empfohlene Druckgröße.
Statisch oder dynamisch
| Typ | Verhalten | Geeignet für |
|---|---|---|
static | Der Inhalt wird direkt im QR-Bild kodiert. Nach dem Druck nicht editierbar. | WLAN, vCard, kurze Texte, einfache interne Codes. |
dynamic | Der QR-Code verweist auf einen QR Vello Redirect. Ziel und Tracking bleiben nach dem Druck steuerbar. | Kampagnen, Print, Verpackung, Menüs, Events, QR-Codes mit Analytics. |
Für alles, was gedruckt, verteilt oder länger genutzt wird, ist dynamic die
sichere Wahl. Du kannst das Ziel ändern, den Code pausieren, eine Custom Domain
nutzen und Scans auswerten.
Unterstützte QR-Arten
node-qr unterstützt aktuell diese kind-Werte:
| Kind | Payload | Typische Nutzung |
|---|---|---|
url | url | Website, Kampagne, Produktseite, Checkout, Formular. |
text | text | Kurzer statischer Text oder interne Information. |
vcard | Name, Organisation, Titel, Telefon, E-Mail, Website, Adresse | Digitale Visitenkarten und Kontakte. |
wifi | SSID, Passwort, Verschlüsselung, Hidden-Flag | Gäste-WLAN und Standort-Setups. |
email | Empfänger, Betreff, Body | Support- oder Anfrage-Mails. |
sms | Nummer, Body | SMS-Opt-in oder Service-Flows. |
phone | Nummer | Direkter Anruf per Scan. |
geo | Latitude, Longitude | Standort oder Navigation. |
event | Titel, Start, Ende, Ort, Beschreibung | Kalendertermine und Events. |
pdf | fileKey, optional assetId | Gehostete PDF-Dokumente. |
landing | landingPageId | Gehostete Landing Pages, Menüs, Review-Flows. |
Inhalt und Ziel-URL
Bei dynamischen URL-Codes ist targetUrl die steuerbare Zieladresse. Der
gedruckte QR-Code bleibt gleich, während du targetUrl später ändern kannst.
Wichtig:
customSlugkann einen gewünschten Short-Slug anfragen.- Ein belegter Slug führt zu einem Konflikt, nicht zu einer stillen Änderung.
folderId,campaignIdundtagsstrukturieren Codes für Reporting.customDomainIdbindet einen Code an eine aktive Custom Domain.
Design
Das Design ist Teil des QR-Code-Objekts. Unterstützt werden:
foregroundundbackground- transparente Hintergründe
- lineare oder radiale Gradients
- Logos mit Größe, Padding, Position, Border und Hintergrundmodus
- Built-in Logos wie WhatsApp, Instagram, TikTok, Facebook, X, LinkedIn, YouTube, E-Mail, Telefon oder URL
dotStyle:square,rounded,dots,classy,extra-rounded,mosaic,vertical-lines,horizontal-lines,cross,diamondeye.outerStyle:square,rounded,circle,leaf,shieldeye.innerStyle:square,dot,star,diamondframe:none,rounded,speech,bannererrorCorrection:L,M,Q,Hmargin
Für QR-Codes mit Logo ist H meistens der robusteste Error-Correction-Wert.
Der Preflight zeigt Warnungen, wenn Logo, Kontrast oder Margin die Scanbarkeit
gefährden.
Brand Kit und Auto-Sync
Ein QR-Code kann mit einem Brand Kit verbunden werden:
brandKitIdweist ein Brand Kit zu.brandAutoSynchält Felder automatisch mit dem Brand Kit synchron.inheritedFromBrandzeigt, welche Felder aus dem Brand Kit stammen.brandUpdateAvailablesignalisiert, dass ein verknüpftes Brand Kit neuer ist.
Das ist wichtig für Agenturen, Filialstrukturen und Teams, die viele Codes mit konstanter Markenlogik erzeugen.
Preflight
Preflight ist der Qualitätscheck vor Druck oder Livegang. Er prüft unter anderem:
| Reason | Bedeutung |
|---|---|
DECODE_FAIL | Der QR-Code konnte im Check nicht zuverlässig dekodiert werden. |
CONTRAST_LOW | Vorder- und Hintergrund haben zu wenig Kontrast. |
GRADIENT_CONTRAST_LOW | Ein Gradient macht Teile des Codes zu schwach lesbar. |
BACKGROUND_TRANSPARENT | Transparenz kann auf unbekannten Untergründen riskant sein. |
LOGO_TOO_LARGE_FOR_ECC | Das Logo nimmt zu viel Fläche für die gewählte Fehlerkorrektur ein. |
DARK_MODE_WARNING | Der Code kann auf dunklen Flächen oder im Dark-Mode-Kontext problematisch sein. |
MARGIN_TOO_SMALL | Die Quiet Zone ist zu klein. |
Der Check liefert außerdem empfohlene Druckgrößen für Use Cases wie Visitenkarte, Produktlabel, Flyer, Wand-A4, A3/A2, Poster und Billboard.
Nach dem Erstellen
Nach dem Speichern bekommst du:
id,version,statusshortSlug,publicUrl,shortUrl- Payload-Zusammenfassung und Ziel
- Style-Zusammenfassung
- Organisation mit Tags, Ordner, Kampagne und Custom Domain
- Preflight-Status
- Action-Flags wie
canEdit,canArchive,canPause,canDownload,canRollback
Versionen und Rollback
Jede Änderung erhöht die Version. Die Detailseite unterstützt:
- Versionshistorie,
- Diff zwischen alter Version und aktuellem Stand,
- Rollback auf eine frühere Version,
- Duplizieren mit Overrides.
Nutze Rollback, wenn ein Ziel, Design oder Payload versehentlich geändert wurde. Nutze Duplizieren, wenn du eine Kampagne mit ähnlichen Codes aufbauen willst.
Status und Aktionen
| Status | Bedeutung |
|---|---|
active | Code ist live. Dynamische Codes lösen weiter auf. |
paused | Dynamischer Redirect ist bewusst inaktiv. |
archived | Code ist soft-deleted und kann wiederhergestellt werden. |
blocked | Code wurde aus Sicherheits- oder Admin-Gründen blockiert. |
Verfügbare Aktionen im Dashboard:
- pausieren und aktivieren,
- archivieren und wiederherstellen,
- duplizieren,
- blockieren und entblocken,
- löschen, wenn die Berechtigung und Policy es erlauben,
- Render als PNG, SVG oder PDF herunterladen.
API: Public v1
Die öffentliche v1-Fläche ist bewusst stabil und eng:
| Methode | Pfad | Zweck |
|---|---|---|
GET | /v1/qr-codes | Codes listen und filtern. |
POST | /v1/qr-codes | Code erstellen. |
GET | /v1/qr-codes/:qrCodeId | Code lesen. |
PATCH | /v1/qr-codes/:qrCodeId | Code aktualisieren. |
DELETE | /v1/qr-codes/:qrCodeId | Code archivieren. |
Beispiel: dynamischen URL-Code erstellen
curl -X POST https://api.qr-vello.com/v1/qr-codes \
-H "Authorization: Bearer qrv_live_..." \
-H "Content-Type: application/json" \
-d '{
"type": "dynamic",
"kind": "url",
"title": "Store Mainz",
"payload": {
"kind": "url",
"url": "https://example.com/mainz"
},
"targetUrl": "https://example.com/mainz",
"customSlug": "store-mainz",
"tags": ["retail", "mainz"],
"style": {
"foreground": "#111827",
"background": "#F9FAFB",
Beispiel: vCard-Code
{
"type": "static",
"kind": "vcard",
"title": "Niclas Pilz",
"payload": {
"kind": "vcard",
"firstName": "Niclas",
"lastName": "Pilz",
"organization": "QR Vello",
"title": "Founder"
Dashboard API
Das Dashboard nutzt zusätzlich umfangreiche node-qr-Routen, etwa:
POST /qr-codes/previewfür Render-Preview ohne gespeicherten Code.POST /qr-codes/preflightfür Preflight vor dem Speichern.GET /qr-codes/overviewfür KPI-Strip, Facets und Attention Items.POST /qr-codes/bulk/actionsfür Massenaktionen.GET /qr-codes/:qrCodeId/versionsund Rollback-Routen.- Scan-Analytics unter
/qr-codes/:qrCodeId/scans/....
Diese Routen sind die Dashboard-Fläche. Als externer stabiler Vertrag gilt aktuell die dokumentierte Public API v1.