Häufig gestellte Fragen
Auf dieser Seite finden Sie Antworten auf häufig gestellte Fragen zu Liquid.

Braze unterstützt derzeit nicht 100 % von Shopifys Liquid, sondern nur bestimmte Teile, die wir in unserer Dokumentation beschrieben haben. Testen Sie alle Nachrichten mit Liquid vor dem Versand, um das Risiko von Fehlern oder die Verwendung von nicht unterstütztem Liquid zu minimieren.
Über Liquid in Braze
Wie verwende ich Liquid-Snippets in Braze?
In vielen Fällen können Sie Liquid-Snippets einbinden, indem Sie zu Ihren Campaigns oder Canvases gehen und Liquid über das Personalisierungs-Modal in Bereichen wie dem E-Mail-Nachrichtentext oder in Ihren Segments einfügen.
Wo kann ich mehr erfahren?
Weitere Informationen zu Liquid finden Sie in unserem geführten Braze-Lernpfad Dynamische Personalisierung mit Liquid. Sie können auch die Liquid-Anwendungsfallbibliothek als Inspiration und für eine Vielzahl von Personalisierungsbeispielen mit Liquid nutzen.
Was ist der Unterschied zwischen der Verwendung von Liquid und Connected Content für die Personalisierung?
Braze Connected Content ist ein Beispiel für einen Liquid-Tag. Es wird ebenfalls für die Personalisierung verwendet, aber die Daten stammen von einem externen Endpunkt und nicht aus gespeicherten Daten innerhalb von Braze. In unserem speziellen Abschnitt zu Connected Content erfahren Sie mehr darüber, wie Sie die Personalisierung Ihrer Nachrichten erweitern können.
Was ist Liquid-Templating?
Dies ist die gebräuchlichste Art, Liquid in Braze zu verwenden. Beim Liquid-Templating werden Daten aus dem Profil einer Nutzerin oder eines Nutzers in eine Nachricht eingefügt. Diese Daten können vom Vornamen bis hin zu angepassten Events aus einer eventgetriggerten Nachricht reichen.
Eine vollständige Liste der unterstützten Liquid-Tags finden Sie unter Unterstützte Personalisierungs-Tags.
Werden durch die Verwendung von Liquid Datenpunkte protokolliert?
Nein.
Personalisierungs-Tags und Datenquellen
Wie kann ich Liquid verwenden, um eine personalisierte Begrüßung zu senden?
Für eine personalisierte Begrüßung mit dem Vornamen der Nutzer:innen können Sie die Standard-Nutzerprofilattribute wie {{${first_name}}} und {{${last_name}}} verwenden.
Sie können auch eine Liquid-{% if X %}-Anweisung verwenden, um bedingtes Rendering basierend auf beliebigen Kriterien durchzuführen, wie z. B. dem Wochentag oder angepassten Attributen. Weitere Informationen zu den unterstützten Liquid-Operatoren, die in bedingten Anweisungen verwendet werden können, finden Sie unter Operatoren.
Wie kann ich eine Nachricht basierend auf dem Standort der Nutzer:innen personalisieren?
Es gibt ein Standardattribut für den Standort der Nutzer:innen: {{${most_recent_location}}}.
Was ist der Unterschied zwischen {{campaign.${name}}} und {{campaign.${message_name}}}?
Sowohl {{campaign.${name}}} als auch {{campaign.${message_name}}} sind unterstützte Liquid-Personalisierungs-Tags. Beide Tags referenzieren Campaign-Attribute. {{campaign.${name}}} bezeichnet den Namen Ihrer Campaign, und {{campaign.${message_name}}} ist der Name Ihrer Nachrichtenvariante.
Zur Verwendung in URLs und Query-Strings (z. B. wenn ein Name % oder Leerzeichen enthält), lesen Sie Campaign-Namen in URLs.
Wie verwende ich Liquid mit verschachtelten Objekten?
Braze verfügt über ein integriertes Feature, das Liquid-Code für Segments generiert, der in einer Nachricht verwendet werden kann. Konkret können Sie ein Segment erstellen, das mehrere Kriterien in einem Objekt abgleicht.
Weitere Informationen finden Sie unter Segmentierung mit mehreren Kriterien.
Wie verwende ich Event-Attribute, um eine Nachricht zu personalisieren, die von einem Event getriggert wird?
Sie können auf Eigenschaften von API-getriggerten Events mit dem Tag api_triggered_property zugreifen: {{api_trigger_properties.${attribute_key}}}.
Unterstützt Braze ein Array von Arrays in Liquid?
Liquid unterstützt nativ keine Arrays von Arrays. Speichern Sie Werte als Array kommaseparierter Strings und verwenden Sie den split-Filter, um sie bei Bedarf zu parsen.
Variablen und Syntax
Wie weise ich Variablen mit Liquid zu?
Sie können Variablen erstellen und zuweisen, indem Sie den assign-Tag verwenden. Dieser erstellt eine Variable im Nachrichten-Editor, die auch in Ihrer gesamten Nachricht referenziert werden kann.
Sie können ein assign über mehrere Zeilen aufteilen, wenn Sie alle Braze-Liquid-Variablen mit doppelten geschweiften Klammern ({{ }}) umschließen. Ohne diese Klammern können mehrzeilige Assign-Anweisungen zu unerwartetem Rendering führen, einschließlich angepasster Attribute, die nicht korrekt als Template verarbeitet werden. Beispiele und zugehörige Syntaxregeln finden Sie unter Liquid verwenden.
Wann sollte ich assign und wann capture verwenden?
Sowohl assign als auch capture erstellen Liquid-Variablen, dienen jedoch unterschiedlichen Zwecken:
assigneignet sich für einfache Variablen, die einen einzelnen Wert speichern, z. B. einen Boolean, eine Zahl oder einen einfachen String. Sie können auch einen einzelnen Filter in derselben Zeile anwenden.captureeignet sich zum Speichern eines Textblocks, der mehrere Variablen, Strings oder komplexe Ausdrücke enthalten kann.
Verwenden Sie capture, wenn der Wert für eine einzelne assign-Anweisung zu komplex ist, z. B. bei URLs, die andere Liquid-Variablen oder angepasste Attribute als Parameter verwenden. capture wird auch bevorzugt, wenn Liquid-Variablen im Body von Connected-Content-Aufrufen implementiert werden.
Beispiele
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{% comment %}Use assign for custom attributes{% endcomment %}
{% assign name = {{custom_attribute.${first_name}}} %}
{% assign price = {{custom_attribute.${price}}} | plus: 0 %}
{% comment %}Use assign for a simple variable{% endcomment %}
{% assign discount_label = "20% off" %}
Hello {{ customer.first_name | default: "there" }}, enjoy {{ discount_label }} on your next order!
{% comment %}Use capture for complex strings{% endcomment %}
{% capture greeting %}Hello, {{custom_attribute.${first_name}}}! Your order #{{custom_attribute.${order_id}}} is ready.{% endcapture %}
{{ greeting }}
{% comment %}Use capture to create conditional content{% endcomment %}
{% capture promo_block %}
{% if customer.vip == true %}
As a VIP member, you get free shipping.
{% else %}
Join our VIP program to unlock free shipping.
{% endif %}
{% endcapture %}
Werden Liquid-Variablen zwischen Betreffzeile und Nachrichtentext übernommen?
Nein. Braze rendert jede Nachrichtenkomponente separat (z. B. Betreffzeile, HTML-Body, Preheader und Push-Titel). Zuweisungen oder Captures, die Sie in einem Feld vornehmen, stehen in einem anderen nicht zur Verfügung. Wiederholen Sie den Liquid- oder Connected-Content-Aufruf in jedem Feld, das den Wert benötigt.
Was ist For-Loop-Logik, und wie kann ich sie verwenden?
For-Loops sind auch als Iterations-Tags bekannt. Die Verwendung von For-Loop-Logik in Ihren Liquid-Snippets ermöglicht es, Liquid-Blöcke so lange zu durchlaufen, bis eine Bedingung erfüllt ist.
In Braze kann dies zum Prüfen von Elementen in einem angepassten Array-Attribut oder einer Liste von Werten und Objekten verwendet werden, die von einem Katalog, einer Selection oder einem Connected-Content-Aufruf zurückgegeben werden. Konkret können Sie For-Loop-Logik als Teil Ihres Messagings nutzen, um zu prüfen, ob ein Produkt vorrätig ist oder ob ein Produkt eine Mindestbewertung hat.
Angenommen, Sie haben einen Katalog namens „Games“ mit einer Selection namens „cheap_games“. Um die Titel der Spiele in „cheap_games“ abzurufen, können Sie dieses Liquid-Snippet verwenden:
1
2
3
4
{% catalog_selection_items Games cheap_games %}
{% for item in items %}
Get this game: {{ item.title }}
{% endfor %}
Sobald die festgelegten Bedingungen erfüllt sind, kann Ihre Nachricht fortfahren. Die Verwendung dieser Logik ist eine hilfreiche Möglichkeit, Zeit zu sparen, anstatt Liquid-Blöcke für verschiedene Bedingungen zu wiederholen.
Was ist Abbruchlogik, und wie kann ich sie verwenden?
Mit Abbruchlogik können Sie das Senden einer Nachricht stoppen, wenn die Bedingungen erfüllt sind. Dies ist besonders hilfreich, um zu verhindern, dass unvollständige Nachrichten an Ihre Nutzer:innen gesendet werden. Weitere Beispiele für Abbruchlogik in Ihren Marketingkampagnen finden Sie unter Nachrichten abbrechen.
Kann ich Liquid innerhalb des abort_message-Tags verwenden?
Nein. Der {% abort_message %}-Tag akzeptiert einen statischen String in Anführungszeichen, keine Liquid-Personalisierung. Verwenden Sie andere Liquid-Logik vor dem Tag, wenn Sie bedingtes Abbruchverhalten benötigen.
Wie maskiere ich Telefonnummern mit Liquid?
Sie können Telefonnummern mit dem slice-Filter maskieren, um bestimmte Ziffern zu extrahieren, und dem append-Filter, um sie mit Maskierungszeichen zu kombinieren.
Alle Ziffern außer den letzten vier maskieren
Um eine 10-stellige Telefonnummer als ******7890 anzuzeigen:
1
2
3
4
5
6
7
8
9
{% assign phone = {{${phone_number}}} | split: '' %}
{% assign masked_phone = '' %}
{% for i in (0..5) %}
{% assign masked_phone = masked_phone | append: '*' %}
{% endfor %}
{% for i in (6..9) %}
{% assign masked_phone = masked_phone | append: phone[i] %}
{% endfor %}
{{ masked_phone }}
Die ersten drei und letzten vier Ziffern anzeigen
Um eine 10-stellige Telefonnummer als 123***7890 anzuzeigen:
1
2
3
4
{% assign first_part = {{${phone_number}}} | slice: 0, 3 %}
{% assign last_part = {{${phone_number}}} | slice: -4, 4 %}
{% assign masked_phone_number = first_part | append: "***" | append: last_part %}
{{ masked_phone_number }}
Canvas, Kataloge und Trigger-Eigenschaften
Warum schlägt mein API-getriggertes Liquid in Braze fehl?
Ein häufiger Grund ist ein zusätzliches Paar geschweifter Klammern. Zum Beispiel ist {{{api_trigger_properties.${attribute_key}}}} keine gültige Braze-Personalisierungssyntax. Verwenden Sie genau zwei öffnende und zwei schließende geschweifte Klammern: {{api_trigger_properties.${attribute_key}}}.
Gibt es Größenlimits für Canvas-Kontexteigenschaften?
Braze erzwingt kein festes Limit für Canvas-Kontexteigenschaften, aber halten Sie Payloads unter ungefähr 1 KB (~1.000 Zeichen). Größere Objekte können den Speicherverbrauch erhöhen und das Rendering von Nachrichten bei Versendungen mit hohem Volumen verzögern.
Warum erhalte ich einen Liquid-Fehler, wenn ich bestimmte Datentypen im Dashboard in der Vorschau anzeige?
Einige Typen von Canvas-Kontexteigenschaften erfordern eine Typkonvertierung in Liquid, bevor Sie sie in Vergleichen oder Berechnungen verwenden können. Wenn Sie beispielsweise numerisches Verhalten benötigen:
1
{{context.${property_name} | plus: 0}}
Warum gibt mein Katalog-Liquid-Snippet eine Abbruchmeldung zurück?
Wenn ein Katalog-Liquid-Snippet beim Senden abbricht, erstellen Sie das Snippet über das Personalisierungsmenü neu, indem Sie einzelne Katalogartikel auswählen, anstatt eine Massen- oder vollständig dynamische Auswahl zu verwenden. Siehe Kataloge und Selections.
Content Blocks und der Nachrichten-Editor
Warum gibt es zusätzliche Abstände in Nachrichten, die Content Blocks verwenden?
Wenn Sie zusätzliche Abstände in gesendeten Nachrichten bemerken, die Content Blocks mit Liquid verwenden, haben Sie möglicherweise unnötige Absatz- oder Zeilenumbrüche in Ihren bedingten Anweisungen. Schreiben Sie Ihre bedingten Anweisungen in einer einzigen Zeile statt über mehrere Zeilen verteilt.
Beispiel
1
{% if {{custom_attribute.${has_discount}}} == true %}Discounted Item{% elsif {{custom_attribute.${is_new_arrival}}} == true %}New Arrival{% else %}Regular Item{% endif %}
Warum erzeugt mehrzeiliger Liquid-Code unerwartete Leerzeichen in den Drag-and-drop-Editoren?
Wenn Liquid-Code im Drag-and-drop-Editor für In-App-Nachrichten oder im Drag-and-drop-Editor für E-Mails über mehrere Zeilen verteilt ist, wird jeder {% %}-Block als nicht sichtbarer Text gerendert. Die Zeilenumbrüche werden als leere Zeilen vor der sichtbaren Ausgabe beibehalten, was zu unerwarteten Leerzeichen führt.
Lösung 1: Whitespace-Control-Tags verwenden (empfohlen)
Fügen Sie Bindestriche innerhalb der Tag-Begrenzer hinzu, um umgebende Leerzeichen zu entfernen, während der Code lesbar bleibt:
1
2
3
4
5
{%- assign event_date = {{custom_attribute.${PreferredPickupDate}}} | date: "%s" -%}
{%- assign today = 'now' | date: "%s" -%}
{%- assign difference = event_date | minus: today -%}
{%- assign difference_days = difference | divided_by: 86400 -%}
Only {{ difference_days }} days until your move!
Lösung 2: Liquid in eine einzige Zeile zusammenfassen
Entfernen Sie alle Zeilenumbrüche, sodass der Liquid-Code in einer durchgehenden Zeile steht:
1
{% assign event_date = {{custom_attribute.${PreferredPickupDate}}} | date: "%s" %}{% assign today = 'now' | date: "%s" %}{% assign difference = event_date | minus: today %}{% assign difference_days = difference | divided_by: 86400 %}Only {{ difference_days }} days until your move!
Beide Ansätze verhindern unerwünschte leere Zeilen in Ihrer gerenderten Nachricht. Dies gilt für den Drag-and-drop-Editor für In-App-Nachrichten, den Drag-and-drop-Editor für E-Mails und Content Blocks mit Liquid. Weitere Informationen finden Sie in der Shopify-Dokumentation zu Whitespace control und in der Braze-Dokumentation zur Liquid-Syntax.
Warum fehlt mein Content Block unter Zeile im Drag-and-drop-Suchtool?
Einige Content Blocks werden unter Zeile in der Drag-and-drop-Editor-Suche nicht angezeigt. Fügen Sie einen HTML-Block über den Tab Inhalt (Erweitert) hinzu und setzen Sie dann den Content-Block-Liquid-Tag in diesen HTML-Block ein, um den Blockinhalt zu rendern.
Warum unterscheidet sich die Drag-and-drop-Content-Block-Vorschau von der Editoransicht?
Wenn Sie einen Content Block mit Liquid als Template verwenden, werden mobile Media-Queries im Block in der Vorschau möglicherweise nicht auf dieselbe Weise angewendet wie beim direkten Ziehen des Blocks in eine Nachricht. Das Ziehen des Blocks behält das Layout bei, entkoppelt ihn jedoch vom Quellblock, sodass zukünftige Blockänderungen die Nachricht nicht mehr automatisch aktualisieren.
Wie kann ich Event-Property-Werte im Nachrichten-Editor in der Vorschau anzeigen?
Verwenden Sie Vorschau als angepasste:r Nutzer:in und geben Sie Beispielwerte für angepasste Event-Properties für die Person ein, deren Vorschau Sie anzeigen möchten. Dies ist auch nützlich für Nachrichten mit Abbruchlogik, wenn Sie Vorschauwerte benötigen, die keinen Abbruch auslösen.
Liquid in E-Mail-Nachrichten
Warum wird meine Nachricht mit „Invalid from email address for recipient:“ abgebrochen?
Dieser Abbruch tritt auf, wenn Liquid in der Absender-Adresse ungültige Syntax erzeugt, zum Beispiel eine fehlende Variable, zusätzliche Leerzeichen oder unzulässige Zeichen. Nutzen Sie die Vorschau mit einer/einem Testnutzer:in und überprüfen Sie, ob die gerenderte Absender-Adresse mit Ihrer konfigurierten Absenderdomain übereinstimmt.
Wie erstelle ich eine dynamische Antwortadresse?
Verwenden Sie Liquid im Feld Reply-To, wenn Ihr Workspace die Konfiguration dynamischer Antwortadressen unterstützt. Kombinieren Sie es bei Bedarf mit Ihren Einstellungen für den Absender-Anzeigenamen. Weitere Informationen zu Workspace-spezifischen Optionen finden Sie unter E-Mail-Einstellungen.
Fehlerbehebung bei Liquid-Fehlern
Warum funktioniert mein Liquid-Code nicht, obwohl er korrekt aussieht?
Wenn Ihr Liquid-Code syntaktisch korrekt erscheint, aber nicht funktioniert, prüfen Sie, ob typografische Anführungszeichen (geschweifte Anführungszeichen wie ' ' oder " ") und typografische Gedankenstriche (Geviertstriche wie —) anstelle von geraden Anführungszeichen (' ' oder " ") und Bindestrichen (-) verwendet werden. Liquid erkennt nur gerade ASCII-Zeichen, sodass typografische Anführungszeichen und Striche zu Parsing-Fehlern führen.
Dies passiert häufig, wenn die macOS-Tastatureinstellung Intelligente Anführungszeichen und Bindestriche verwenden aktiviert ist, die Zeichen beim Tippen im Braze-Dashboard automatisch umwandelt.
So deaktivieren Sie diese Einstellung unter macOS:
- Gehen Sie zu Systemeinstellungen > Tastatur > Texteingabe > Bearbeiten.
- Deaktivieren Sie Intelligente Anführungszeichen und Bindestriche verwenden.
| Beispiel | Typografische Anführungszeichen (funktioniert nicht) | Gerade Anführungszeichen (funktioniert) |
|---|---|---|
| Standardwert | {{${first_name} | default: 'Torchie'}} |
{{${first_name} | default: 'Torchie'}} |
| Bedingung | {% if ${country} contains 'US' %} |
{% if ${country} contains 'US' %} |
Dies gilt für Standardwerte, Bedingungen und jeden anderen Liquid-Code, der Anführungszeichen verwendet. Typografische und gerade Anführungszeichen können auf dem Bildschirm gleich aussehen – vergleichen Sie Ihren Code daher sorgfältig oder fügen Sie ihn in einen Nur-Text-Editor ein.
Weitere Informationen zur Verwendung von Anführungszeichen in Liquid finden Sie unter Liquid-Syntax.
Warum wird der Liquid-Fehler „Unexpected end Token“ angezeigt?
Dieser Fehler weist in der Regel auf zusätzliche oder fehlende geschweifte Klammern hin. Verschachteln Sie {{ }} nicht innerhalb eines anderen Liquid-Tag-Ausdrucks. Verwenden Sie zum Beispiel {{custom_attribute.${date_of_birth} | date: '%s'}}, anstatt die Attributreferenz in ein zusätzliches Klammernpaar einzuschließen.
Warum ist der Connected-Content-Retry für meine In-App-Nachricht nicht verfügbar?
Der {% connected_content %}-Tag mit Retry wird nicht für alle Nachrichtentypen unterstützt, einschließlich einiger In-App-Nachrichtenformate. Entfernen Sie die Retry-Parameter oder verwenden Sie einen unterstützten Kanal für Connected-Content-Aufrufe mit Retry.
Warum wird der Fehler „Liquid Error: Comparison of Time with String Failed“ angezeigt?
Dieser Fehler tritt auf, wenn ein angepasstes Attribut vom Typ „Zeit“ oder eine Event-Eigenschaft direkt mit einem leeren Wert (einem leeren String) verglichen wird. Liquid unterstützt keine direkten Vergleiche zwischen verschiedenen Datentypen, wie z. B. einem Zeitobjekt und einem String.
Das folgende Beispiel zeigt einen häufigen Fall, der diesen Fehler verursacht:
1
2
3
{% if {{custom_attribute.${expiration_date}}} == blank %}
<a>Some words</a>
{% endif %}
Dies schlägt fehl, weil ein angepasstes Attribut mit dem Datentyp „Zeit“ nicht mit einem String (blank) verglichen werden kann.
Um dies zu beheben, wandeln Sie das Zeit-Attribut in einen String um, indem Sie es einer Variablen zuweisen und den default-Filter verwenden, wenn das Attribut zum Rendering-Zeitpunkt leer ist:
1
2
3
4
5
{% assign expiration_date = {{custom_attribute.${expiration_date}}} | default: "" %}
{% if expiration_date == blank %}
<a>Example Words</a>
{% endif %}
Wenn Sie ein angepasstes Attribut vom Typ „Zeit“ mit der aktuellen Zeit oder zukünftigen Daten vergleichen, verwenden Sie denselben Ansatz:
1
2
3
4
5
6
7
8
9
{% assign today = 'now' | date: '%s' %}
{% assign month = 'now' | date: '%s' | plus: 2592000 %}
{% assign expiration_date = {{custom_attribute.${expiration_date}}} | default: "" %}
{% if expiration_date == blank %}
<a>Example Words</a>
{% elsif expiration_date >= today and expiration_date >= month %}
<a>More Words</a>
{% endif %}