Extra personalisatievariabelen

Je personaliseert mailings doorgaans met gegevens van de geadresseerde. Alle velden die betrekking hebben op de geadresseerde kunnen als personalisatievariabele worden gebruikt. De velden 'voornaam', 'achternaam', 'woonplaats' en 'emailadres' komen bijvoorbeeld overeen met de volgende personalisatievariabelen:

  • {$profile.voornaam}
  • {$profile.achternaam}
  • {$profile.woonplaats}
  • {$profile.emailadres}

Daarnaast kun je gebruik maken van extra personalisatievariabelen in de vorm van voorgedefineerde objecten. Een overzicht hiervan vind je hieronder.

Profielen

De gelaagde databasestructuur van Copernica maakt het mogelijk om mailings te versturen aan zowel profielen als subprofielen. Die gelaagdheid bepaalt de beschikbare personalisatievariabelen.

Je maakt altijd gebruik van een {$profile}-object ongeacht of je de mailing verstuurt aan een profiel of subprofiel. In het eerste geval bevat het object de gegevens van het profiel waaraan je de mailing verstuurt. Wanneer de mailing gericht is aan een subprofiel bevat het object de gegevens van het profiel dat bij het subprofiel hoort.

Het profiel-object heeft de volgende eigenschappen:

  • {$profile.id}: numerieke identifier van het profiel
  • {$profile.extra}: de extra data van het profiel (deze kan uitsluitend door middel van de API worden ingesteld)
  • {$profile.secret}: de geheime code die bij het profiel is opgeslagen
  • {$profile.code}: een alias voor {$profile.secret} (deze is dus identiek aan de geheime code)
  • {$profile.created}: tijdstip waarop het profiel is aangemaakt (het gebruikte formaat is JJJJ-MM-DD, uu:mm:ss)
  • {$profile.referrers}: een optioneel array van profielen die verwijzen naar dit profiel d.m.v. een referentieveld
  • {$profile.veldnaam}: biedt personalisatie op basis van alle beschikbare velden binnen het profiel
  • {$profile.interesse}: biedt personalisatie op basis van alle beschikbare interesses binnen het profiel (deze heeft de waarde 'yes' of 'no')
  • {$profile.database.id}: het id van de database waartoe het profiel behoort
  • {$profile.database.name}: de naam van de database waartoe het profiel behoort
  • {$profile.collectienaam}: maakt het mogelijk om alle collecties binnen een subprofiel te benaderen

Subprofielen

Bij het versturen van mailings naar subprofielen kun je gebruik maken van het {$subprofile}-object. De bijbehorende eigenschappen zijn als volgt:

  • {$subprofile.id}: numerieke identifier van het subprofiel
  • {$subprofile.secret}: de geheime code die bij het profiel is opgeslagen
  • {$subprofile.code}: een alias voor {$subprofile.secret} (deze is dus hetzelfde als de geheime code)
  • {$subprofile.created}: tijdstip waarop het subprofiel is aangemaakt (het gebruikte formaat is JJJJ-MM-DD, uu:mm:ss)
  • {$subprofile.profile}: het profiel-object (zie hierboven) waartoe het subprofiel behoort
  • {$subprofile.veldnaam}: biedt personalisatie op basis van alle beschikbare velden binnen het subprofiel

Het kan zijn dat je bij het creëren van een template of document nog niet weet of je de mailing aan een profiel of een subprofiel gaat versturen. In dat geval maak je gebruik van het {$destination}-object. Deze functioneert als alias van zowel het {$profile}- als het {$subprofile}-object. Zo personaliseer je de mailing automatisch aan de geadresseerde.

Drag-and-drop-templates

Bij het versturen van drag-and-drop-templates kun je gebruik maken van het {$template} en {$mailing}-object. De bijbehorende eigenschappen zijn als volgt:

Templateeigenschappen

  • {$template.id} ID van het template
  • {$template.name} Naam van het template
  • {$template.created} Tijdstip van het aanmaken van het template
  • {$template.lastmodified} Tijdstip van de laatste wijziging aan het template

Mailingeigenschappen

  • {$mailing.sendtime}: tijdstip waarop de mailing wordt verstuurd, in YYYY-MM-DD hh:mm:ss format
  • {$mailing.sendtimestamp}: zelfde als de sendtime property, maar dan als unix timestamp (aantal seconden sinds 1 jan 1970)
  • {$mailing.snapshot.name}: de naam van het document dat voor de mailing wordt gebruikt
  • {$mailing.snapshot.created}: tijdstip waarop een snapshot van het document is gemaakt (YYYY-MM-DD hh:mm::ss notatie)
  • {$mailing.snapshot.subject}: onderwerp van de mailing
  • {$mailing.type}: geeft het type mailing aan ('mailing', 'followup', 'abtest' of 'splitrun')
  • {$mailing.mass}: geeft aan of de mailing als bulkmailing is verzonden (true of false)
  • {$mailing.test}: geeft aan of de mailing als testmailing is verzonden (true of false)

