Personalizzare i messaggi

Premessa

È possibile inserire in un messaggio in formato html del ″testo dinamico″ (o ″campo dinamico″) per personalizzare il messaggio. Ad esempio, per fare in modo che il saluto iniziale “Gentile …,” sia personalizzato con il nome di ogni destinatario. Oppure includendo contenuti dall’esterno.

Obiettivo

Saper utilizzare il testo dinamico per personalizzare qualunque parte del messaggio.

Codici supportati

Ecco un elenco dei principali codici dinamici gestiti da Contactsend.

Nome del codice Apertura Chiusura Canali Descrizione
USER_DATA_TAGS ${ }$ tutti Valori presi, per ciascun destinatario, da campi del database associato al gruppo email di spedizione.
INLINE_CONTENT_TAGS @( )@ email URL che permette di incorporare fisicamente nel messaggio un file (ad esempio delle immagini).
DYNAMIC_INLINE_CONTENT_TAGS ^( )^ email Simile a INLINE_CONTENT_TAGS ma supporta anche altri codici dinamici nell’URL, come: USER_DATA_TAGS, NOTES_TAGS
TRACKED_URL_TAGS %{ }% email Genera la sintassi per il tracciamento statistico dei click sui link del messaggio.
DYNAMIC_TRACKED_URL_TAGS ^{ }^ email Simile a TRACKED_URL_TAGS ma supporta l’inserimento di altri codici dinamici, come: USER_DATA_TAGS, NOTES_TAGS
ERB_TAGS <% %> tutti Interpreta eventuale codice ERB presente nel template.
EXTERNAL_SOURCE_TAGS @{ }@ tutti Viene recuperato e incluso nel messaggio il contenuto (tipicamente un file html) specificato in un URL.
INCLUDE_URL_TAGS <@ @> tutti Simile ad EXTERNAL_URL_TAGS ma supporta anche parametri dinamici nell’URL, come: USER_DATA_TAGS, NOTES_TAGS
NOTES_TAGS <{ }> tutti Permette di includere il valore di una delle etichette salvate.

Di seguito, per le diverse parti del messaggio, viene elencato l’ordine (dall’alto verso il basso) in cui vengono processati. L’ordine è importante nel caso si voglia utilizzare un codice dinamico in una determinata fase della creazione delle spedizioni: per poterlo fare, è necessario che Contactsend in quella fase abbia già estratto i valori relativi a quel codice.

EMAIL

Oggetto:

1. USER_DATA_TAGS
2. ERB_TAGS

Mail from e Reply to:

1. USER_DATA_TAGS

Corpo in HTML

1. EXTERNAL_SOURCE_TAGS
2. INLINE_CONTENT_TAGS
3. TRACKED_URL_TAGS
4. NOTES_TAGS
5. USER_DATA_TAGS
6. ERB_TAGS
7. INCLUDE_URL_TAGS
7a. TRACKED_URL_TAGS
7a. TRACKED_URL_TAGS
8. DYNAMIC_INLINE_CONTENT_TAGS
9. DYNAMIC_TRACKED_URL_TAGS
10. USER_DATA_TAGS

Corpo in versione testuale:

1. EXTERNAL_SOURCE_TAGS
2. TRACKED_URL_TAGS
3. NOTES_TAGS
4. USER_DATA_TAGS
5. ERB_TAGS
6. INCLUDE_URL_TAGS
6a. TRACKED_URL_TAGS
6b. USER_DATA_TAGS
7. DYNAMIC_TRACKED_URL_TAGS
8. USER_DATA_TAGS

SMS

Corpo del messaggio:

1. USER_DATA_TAGS
2. INCLUDE_URL_TAGS
2a. TRACKED_URL_TAGS
2b. USER_DATA_TAGS
3. ERB_TAGS

Personalizzazione semplice

USER_DATA_TAGS

Possiamo applicare personalizzazione di base al nostro messaggio attraverso il codice “USER_DATA_TAGS” che ci permette di inserire dei valori contenuti nei campi del database associato al gruppo email che stiamo utilizzando per la spedizione.

Procedimento

  • Verificare che nel database associato al gruppo email in cui si sta creando la spedizione, sia presente un campo adatto al nostro scopo.

Immaginiamo ad esempio di voler inserire un saluto iniziale personalizzato per ciasun destinatario: “Gentile Mario” per gli utenti che si chiamano Mario, gentile Alessia per chi si chiama Alessia, e così via. Sarà necessario avere nel nostro database un campo contenente il nome di ciascun utente.

Poniamo che questo campo si chiami NOME (scritto tutto in maiuscolo).

  • A questo punto posizioniamoci (tramite editor visuale, PageBuilder, o direttamente nel codice html) nel punto corretto del messaggio.
  • Scriviamo: Gentile ${NOME}$

Attenzione: il campo dovrà essere scritto esattamente com’è scritto nel database, rispettando maiuscole e minuscole (case sensitive).

