Een e-mail kun je personaliseren op basis van een waarde uit je database. Bijvoorbeeld de voornaam of een aanhef. Je kunt elk databaseveld in je campagne gebruiken. Maak je gebruik van collecties (een relationele database), dan kun je meer gegevens tonen in je bericht. Denk aan orderinformatie of accountmanagergegevens.
- Personalisatie in de tekst: video's
- Personalisatie in de tekst: Geschreven uitleg
- Voorbeelden uit de video's
Personalisatie in de tekst: video's
In onderstaande video krijg je een introductie over personalisatie in de tekst van de e-mail. Zoals personaliseren in de onderwerpregel, aanhef en in de lopende tekst.
De volgende video gaat over het volgende personalisatie-niveau. Zoals personaliseren op datumveld, een stuk tekst laten verschijnen/verdwijnen en in de afzender de gekoppelde accountmanager tonen.
Personalisatie in de tekst: Geschreven uitleg
Om personalisatie toe te voegen ga je naar een tekstveld en klik je op het persoon-icoon. Vervolgens kies je het databaseveld dat je wilt toepassen. De code wordt automatisch geplaatst in de tekst.
Voorbeeld van personalisatie op basis van een naam:
Het woord Beste en de komma typ je zelf als tekst. Het stuk tussen de accolades is het gepersonaliseerde gedeelte. Spotler MailPro weet aan de hand van de database welke waarde hij voor een contact moet tonen. Zie ook de volgende voorbeelden.
Voorbeelden uit de video's
Personalisatie op een databaseveldwaarde ziet er als volgt uit:
{{ contact.veldnaam }}
Als je een veld met de naam "voornaam" hebt, personaliseer je daar dus als volgt op:
{{ contact.voornaam }}
Wanneer niet voor elk contact het databaseveld is gevuld, kun je het beste een alternatieve waarde gebruiken om gaten in de tekst te voorkomen.
Een fallback of standaardwaarde voeg je op deze manier toe:
{{ contact.voornaam|default('lezer') }}In dit geval komt er "lezer" te staan wanneer de voornaam van een contact onbekend is.
Personalisatie op een datumveld werkt vergelijkbaar. Hier vind je een paar manieren om de datum van het veld "event_date" te tonen met behulp van een Twig filter:
{{ contact.event_date }} --> 2024-01-01
{{ contact.event_date | date('d-m-Y') }} --> 01-01-2024
{{ contact.event_date | date('d F Y') }} --> 01 January 2024
{{ contact.event_date | strftime('%e %B %Y') }} --> 1 januari 2024
De volgende code kun je gebruiken om een stuk tekst alleen te tonen als een contact een waarde heeft bij een databaseveld:
{% if contact.veldnaam is not empty %}
[tekst]
{% endif %}
Hoe de gepersonaliseerde velden uiteindelijk getoond worden in de mail, zie je terug in het gepersonaliseerde voorbeeld.
Test een mail altijd goed voordat je deze definitief verzendt, zeker als je personalisatie gebruikt.
De volledige Twig documentatie kun je vinden op https://twig.symfony.com/.
Personaliseren met collecties
Het is ook mogelijk om collecties te gebruiken om de tekst te personaliseren op basis van relationele data.
Bij een One to One (1:1) of One to many (1:n) relatie, selecteer of schrijf je simpelweg het collectieveld dat je wilt tonen, bijvoorbeeld zo:
{{ collection().adressen.woonplaats }}In dit voorbeeld wordt het adres van een klant getoond:
Het resultaat is dan:
Bij een Many to one (n:1) relatie kun je alle gegevens uit de collectie tonen, of op basis van een filter alleen specifieke items tonen.
Om alle gegevens te tonen, selecteer je het collectieveld en werk je eventueel de gegenereerde code naar wens bij. In onderstaand voorbeeld worden de productnamen van alle bestellingen van een klant getoond.
{% for key, bestellingen in collection().bestellingen %}
{{ bestellingen.productnaam }}
{% endfor %}
Specifieke items tonen
Een contact kan meerdere bestellingen hebben. Misschien wil je niet alle bestellingen in de e-mail tonen, maar alleen de bestellingen die aan bepaalde voorwaarden voldoen. Hiervoor gebruik je een filter in combinatie met collectionSearch().
Let op: een filter dat je gebruikt voor een verzending, conditioneel contentblok of automation flow bepaalt of een contact aan de voorwaarden voldoet. Dat filter wordt niet automatisch toegepast op de collectiegegevens die je in de e-mail toont. Wil je in de e-mail alleen bepaalde bestellingen tonen? Dan moet je het filter ook in de personalisatiecode gebruiken.
In dit voorbeeld heeft een klant meerdere bestellingen. We willen alleen bestellingen met meubels tonen:
- Maak een filter met de voorwaarden waaraan de bestellingen moeten voldoen.
- Maak via het tandwielicoon het ID van het filter zichtbaar.
- Gebruik dit ID met de functie
collectionSearch()in de e-mail.
In dit voorbeeld heeft het filter “Bestelling met meubels” het ID 406882:
{% for key, collection in collectionSearch(406882) %}
{{ collection.bestellingen.productnaam }}
{% endfor %}collectionSearch() zoekt voor het huidige contact naar alle collectie-items die aan het gekozen filter voldoen. Alleen de productnamen van bestellingen met meubels worden daardoor getoond.
Houd rekening met het aantal gevonden collectie-items:
- Als één bestelling aan het filter voldoet, wordt één productnaam getoond.
- Als meerdere bestellingen aan het filter voldoen, toont de loop alle bijbehorende productnamen.
- Als geen enkele bestelling aan het filter voldoet, wordt er niets getoond.
Het resultaat is dan bijvoorbeeld:
Wil je altijd precies één collectie-item tonen? Zorg er dan voor dat het filter voor ieder contact maximaal één item kan opleveren of pas een limiet toe in de optionele parameters.
Optionele parameters van collectionSearch()
De volledige functieaanroep gebruikt positionele parameters:
collectionSearch(filterId, limit, orderColumn, orderDirection)
-
filterId(verplicht): het ID van het filter waarmee passende collectierecords worden geselecteerd. -
limit(optioneel): het maximale aantal records dat wordt teruggegeven. De standaardwaarde is25. -
orderColumn(optioneel): het veld van het gevonden collectierecord waarop de resultaten moeten worden gesorteerd. De standaardwaarde isid. -
orderDirection(optioneel):ascvoor oplopende ofdescvoor aflopende volgorde. De standaardwaarde isasc.
Vul de optionele parameters in deze exacte volgorde in.
De volgende code is bijvoorbeeld bedoeld om passende bestellingen oplopend op veld order_date te sorteren en vervolgens het eerste record terug te geven:
{% for key, collection in collectionSearch(406882, 1, 'order_date', 'asc') %}
{{ collection.bestellingen.productnaam }}
{% endfor %}De bedoelde verwerkingsvolgorde is: pas het filter toe, sorteer de passende collectierecords en pas daarna de limiet toe.
Conditionele contentblokken en conditioneel verzenden
Naast personalisatie in je bericht toepassen is het ook mogelijk om te personaliseren aan de hand van filters. Dit noemen we conditionele content. Hiermee kun je een blok content alleen tonen of de hele mail alleen sturen naar relevante ontvangers. Lees hier meer over in het artikel: Hoe personaliseer ik e-mails op basis van gegevens in mijn database.