· Pauline · How-to · 8 min read
Power Fx in Customer Insights-E-Mails: Ein praktischer Leitfaden
Power Fx gibt es jetzt auch für die E-Mail-Personalisierung in Customer Insights – Journeys. Was die Funktionen können, Copy-Paste-Formeln für den Alltag und warum ich sie trotzdem nicht ins Marketing-Team geben würde.
Bitte beachten: Der Inhalt ist zum Zeitpunkt der Erstellung korrekt. Es ist möglich, dass Microsoft in der Zwischenzeit Änderungen vorgenommen hat.
Microsoft hat kürzlich Power Fx, die Low-Code-Formelsprache, die bereits Canvas Apps, Power Apps-Formelfelder und Copilot Studio antreibt, in die E-Mail-Personalisierung in Dynamics 365 Customer Insights – Journeys integriert. Statt ein Merge-Feld aus einem Dropdown auszuwählen, kannst du jetzt eine Formel direkt auf einen personalisierten Textbaustein in deiner E-Mail anwenden: Fallback-Werte, Textformatierung, String-Manipulation, alles im Excel-Stil.
Kommen wir direkt zur Sache: Ich halte Power Fx für eine wirklich gut designte, zugängliche Sprache für Citizen Developer. Diese Meinung verteidige ich hier aber nicht. Womit ich mich nicht so richtig anfreunden kann, ist die Vorstellung, dass Marketing-Anwender diese Formeln von Hand direkt in einer Live-E-Mail schreiben sollen. Schauen wir uns an, was tatsächlich verfügbar ist und wie du es nutzt, denn hier steckt echter Mehrwert, wenn man es richtig einordnet.
Was Power Fx eigentlich ist
Power Fx wird von Microsoft als „Low-Code-Sprache …, die in der gesamten Microsoft Power Platform verwendet wird” beschrieben, konzipiert wie Excel-Formeln. Das Designziel ist eine einzige Sprache, die skaliert „von No-Code für Menschen, die noch nie programmiert haben, bis zu Pro-Code für den erfahrenen Profi, ohne Lern- oder Umschreibklippen dazwischen”.
Das ist der Pitch, und er hält im Großen und Ganzen. Wenn du schon mal einen VLOOKUP geschrieben oder ein IF in Excel verschachtelt hast, wird dir die Syntax vertraut vorkommen. Genau deshalb taucht sie an verschiedenen Stellen in der Power Platform auf, jetzt eben auch in der E-Mail-Personalisierung in Customer Insights.
Wie es im E-Mail-Editor tatsächlich funktioniert
Das ist keine freie oder neue Skript-Box, die einfach in den E-Mail-Builder hinzugefügt wurde. Die Formel hängt an genau einem Personalisierungsfeld:
- Wähle im E-Mail-Editor den dynamischen Text (Personalisierungsfeld) aus, das du transformieren möchtest.
- Öffne Personalisierung und klappe den Bereich Erweitert auf.
- Aktiviere Power Fx-Formel. Um das zu sehen, musst du das aktuell zuerst in den Feature-Switches aktivieren.
- Schreibe deine Formel und verwende den Anzeigenamen des Feldes als Variable. Setze ihn in einfache Anführungszeichen, wenn der Name Leerzeichen enthält, z. B.
Upper('Event Name'). - Prüfe die Output-Box, die sich live beim Tippen aktualisiert, um sicherzustellen, dass das Ergebnis stimmt.
- Wähle Speichern.
Ein paar praktische Einschränkungen, die du kennen solltest, bevor du loslegst:
- Ein Feld pro Formel. Eine Formel kann nur mit dem einzelnen Personalisierungsfeld arbeiten, an das sie gebunden ist, plus dem literalen Text, den du selbst hinzufügst. Du kannst nicht zwei verschiedene Merge-Felder, etwa
FirstNameundCompanyName, in einer Formel zusammenführen; das muss vorgelagert passieren, bevor die Daten die E-Mail erreichen. - 500 Zeichen, 5 Verschachtelungsebenen. Die Formel-Box hat ein hartes Zeichenlimit und begrenzt, wie tief du Funktionen verschachteln kannst.
- Sie läuft zum Sendezeitpunkt, nicht früher in der Journey, sodass sie immer die aktuellsten Kontaktdaten widerspiegelt.
- Fehler scheitern leise. Wenn eine Formel einen Fehler wirft, blockiert Customer Insights den Versand nicht. Stattdessen fällt es einfach auf den ursprünglichen oder Standardwert des Feldes zurück. Gut für die Zustellbarkeit, aber wichtig im Hinterkopf zu behalten, wenn du darüber nachdenkst, was „sicher” hier eigentlich bedeutet (mehr dazu am Ende).
Die Funktionen, die für die E-Mail-Personalisierung verfügbar sind
Das Panel Supported functions im Formeleditor passt sich an den Datentyp des gewählten Feldes an. Für ein Textfeld (der Fall, der so gut wie jedes Marketing-Personalisierungstoken abdeckt, also Namen, Firmennamen, Promo-Codes) sieht das relevante Set so aus, gruppiert danach, wie du es tatsächlich einsetzt.
Text verbinden
&für Verkettung, z. B.FirstName & " — Register Today"Concatenate(t1, t2, ...)verbindet mehrere Werte, z. B.Concatenate("Hi ", FirstName, "!")
Groß-/Kleinschreibung ändern
Upper(text): ALLES GROSSLower(text): alles kleinProper(text): Jedes Wort Großgeschrieben
Text bereinigen und messen
Trim(text): entfernt führende, folgende und überzählige LeerzeichenLen(text): Zeichenanzahl
Textteile extrahieren
Left(text, count)/Right(text, count): die ersten oder letzten N ZeichenMid(text, start, count): Zeichen ab einer bestimmten Position
Text bearbeiten
Substitute(text, find, replace): ersetzt jedes Vorkommen eines SubstringsReplace(text, start, count, new): tauscht Zeichen an einer bestimmten Position
Mit fehlenden Daten umgehen
Coalesce(value1, value2, ...): gibt den ersten nicht-leeren Wert zurück, also deine Fallback-Logik
Das sind zwölf Bausteine für Text, klein genug, um sie im Kopf zu behalten – ein Grund, warum sich das eher machbar als einschüchternd anfühlt. Wählst du stattdessen ein Zahlen- oder Datum/Zeit-Feld, zeigt dasselbe Panel ein anderes Set, unter anderem Text(value, format, locale) für gebietsschema-korrekte Formatierung, gut zu wissen, wenn du in mehrere Märkte versendest. Ein Beispiel dazu weiter unten.
Formeln zum Kopieren und Einfügen
Diese sind für gängige reale Marketing-Szenarien geschrieben. Tausche die Feldnamen (FirstName, MemberNumber, EventName, PromoCode, RenewalDate) gegen die Namen deiner tatsächlichen Personalisierungstoken in deiner Umgebung, und denk daran: Jede Formel unten ist für ein einzelnes Feld geschrieben, aus den oben erklärten Gründen.
1. Begrüßung mit sicherem Fallback (kein „Hi ,” mit Leerzeichen an der falschen Stelle mehr)
"Hi " & Coalesce(FirstName, "there") & ","Maya → Hi Maya, / (leer) → Hi there,
2. Konsistente Namensschreibweise aus unsauberen CRM-Daten
Proper(Trim(FirstName))Nützlich, wenn Leads aus Webformularen, Importen oder von Partnern kommen und als " JOHN ", "john" oder "John Doe" ankommen. Das normalisiert die Schreibweise und entfernt überflüssige Leerzeichen, bevor es je den Posteingang eines Kunden erreicht.
3. Ein schneller Trick: die gerenderte Länge eines Feldes prüfen, bevor du es festlegst
Len(Coalesce(FirstName, "Friend") & " — Don't Miss This Offer")Diese Formel ist nicht dafür gedacht, live zu bleiben. Füge sie in die Formel-Box ein und lies die Zahl in der Output-Vorschau ab, um zu sehen, wie lang der personalisierte Text tatsächlich rendert, sobald ein echter Vorname (oder dein Fallback) eingesetzt ist. Mobile Clients beginnen typischerweise zwischen 40 und 60 Zeichen, Betreffzeilen abzuschneiden, sodass du damit den Fall erwischst, in dem „Alexandra” dich über das Limit drückt, obwohl dein Platzhaltertext noch gepasst hatte. Sobald du das geprüft hast, tausche die echte Formel (wie #2 oben) ein, bevor du speicherst.
4. Eine Loyalty- oder Kontonummer für die Personalisierung maskieren
"Card ending in " & Right(MemberNumber, 4)1234567890 → Card ending in 7890
Ein gängiges Muster für Loyalty- und Verlängerungs-E-Mails: Du willst, dass die Nachricht persönlich wirkt („deine Karte, dein Konto”), ohne je die vollständige Nummer im E-Mail-Body offenzulegen. Weil Formelfehler hier auf den ursprünglichen Wert zurückfallen, lohnt es sich, diese Formel besonders sorgfältig zu testen. Siehe die Notiz am Ende dazu, was dieser Fallback für eine Maskierungsformel tatsächlich bedeutet.
5. Promo-Codes für die Anzeige aufhübschen
Upper(Substitute(PromoCode, "_", " "))summer_sale25 → SUMMER SALE25
Praktisch, wenn Promo-Codes in einem systemfreundlichen Format gespeichert sind (Unterstriche, keine Leerzeichen), du sie aber sauber in kundenseitigem Text lesen möchtest.
6. Mehrere Funktionen auf einem Feld kombinieren
Concatenate("Hi ", Proper(Coalesce(Trim(FirstName), "there")), "!")Das verschachtelt Fallback, Bereinigung und Groß-/Kleinschreibung in einer einzigen Begrüßungszeile, alles aus einem einzigen Personalisierungsfeld. Genau die Art Formel, die zeigt, warum Power Fx zwei oder drei separate Conditional-Merge-Felder durch eine Zeile ersetzen kann.
7. Gebietsschema-korrekte Währung und Verlängerungsdatum
Text(OrderTotal, "#,##0.00", "de-DE")129 → 129,00
Text(RenewalDate, "dddd, mmmm d", "de-DE")ein Sonntag im Dezember → Sonntag, Dezember 31
Wenn du in mehr als einen Markt sendest, ist das der realistischere Anwendungsfall für die oben erwähnten Zahlen-/Datumsfunktionen: derselbe zugrundeliegende Wert, formatiert mit dem richtigen Dezimaltrennzeichen und dem richtigen ausgeschriebenen Wochentag und Monat für das Gebietsschema des Empfängers, ohne separate Templates pro Land pflegen zu müssen.
8. Zahlen für konsistente Anzeige formatieren
"You're founding member No. " & Text(MemberNumber, "000")7 → You’re founding member No. 007
Eine kurze Referenznummer mit führenden Nullen aufzufüllen, damit sie immer mit der gleichen Anzahl Stellen angezeigt wird. Ein kleines Detail, das gut für Founding-Member-Badges, Gewinnspiel- oder Wettbewerbseinträge und ähnliche Exklusivitäts- oder Gamification-Elemente funktioniert.
Fazit
Nichts davon ist wirklich schwer. Power Fx verdient sich sein „Low-Code”-Label, und wenn du je eine Excel-Formel gebaut hast, braucht diese Liste kein neues mentales Modell. Als Werkzeug für Citizen Developer (IT, Marketing Ops, CRM-Admins) ist das eine solide Ergänzung.
Was ich nicht mittrage, ist, das allgemeinen Marketing-Anwendern in die Hand zu geben, damit sie es live in einer Kampagnen-E-Mail schreiben. Fehler scheitern hier leise: Ein Formelfehler blockiert den Versand nicht, er fällt einfach auf den ursprünglichen Wert zurück, sodass eine kaputte Maskierungsformel die vollständige Kontonummer zeigt, still und leise, ohne dass irgendetwas darauf hinweist, bis ein Kunde es bemerkt. Meine Sicht: Jemand mit Citizen-Developer-Mindset baut und testet eine kleine Formelbibliothek wie die oben; Marketing-Anwender kopieren, fügen ein oder nutzen Content-Blöcke. Gleicher Nutzen, ohne dass jeder Kampagnenmanager zum Teilzeit-Formelautor wird.
Auf meiner Wunschliste stehen ein paar Funktionen, die das wirklich nützlicher machen würden:
If/Switchfür bedingte Begrüßungen oder Inhalte. Es gibt bereits ein separates Feature „Bedingter Text” dafür, das wohl ohnehin besser zu Marketing-Anwendern passt, aber ich hätte es trotzdem gerne auch in Power Fx, statt zwischen zwei verschiedenen Personalisierungstools hin und her zu springen, um eine E-Mail zu bauen.- Zwei Datenpunkte in einer Formel kombinieren. Aktuell bekommt eine Formel genau ein Feld, Punkt.
- Grundlegende Datumsarithmetik (
DateDiff) für Dinge wie „3 Tage bis zum Ende deiner Testphase” oder „es sind 90 Tage seit deiner letzten Bestellung vergangen”. - Anders als bei den anderen, wenn du sie ausprobierst, gibt
Now()aktuell keinen Fehler zurück und wirkt so, als würde es funktionieren. Beim tatsächlichen Versand einer E-Mail zeigt es aber nicht das aktuelle Datum, sondern das Datum des dynamischen Feldes, das du gewählt hast.
Referenzen: Transform dynamic text with Power Fx formulas – Dynamics 365 Customer Insights | Microsoft Learn, Power Fx overview – Microsoft Learn
Hast du Fragen, Ideen oder Anmerkungen? Meld dich gern.