Se ci troviamo al passaggio “Contenuto del messaggio” del processo di Crea > Spedizione (email/sms) potremo utilizzare gli appositi menù a tendina per inserire nell’html i campi dinamici. Nel caso di un messaggio email potremo personalizzare sia l’oggetto che il corpo del messaggio, che i dati mittenti (se abilitato).

È possibile inserire più di un testo dinamico nel messaggio, ad esempio:

${Saluto_iniziale}$ residente in ${indirizzo}$ , la informiamo che la sua azienda, ${NOME_AZIENDA}$ è stata scelta…

È possibile modificare in modo automatico il valore dei campi inclusi dinamicamente nel messaggio, utilizzando i:

Modificatori di campo

Sono stati implementati dei modificatori per i campi utente ovvero per i campi accessibili tramite la sintassi ${nome_campo}$ . I modificatori consentono di elaborare il contenuto di un campo utente, modificandone la visualizzazione. E’ possibile applicare più modificatori allo stesso campo utente, creando una pipeline.

La sintassi per la costruzione del modificatore è la seguente: ${nome_campo|modificatore}$ dove:

  • nome_campo: è il nome del campo presente nel db utenti. E’ case sensitive, occorre scriverlo così come è stato inserito nel db di riferimento, rispettando maiuscole e minuscole.
  • modificatore: il modificatore che si vuole applicare a quel campo

Di seguito modificatori introdotti e relativi esempi:

DEFAULT

Permette di avere un valore di default in caso venga applicato ad un valore vuoto o nullo; se il valore non è vuoto o nullo, ritorna il valore stesso.

Esempio:

(nome = "Mario") ${nome|default:"utente"}$ => "Mario"

(nome = "") ${nome|default:"utente"}$ => "utente"

Nell’esempio se il campo è vuoto “”, sarà visualizzato utente, altrimenti il valore del campo, nel ns esempio Mario.

Caso particolare: utilizzo all’interno del tag html “a”. Supponiamo di voler usare il modificatore all’interno dell’attributo href in questo modo: href="${Domain|default:"http://nostrosito.com"}$" per fare in modo che ciascun utente veda l’url contenuto nel suo campo Domain, e se esso è vuoto veda invede nostrosito.com

La sintassi qui sopra NON funzionerà, producendo un url non valido. Utilizzare invece: href="${Domain|default:'http://nostrosito.com'}$" dove l’URL di default è circondato da ‘ (apice semplice) e non da ” (doppie virgolette).

DATE_FORMAT

Formatta il campo data secondo diversi parametri di formattazione, riportati di seguito: %d – giorno del mese come numero decimale (range da 00 a 31) %m – mese come numero decimale (range da 01 a 12) %y – anno come numero decimale su due cifre (range da 00 a 99) %Y – anno come numero decimale su quattro cifre

Esempio:

(data_nascita = 2010-04-15) ${data_nascita|date_format:"%d/%m/%Y"}$ => "15/04/2010"**

Il campo contenente la data di nascita deve essere in formato mysql, ovvero yyyy-mm-dd Se la data non è in formato mysql utilizzare prima modificatore date_parse (v. di seguito) e quindi date_format.

DATE_PARSE Crea una data da una stringa, da poter poi formattare con date_format; utilizza la stessa sintassi per la definizione della formattazione di date_format.

Esempio:

(data_nascita = "2010/04/15") ${data_nascita|date_parse:"%Y/%m/%d"|date_format:"%d-%m-%y"}$ => "15-04-10"**

STRING_FORMAT Consente di formattare una determinata stringa

Esempi:

(valore_1 = 23.5787446) ${valore_1|string_format:"%.2f"}$ => "23.58"**

Nell’esempio sopraindicato il valore_1 sarà arrotondato al secondo decimale.

SUBSTRING Permette di estrarre una porzione della stringa indicando la posizione iniziale (inclusa) e la posizione finale (esclusa). Se la posizione finale è oltre la lunghezza della stringa, il risultato terminerà con la fine della stringa. L’inizio della stringa ha posizione ″0″ (zero).

Esempi:

(valore = "abcdefg") ${valore|substring:"0":"5"}$ => "abcde" ${valore|substring:"2":"5"}$ => "cde" ${valore|substring:"2":"100"}$ => "cdefg"

CAPITALIZE Rende maiuscola la prima lettera della stringa e minuscole le rimanenti.

Esempio:

(full_name = "mario Rossi") ${full_name|capitalize}$ => "Mario rossi"

LOWER (o LOWERCASE) Rende minuscola l’intera stringa

Esempio:

(full_name = "Mario Rossi") ${full_name|lower}$ => "mario rossi"

UPPER (o UPPERCASE) Rende maiuscola l’intera stringa

Esempio:

(full_name = "mario Rossi") ${full_name|uppercase}$ => "MARIO ROSSI" **

SWAPCASE Maiuscole convertite in minuscole e viceversa

Esempio:

(full_name = "Mario Rossi") ${full_name|swapcase}$ => "mARIO rOSSI" **

REVERSE Inverte la stringa