HTML-documenten

Bij het versturen van HTML-documenten kun je gebruik maken van het {$document}-, {$template}-, {$mailing}- en {$account}-object. De bijbehorende eigenschappen zijn als volgt:

Documenteigenschappen

  • {$document.id}: ID van het document
  • {$document.name}: huidige naam van het document
  • {$snapshot.name}: naam van het document op het moment van verzending (zelfs als de naam achteraf gewijzigd is)
  • {$document.created}: tijdstip waarop het document is aangemaakt
  • {$document.lastmodified}: tijdstip waarop het document voor het laatst gewijzigd is
  • {$document.template}: template-object
  • {$document.language}: taal-instellingen van het document

Template-eigenschappen

  • {$template.id}: ID van het template
  • {$template.name}: naam van het template
  • {$template.description}: beschrijving van het template
  • {$template.pdf}: naam van het originele PDF-bestand
  • {$template.pages}: aantal pagina's van het PDF-bestand
  • {$template.created}: tijdstip waarop het template is aangemaakt
  • {$template.lastmodified}: tijdstip waarop het template voor het laatst gewijzigd is
  • {$template.archive}: eventuele archivering van het template
  • {$template.quality}: de meegegeven kwaliteitsinstellingen van PDF-templates (screen/press/print)
  • {$smarty.version}: Smarty-versie van het template

Account- en mailingeigenschappen

  • {$account.id}: numerieke identifier van je account
  • {$account.name}: naam van je account
  • {$mailing.sendtime}: tijdstip waarop de mailing is verstuurd (het gebruikte formaat is JJJJ-MM-DD, uu:mm:ss)
  • {$mailing.sendtimestamp}: dezelfde functie als de sendtime-eigenschap, maar dan in de vorm van een Unix-timestamp (het aantal seconden sinds 1 januari 1970)
  • {$mailing.trigger}: optioneel object dat de mailing heeft 'getriggerd'
  • {$mailing.snapshot.name}: de naam van het document dat voor de mailing is gebruikt
  • {$mailing.snapshot.created}: tijdstip waarop er een snapshot van het document is gemaakt (het gebruikte formaat is JJJJ-MM-DD, uu:mm:ss)
  • {$mailing.snapshot.subject}: onderwerp van de mailing

Integratie variabelen

Als je een integratie hebt gekoppeld in de web-module van Marketing Suite, kun je informatie vanuit de integratie direct in je drag-and-drop-templates gebruiken. Tijdens het toevoegen van een integratie heb je een unieke naam opgegeven als identifier. Deze identifier is tevens de naam van de variabele waarmee je gegevens vanuit de integratie kunt ophalen.

Als je bijvoorbeeld een koppeling met Magento hebt gemaakt en 'magento' als identifier hebt gebruikt, kun je de totaalprijs van een bestelling als volgt ophalen: {$magento.order.1234.grand_total}.

De mogelijkheden verschillen per integratie. Hieronder vind je per integratie hoe je de variabelen kunt gebruiken:

Extra personalisatievariabelen toevoegen

Naast het gebruik van standaardobjecten is het ook mogelijk om eigen personalisatievelden toe te voegen. Je voegt deze op templateniveau toe onder 'Configuratie -> Extra personalisatievelden'. Vervolgens voorzie je deze van waarden. Je vindt deze optie in je document onder 'Personalisatievariabelen'.

De waarde kan worden opgehaald door middel van de {$property.VELDNAAM}-variabele, bijvoorbeeld wanneer je een bepaalde waarde meerdere keren wilt laten terugkomen in een template of document.

Itereren over subprofielen

Om alle subprofielen binnen een collectie weer te geven kun je een foreach functie gebruiken.

{foreach $item in $profile.collectie}
    {$item.veldnaam}
{/foreach}

Als je niet alle velden wilt weergeven kun je gebruik maken van de if functie in combinatie met de foreach functie.

{foreach $item in $profile.collectie}
    {if $item.status == "InWinkelmandje"}
        {$item.veldnaam}
    {/if}
{/foreach}

Als er geen subprofiel bestaat kun je automatisch iets anders laten zien.

{foreach $item in $profile.collectie}
    Als er subprofielen zijn
{foreachelse}
    Als er geen subprofielen zijn
{/foreach}

Het gebruik van de <unchanged> tag in de drag-and-Drop-editor

De drag-and-drop-editor ondersteunt een speciale <unchanged> tag die je kunt gebruiken om te voorkomen dat de editor HTML-code herschrijft. Normaal gesproken verbetert de editor fouten en inconsistenties in de HTML-code die je handmatig invoert. Echter, als je de oorspronkelijke code wilt behouden, kun je dat doen door gebruik te maken van de <unchanged> tag.

De <unchanged> tag is vooral handig bij het combineren van Smarty personalisatiecode met meer complexe HTML-structuren zoals tabellen. Als je Smarty en HTML combineert, dan voer je eigenlijk "ongeldige" HTML code in, die na de personalisatie pas geldig wordt. De editor heeft dit niet altijd in de gaten en kan soms de door jou ingevoerde HTML-code verbeteren, wat mogelijk niet overeenkomt met je bedoelingen. Dit gebeurt bijvoorbeeld wanneer een Smarty-instructie (zoals {foreach} of {if}) wordt opgenomen binnen een HTML-tabel.

Bekijk het volgende voorbeeld:

<table>
    <tr>
        <th>Kop 1</th>
        <th>Kop 2</th>
    </tr>
    {foreach $items as $item}
    <tr>
        <td>{$item.property1}</td>
        <td>{$item.property2}</td>
    </tr>
    {/foreach}
</table>

Wanneer je de bovenstaande code opslaat, leest de drag-and-drop editor de HTML-code in en hergroepeert deze. De editor transformeert de code naar zoiets als dit:

{foreach $items as $item} {/foreach}<table class=" cke_show_border">
    <tbody>
        <tr>
            <th>Kop 1</th>
            <th>Kop 2</th>
        </tr>
        <tr>
            <td>{$item.property1}</td>
            <td>{$item.property2}</td>
        </tr>
    </tbody>
</table>

Deze wijziging is echter mogelijk niet wenselijk. Met de <unchanged> tag kun je aangeven dat bepaalde code ongewijzigd moet blijven:

<table>
    <tr>
        <th>Kop 1</th>
        <th>Kop 2</th>
    </tr>
    <!--<unchanged>{foreach $items as $item}</unchanged>-->
    <tr>
        <td>{$item.property1}</td>
        <td>{$item.property2}</td>
    </tr>
    <!--<unchanged>{/foreach}</unchanged>-->
</table>

Zoals je ziet, moet de tag worden ingesloten binnen HTML-commentaar .

Let op: de unchanged-tag moet altijd binnen een table element (table, tr of td) komen te staan

Data en tijden dynamisch weergeven

Met behulp van de {$smarty.now} functie van Smarty, kun je dynamisch data en tijden tonen in mailings en landingspagina's.

We zetten enkele mogelijkheden op een rij. Een volledig overzicht vind je op de website van Smarty.

Enkele toepassingen

  • Toon automatisch het huidige weeknummer of maand bovenaan een nieuwsbrief
  • Stuur het tijdstip van invullen automatisch mee in een webformulier
  • Sluit een enquete automatisch nadat de uiterste invuldatum is verstreken

Om een datum (in seconden sinds 1970) te tonen gebruik je {$smarty.now}.

Met de date_format modifier kun je vervolgens de seconden omzetten naar een ander formaat.

Voorbeeld: om de huidige datum om te zetten naar het formaat YYYY-MM-DD dat je kunt opslaan in een datumveld gebruik je:

{$smarty.now|date_format:"%Y-%m-%d"}

Hieronder zie je een aantal voorbeelden:

{$smarty.now|date_format}                // Jan 4, 2024
{$smarty.now|date_format:"%D"}           // 01/04/24
{$smarty.now|date_format:"%d-%m-%Y"}     // 04-01-2024
{$smarty.now|date_format:"%A, %e %B %Y"} // Tuesday, 4 January 2024
{$smarty.now|date_format:"%A"}           // Tuesday
{$smarty.now|date_format:"%c"}           // Tu 04 jan 2024 15:20:28 CET

Een volledige lijst van mogelijkheden kun je vinden op de officiele documentatie van Smarty.

Data in een andere taal en tijdzone tonen

Een datum wordt automatisch weergegeven in de taal en tijdzone van het template of document. Om de weergavetaal van personalisatie te bekijken, kies je linksonderaan de template of document Personalisatie-instellingen.

Morgen, overmorgen en de dag daar weer na

Is je actie slechts een dag geldig? Smarty voorziet hierin.

{"tomorrow"|date_format:"%A, %B %e, %Y"}

Overmorgen:

{"+2 days"|date_format:"%A, %B %e, %Y"}

Enzovoorts...

Timestamp vs smarty.now

Naast {$smarty.now} kun je ook gebruik maken van {$timestamp}. Timestamp berekent het aantal seconden die zijn verstreken sinds de UNIX epoch tijd (middennacht 1970-01-01 00:00:00 UTC). In tegenstelling tot smarty.now, die standaard gebruik maakt van de locale 0000-00-00. Timestamp is nuttig als je te maken hebt met verschillende tijdzones. Het kan nu 13u00 zijn in Nederland. In Amerika pas over 7 uur. Het aantal seconden verstreken sinds 1970-01-01 00:00:00 UTC is echter een vast gegeven, en dus tijdzone onafhankelijk.