Esempio:

(full_name = "Mario Rossi") ${full_name|reverse}$ => "issoR oiraM"

URLENCODE Codifica la stringa per poterla utilizzare negli URL

Esempio:

(full_name = "Mario/Rossi") ${full_name|urlencode}$ => "Mario%2FRossi"

URLDECODE Inversa di urlencode

REPLACE Trova e sostituisci; viene fatta distinzione tra minuscole e maiuscole (case sensitive) Il primo parametro è la stringa da sostituire, il secondo la stringa da usare per la sostituzione.

Esempio:

(full_name = "Mario Rossi") ${full_name|replace:"Mario":"Luigi"}$ => "Luigi Rossi"

Nell’esempio sopraindicato i campi con stringa “Mario” verranno sostituiti con la stringa Luigi.

– md5 (o md5sum) Calcola il checksum md5

Esempio:

(full_name = "Mario Rossi") ${full_name|md5}$ => "a5887a62d652d2b476e57f20bbbc8c2c"

BASE64ENCODE Codifica base64

Esempio:

(full_name = "Mario Rossi") ${full_name|base64encod}$ => "TWFyaW8gUm9zc2k="

BASE64DECODE Inversa di base64encode

Pipeling

Ed è possibile applicare più modificatori contemporaneamente, creando una pipeline, ossia il risultato di un modificatore può essere passato come dato di ingresso al modificatore successivo.

Esempio:

(campo2 = "" ${campo2|default:"Non Disponibile"|lowercase|urlencode}$ => "non+disponibile"

(data_nascita = "2010/04/15") ${data_nascita|date_parse:"%Y/%m/%d"|date_format:"%d-%m-%y"}$ => "15-04-10"

Personalizzazione avanzata

EXTERNAL_SOURCE_TAGS

Inserendo nel codice html degli appositi tag, è possibile includere in quel punto un contenuto esterno (tipicamente, una porzione di codice html o un intero file html).

  • Supponiamo ad esempio di voler inviare automaticamente tutti i giorni i contenuto della pagina web presente all’indirizzo http://nostrosito.com/notiziedioggi.html
  • Al passaggio ″Contenuto del messaggio″ del processo di Crea > Spedizione email, inseriamo nel corpo html del messaggio la seguente sintassi:@{http://nostrosito.com/notiziedioggi.html}@
  • Il contenuto presente a quell’indirizzo web verrà automaticamente incluso nel messaggio.

Attenzione: il contenuto sarà preso nel momento in cui il messaggio viene generato, quindi è necessario essere certi che in quel momento all’url indicato sia presente il contenuto corretto e aggiornato.

INCLUDE_URL_TAGS

Come EXTERNAL_URL_TAGS, permette di includere un file da un URL esterno, ma supporta anche la presenza di altri codici dinamici.

Ad esempio:

<@http://nostrosito.com/${provincia}$/notiziedioggi.html@>

che per gli utenti della provincia di Milano recupererà il contenuto da
http://nostrosito.com/mi/notiziedioggi.html , per gli utenti di Roma da
http://nostrosito.com/rm/notiziedioggi.html e così via.

INLINE_CONTENT_TAGS e DYNAMIC_INLINE_CONTENT_TAGS

@(https://nostrosito.com/img/foto1.jpg)@ e ^(https://nostrosito.com/img/${provincia}$/foto1.jpg)^
recuperano l’immagine presente all’URL indicato, e la incorporano nel messaggio (immagine embedded). L’uso di immagini embedded all’interno delle email da un lato le rende immediatamente visibili, perché sono codificate all’interno del messaggio stesso, non allegate né scaricate dall’esterno. Dall’altro lato, il messaggio è molto più pesante e a rischio di blocco anti-spam. Per cui sconsigliamo l’uso di immagini embedded.

TRACKED_URL_TAGS e DYNAMIC_TRACKED_URL_TAGS

Questa sintassi viene di norma inserita automaticamente da Contactsend durante il processo di creazione di una spedizione email, per permettere poi il tracciamento dei link a fini di conteggio dei click. La sintassi TRACKED_URL_TAGS può essere inserita manualmente, ad esempio per tracciare URL contenenti parametri dinamici. Ad esempio: http://nostrosito.com/index.php?${provincia}$

Nel caso in cui i parametri dinamici siano presenti in posizioni diverse dell’URL, o nel dominio stesso, si può utilizzare la sintassi DYNAMIC_TRACKED_URL_TAGS , come nei seguenti esempi: ^{http://nostrosito.com/${provincia}$/docs/index.html}^ ^{${dominio}$}^

ATTENZIONE: per non rallentare la preparazione dei messaggi e il loro invio, non utilizzare questa sintassi qualora siano presenti molti valori differenti, su spedizioni a un numero elevato di destinatari.

NOTES_TAGS

Indicando il nome di una etichetta della spedizione, permette di includerne il valore.

Ad esempio <{id_cliente}> inserirà nel punto dove il codice dinamico è presente, il valore corrispondente.