4. INTEGRAZIONE PROVIDER EMAIL/SMS
4.2 Integrazione Email
I messaggi (id creatività – HTML template) sono definiti sulla piattaforma MailUp (da Alfa) e recuperati, per renderli disponibile al SAS Campaign, tramite una chiamata Soap al metodo
GetNewsletters rilasciato dal provider:
string GetNewsletters(string accessKey, int listID)
accessKey: codice di accesso ottenuto tramite chiamata al metodo LoginFromId listID: Id della lista in cui sono stati definiti I messaggi. Elenco delle liste e ID
corrispondenti possono essere ottenuti tramite chiamata al metodo GetLists. L’output di ritorno è del tipo:
<?xml version="1.0" encoding="utf‐8"?> <GetNewslettersResult>
<errorCode>0</errorCode> <errorDescription /> <list>
<listID>1</listID>
<listName>News</listName> <newsletters>
<newsletter>
<newsletterID>1</newsletterID> <subject>Messaggio di test subject> <note>Campo descrittivo</note>
<creationdate>03/08/201712:32:31</creationdate> </newsletter>
<newsletter>
<newsletterID>2</newsletterID> <subject>Buon Compleanno </subject> <note></note> <creationdate>04/08/2017 12:32:31</creationdate> </newsletter> </newsletters> </list> </GetNewslettersResult>
Il processo SAS effettua una chiamata al metodo ogni ora e valorizza in una struttura SAS le seguenti informazioni:
CAMPO DESCRIZIONE
NEWSLETTER ID Id del messaggio
SUBJECT Oggetto associato al messaggio
NOTE Campo descrittivo definito durante la creazione del messaggio
CREATIONDATE Data di creazione del messaggio TABELLA 12: CAMPI PER OUTPUT GETNEWSLETTERS
69
Il processo stesso può essere impostato per filtrare solo alcuni messaggi in base alla data di creazione oppure in base alla presenza di un valore specifico nel campo note. Tali informazioni sono presenti all’interno del SAS Campaign nel nodo PreparaEmail, per permettere di associare uno specifico messaggio al target.
La definizione del target avviene nel tool di Marketing Automation SAS in base alla tipologia di campagna che il cliente vuole implementare. Una volta individuato il target oggetto della campagna, dovranno essere specificate alcune informazioni aggiuntive legate alla spedizione Email tramite il nodo PreparaEmail.
FIGURA 49: NODO PREPARE_EMAIL_INTEGRAZIONE_MAILUP
Il run del nodo valorizza in una tabella email_campaign_history (CDM), tutte le specifiche valorizzate dall’utente sulla campagna.
È stato impostato un processo schedulato, tramite lo strumento Task Scheduler (Win), che estrae giornalmente i target delle campagne andate in esecuzione nella data corrente (da contact_history) e comunica al provider il set di file concordato.
Nello specifico è possibile creare un file batch che richiama un codice SAS, il cui run viene eseguito in background, senza ausilio di tool o ambienti di sviluppo. Tale script invoca un file denominato master_email.sas che richiama a sua volta 3 codici SAS:
1. _ExtractFromCDM.sas
Estrae dalla contact_history tutti i clienti generati dalle campagne da contattare nella data corrente. Preliminarmente vengono effettuati dei controlli circa l’eventuale comunicazione già avvenuta e la validità dell’indirizzo email associato. Successivamente viene originata una tabella locale che associa ad ogni cliente le informazioni presenti sulla email_campaing_history della campagna afferente.
70
Si occupa della creazione del file xml per la gestione delle impostazioni di invio comunicazione ed un csv relativo ai clienti da contattare. Il setting.xml presenta le informazioni seguenti:
NOME CAMPO TYPE VALORE DESCRIZIONE
ACTION TYPE string send Modalità di azione richiesta per il batch FTP-ZIP.
CAMPAIGN CODE string
<CAMPCODE>_<MA RKETING_CELL_CO DE>
Campo contenente informazioni sul codice campagna e codice della specifica cella
FORMATVERSION string 0.1 Tipo di validazione XML
LISTID int tbd
Specifica lista per l’account MailUp. La lista utilizzata effettua in automatico la deduplica degli indirizzi email. Vedi sezione specifica.
LISTGUID string Tbd Identificatore univoco della lista per l’account MailUp. SENDERNAME string da campaign SAS Nome che verrà visualizzato
come sender della DEM
SENDEREMAIL string da campaign SAS Email che verrà visualizzata come sender della DEM
EMAILSUBJECT string da campaign SAS Oggetto della DEM SCHEDULEDATETIME string
da campaign SAS. esempio <2017-06- 01T11:00:00.000>
Data e ora in cui la DEM verrà spedita
SCHEDULETIMEZONE string Specifica del time zone
NOTE string
Da campaign SAS. <CELL_PACKAGE_S K>
Valorizzato con riferimento alla specifica campagna SAS. Questo valore viene esportato da MailUp nel flusso FULL dei feedback per il canale Email. il Campo non potrà essere utilizzato per altro. SEPARATOR string ; Separatore usato nel
recipients.csv ATTACHMENTS bool(string) false
DYNAMICFIELDS bool(string) true EMBEDDEDIMAGES bool(string) true LINKTRACKING bool(string) true HTTPLINKTRACKING bool(string) true MAILTOTRACKING bool(string) true FTPTRACKING bool(string) false NEWSTRACKING bool(string) false QUERYSTRINGADDITI
ONALPARAMS string blank BODYCODE string blank
71 HEADERCODE string blank
MESSAGEID int Da campaign SAS. <ID_Newsletters>
Campo valorizzato con l’ID della newsletter definita sulla
piattaforma MailUp e selezionata tramite SAS Campaign
TABELLA 13: CAMPI SETTINGS.XML
FIGURA 50: ESEMPIO DI VALORIZZAZIONE SETTINGS.XML
Nel file csv sono specificati tutti i destinatari della spedizione, i quali vengono recuperati a partire da quanto presente nella Contact History. Oltre alle informazioni di contatto sono definiti campi personalizzati del cliente e campi necessari per associare correttamente gli eventi del cliente alla campagna SAS.
La codifica del file è UTF-8 e conforme a quali sono le policies MailUp mentre il separatore utilizzato è il carattere “;” (come specificato nel file settings.xml).
Il file csv contiene una riga di intestazione che mappa i valori contenuti nella colonna con un campo corrispondente sulla piattaforma MailUp e nell’intestazione è specificato l’ID del campo come definito sulla console di amministrazione MailUp.
72
Il numero massimo di campi personalizzati definibili sono 39 (condivisi tra email e sms): utili per effettuare analisi a valle della spedizione. Seguiranno una tabella con le specifiche ed un esempio di valorizzazione:
NOME CAMPO TYPE ID CAMPO DESCRIZIONE
EMAIL_ADDRESS string 111 (special field)
Indirizzo email del destinatrio. Questo campo è un special filed di Mailup.
CAMPAIGN_CD string 1 Codice campagna
CELL_PACKAGE_CD string 2 Identificativo della campagna NOME string 3 Nome del cliente
COGNOME string 4 Cognome del cliente
NAZIONE string 5 Nazione di residenza del cliente DIVISIONE string 6 Brand prevalente del cliente
TABELLA 14: TRACCIATO RECIPIENT.CSV – INTEGRAZIONE EMAIL
111;1;2;3;4;5;6
marco.viturbi@gmail.com;CAMP28;CELL1886 ;Marco;Viturbi;Italia;Alfa Salotti rosa.valli@libero.it;CAMP28;CELL1886 ;Rosa;Valli;Italia;Alfa Salotti
Si rende necessaria una fase di deduplica email in quanto presenti clienti differenti che condividono il medesimo indirizzo di posta elettronica. A tal fine, la lista MailUp utilizzata, effettua in automatico l’eliminazione delle email duplicate durante l’importazione del target. Inoltre nel processo di creazione dei file csv gestito da SAS, è stato introdotto un controllo ulteriore sui target in cui si verifica la presenza di email duplicate e, in caso positivo, l’eliminazione delle stesse.
I codici clienti esclusi sono aggiunti alla tabella EMAIL_ESCLUSE_INVIO. Il tracciato è il seguente:
NOME CAMPO TYPE
EMAIL string CLIENTE_SK int CELL_PACKAGE_SK int DT_ESCLUSIONE Datetime TABELLA 15: CAMPI EMAIL_ESCLUSE_INVIO
3. _delivery_Xml_Csv.sas
Produce il file zip da depositare nell’area ftp condivisa e contiene al suo interno il
recipient.csv ed il setting.xml.
Il nome del file presenta la forma seguente:
<Prefisso_CodiceCampagnaSAS_CellPackageSAS_DataOraEsecuzione>.zip. Es: SASCM_DEM_CAMP28_1886_20170531_1500.zip.
73
Sul server ftp è presente un processo “on-demand” che importa lo zip nel momento di ricezione. Il provider si occuperà di processare i dati ed inviare la comunicazione in base alle specifiche riportate.
4.3 Integrazione SMS
L’integrazione tra il sistema SAS e la piattaforma MailUp avviene usando l’applicazione
Csv2Sms del provider. La stessa permette di condividere in un unico file le informazioni
riguardanti destinatari, il messaggio e le modalità di spedizione. Di seguito il disegno del processo:
FIGURA 51: PROCESSO DI INTEGRAZIONE SMS TRA I SISTEMI
Nella tabella per ogni singola attività viene identificato owner e strumento utilizzato per evadere il singolo task.
74
ATTIVITA OWNER
DEFINIZIONE DEL TARGET Utenti Alfa tramite SAS Marketing Automation
TEST DI SPEDIZIONE DEL MESSAGGIO Utenti Alfa tramite SAS Marketing Automation
ASSOCIAZIONE DEL MESSAGGIO AL TARGET E SPECIFICA SCHEDULAZIONE E DEFINIZIONE UTENTI CIVETTA
Utenti Alfa tramite SAS Marketing Automation
CREAZIONE DEL FILE CSV SU FTP Processo automatico SAS ACQUSIZIONE DEL FILE E SPEDIZIONE DELLA
CAMPAGNA
Processo automatico piattaforma MailUp ESPORTAZIONE SU FTP DEI FEEDBACK Processo automatico piattaforma MailUp IMPORTAZIONE FEEDBACK SUL SAS
CAMPAIGN
Processo automatico SAS TABELLA 16: TASK E OWNER – INTEGRAZIONE SMS
La definizione del target avviene nel tool Marketing Automation di SAS, in base alla tipologia di campagna che si vuole implementare. Una volta individuato il target oggetto della campagna dovranno essere specificate alcune informazioni aggiuntive legate alla spedizione sms tramite il nodo PrepareSMS.
FIGURA 52: NODO PREPARE_SMS
Nel file csv sono specificati tutti i destinatari della spedizione che vengono recuperati a partire da quanto presente nella Contact History. Oltre alle informazioni di contatto sono definiti campi
75
personalizzati del cliente ed il testo del messaggio da inviare. La codifica del file è UTF-8 ed il separatore utilizzato è il carattere “;”.
Viene proposto il medesimo processo schedulato proposto per l’altra integrazione. Anche qui è stato impostato un batch master.sas che estrae i clienti da contattare in base alle logiche descritte per l’email ma con focus sul contatto telefonico. Verrà realizzato un recipient.csv opportunamente valorizzato dalle informazioni compilate dall’utente e spedito nell’area ftp apposita.
Il file csv è composto da una sezione Header e sezione Messages.
La sezione Header è composta da un numero fisso di righe, ciascuno con un preciso significato e preceduti dal simbolo #:
RIGA CONTENUTO OPZIONALE
1 Autore file SI
2
Data e ora della spedizione nel formato “YYYY-MM-DD HH:MM”. Nel caso in cui il campo sia vuoto oppure venga riportata una data nel passato, i messaggi vengono inviati immediatamente. In caso di data di data non corretta il file non sarà importato. Il campo viene utilizzo solo se la riga 3 viene impostata ad I
SI
3 I=INVIO A=ACCODAMENTO NO (da impostare ad I) 4 Numero o nome che apparirà come mittente del messaggio. NO
5 Centro costo MailUp (List ID) SI
6 Nome Campagna NO
7 Codice Campagna. Codice non duplicabile e massimo 10 caratteri. NO TABELLA 17: TRACCIATO RECIPIENT.CSV – INTEGRAZIONE SMS
La sezione “Messages” può contenere un numero illimitato di righe e si riferiscono al messaggio da inviare. Il separatore è “;” e la prima riga contiene l’intestazione delle singole colonne. Il primo campo è MOBILE NUMER, il secondo campo TEXT (messaggio) e a seguire una serie di campi specifici (FIELD1, FIELD2) per la personalizzazione dei messaggi. I duplicati sul contatto mobile saranno scartati.
Esempio invio schedulazione per 29 Maggio 2017 alle 09:50 AM: #sacm
#2017-05-29 09:50 #I
#Divani & Salotti by Alfa #1
#Special offer #COD001
MOBILE NUMBER;TEXT;Field1;Field2;Field3;Field4;UNICODE
+18889624587;hello [#1] your surname is [#2] and you live in [#3] [#4];John;Smith;One Market Plaza, 5th floor;CA;0
0018881234567;hello [#2] your name is [#1] and you live in [#3] [#4];;Patricia;Johnson;Lexington, 1500;NY;0
76
+34933181998;Hola [#2] tu nombre es [#1];Miguel;Bosè;Plaza Major, 28;Madrid;0 +4901512345678; Halo [#2], du heißt [#1];Merkel; Angela;2;Berlin;0
Attualmente non vengono utilizzati i campi per la personalizzazione del messaggio.
Il file .csv realizzato avrà una nomenclatura del tipo
<Prefisso_CodiceCampagnaSAS_CellPackageSAS_DataOraEsecuzione>.csv. Es:
SASCM_SMS_CAMP1234_12345_20170531_1500.csv
Come per l’integrazione email, all’arrivo del file zip sull’area ftp del provider, partirà un processo on-demand per l’importazione del file.
4.4 Acquisizione Feedback
Per la componente E-mail è prevista la ricezione di due flussi, il primo identifica i ritorni delle interazioni dell’utente rispetto all’invio e-mail, denominato “FULL” mentre il secondo riguarda l’invio delle e-mail che hanno richiesto la disiscrizione, denominato “UNSUB”.
Il processo di acquisizione dei feedback prevede che MailUp depositi su una cartella specifica del server ftp un file che contenga i ritorni delle campagne e-mail inviate. Il file sarà incrementale e la nomenclatura sarà la seguente: <Prefisso_Tipo_DataOraEsecuzione>.csv (DEM_FULL_20170531_1500.csv); la struttura è di seguito riportata:
NOME CAMPO TYPE DESCRIZIONE OPZIONALE
LIST ID Number Specifica lista per l’account MailUp NO SEND ID Number ID invio MailUp SI MESSAGE ID Number ID messaggio
MailUp SI
E-MAIL ADDRESS String Indirizzo e-mail NO SUBJECT String Oggetto e-mail NO
STATUS String
I possibili valori sono: OPN (open) CLK (click) NCO (not delivered) SNT (sent)
SI
DETAILS String
URL selezionato (se Status=CLK) or bounce code* (se Status=NCO)
SI
DATE
ISO format for dates yyyym mddThhmmss. Italian time zo ne applies Data in cui è avvenuta l’operazione. NO
77 SEND DATE
ISO format for dates yyyym mddThhmmss.
Italian time zo ne applies
Data invio messaggio SI
NOTE Stiring
Informazione di ritorno dal campo note del file settings.xml relative ad una specifica spedizione
NO
TABELLA 18: CAMPI FEEDBACK - INTEGRAZIONE EMAIL
BOUNCE TYPE* BOUNCE DESCRIPTION
AR Auto Reply
BN Bounce No Email Address
CR Challenge-Response
GB General Bounce
HB Hard Bounce
MB Mail Block - General
MBAD Mail Block - Attachment Detected MBKS Mail Block - Known Spammer MBRD Mail Block - Relay Denied MBSD Mail Block - Spam Detected
NB Non Bounce
SB Soft Bounce - General
SBDF Soft Bounce - Dns Failure SBMF Soft Bounce - Mailbox Full
SBMS Soft Bounce - Message Size Too Large
SR Subscribe Request
TB Transient Bounce
UR Unsubscribe Request
TABELLA 19: OPZIONI PER CAMPO BOUNCE
78
NOME CAMPO TYPE DESCRIZIONE OPZIONALE
LIST ID Number Specifica lista per l’account MailUp SI MESSAGE ID Number ID messaggio MailUp SI E-MAIL ADDRESS String Indirizzo e-mail NO UNSUBSCRIPTION DATE String Data di disiscrizione in formato ISO: 20110122T111244 SI TYPE* Number Tipologia di
didiscrizione SI TABELLA 20: CAMPI UNSUB – INTEGRAZIONE EMAIL
TYPE* DESCRIPTION
0 Output forzato dalla console di amministrazione MailUp. 2 Destinatario effettua click su link per la disiscrizione 4 Importato come disiscritto
8 Hard Bounce
16 Feedback Loop (spam notification) 32,64 Newsletter (unsibscribe header) 128 Destinatario inattivo
256 Disiscrizione a fronte di un email bloccata 512 Disiscrizione a fronte di un bounce ripetuto
TABELLA 21: OPZIONI CAMPO TYPE
Lato-Alfa, il flusso degli “Unsubscribe” risulta composto anche da una “fase manuale”, poiché alcuni utenti finali inviano la richiesta di disiscrizione ad una casella di posta Alfa dedicata. Tale tipologia di disiscrizione viene riportata sul sistema di MailUp tramite attribuzione nel campo Type del valore “0”.
Di seguito alcuni dati di esempio: FULL idList;idInvio;idN;email;subject;Note;statusType;details;statusChange;sentDate;campo 12;10;18397;478;paolo.vitali@hotmail.it;Benvenuto in Alfa Italia;Test_CELL1841;OPN;;20170727T131627;20170725T164207;9999999 UNSUB email;idList;OptOut_Date;message_id;optout_type mandyj_ca@yahoo.com;8;20170801T153753;399;16 tmv@fastwebnet.it;8;20170801T223739;438;2
Per la restante componente (SMS), vengono depositati due file (MailUp) sulla medesima area ftp: “STAT” e “UNSUB”. Di seguito i tracciati:
79
CAMPO (STAT) DESCRIZIONE
LISTA Codice della lista MailUp MESSAGGIO Testo dell’SMS
NUMERO DI TELEFONO Cellulare del destinatario DATA Data di invio del messaggio
TABELLA 22: SPECIFICHE CONTATTO – INTEGRAZIONE SMS
CAMPO (UNSUB) DESCRIZIONE
LISTA Codice della lista MailUp MESSAGGIO Testo dell’SMS
NUMERO DI TELEFONO Cellulare del destinatario EVENTO Disiscrizione
DATA Data di invio del messaggio TABELLA 23: CAMPI UNSUB – INTEGRAZIONE SMS
Per abilitare la disiscrizione della ricezione di un SMS da parte del cliente, è necessario che sia abilitata la funzionalità lato-MailUp. In caso di abilitazione, la modalità di cancellazione da una lista specifica avviene attraverso la spedizione di un SMS verso il numero prestabilito. Si dovrà indicare una KEYWORD della lista a cui disiscriversi (es. "News STOP" al numero 00393201234567 per disiscriversi dalle campagne SMS della lista 5, che ha come keyword "News", della console MailUP).
In base alle informazioni dei feedback UNSUB e FULL acquisite da MailUp, viene popolata la seguente struttura (RESPONE_HISTORY) che unisce le risposte ricevute per i canali EMAIL ed SMS oltre che ad arricchire con alcune informazioni necessarie.
NOME CAMPO TYPE DESCRIZIONE
LIST ID Number Specifica lista per l’account MailUp
SEND ID Number ID invio MailUp
MESSAGE ID Number ID messaggio MailUp
ADDRESS String Indirizzo e-mail
MOBILE PHONE String Contatto telefonico
SUBJECT String Oggetto e-mail
STATUS String
I possibili valori sono: OPN (open)
CLK (click)
NCO (not delivered) SNT (sent)
DETAILS String URL selezionato (se Status=CLK) or
bounce code* (se Status=NCO) SUB DETAILS String
Tipologia di disiscrizione. Valorizzato solo nel caso in cui si è verificato l’evento di
disiscrizione DATE
ISO format for dates yyy ymmddThhmmss. Italian time zone applies
80 SEND DATE
ISO format for dates yyy ymmddThhmmss. Italian time zone applies
Data invio messaggio
CELL PACKAGE String Da campo Note.
ID CLIENTE Number Codice Cliente
TABELLA 24: CAMPI RESPONSE_HISTORY
Come per la prima parte dell’integrazione, si è reso necessario impostare un processo giornaliero che estrae i feedback dalle apposite aree ftp ed aggiorna la RESPONSE_HISTORY. Nel caso sia stata effettuata una deduplica dell’email, l’associazione tra ID Cliente ed Email utilizza le informazioni presenti nell’anagrafica clienti, nella contact history e le dedupliche effettuate e memorizzate nella struttura EMAIL_ESCLUSE_INVIO.
81
4.5 Analisi post-Campaign
L’ acquisizione feedback svolge un ruolo fondamentale nella fase di analisi della response delle campagne. Da un punto di vista tecnico l’area Campaign Management fornisce all’area Business Intelligence di Value Lab un set di entità attraverso il quale generare reportistiche da presentare ad Alfa. In tal senso l’autore della tesi ha dovuto predisporre un processo specifico per realizzare le 5 entità da fornire al team BI.
Per una questione di onerosità computazione relativa al processamento dei dati, il team BI ha richiesto all’area Campaign Management di produrre 5 viste relative a:
• Anagrafica_Campagne
Al fine di associare ad ogni ricorrenza della campagna (Campagna Cell Package) informazioni sul target iniziale, totale invii, totale views (apertura della mail), totale click, totale usnsubscibers e bounce (necessaria Response_History).
• Entità_Cliente
Informazioni anagrafica clienti e data di contatto. • Entità_Cliente_Wave
Associazione Cliente-Feedback sul cell_package di occorrenza (view, click, open..). • Entità_Contact_History
Associazione Cliente-Cell_Package e data di contatto. • Entità_Vendite
Dettaglio vendite sui clienti contattati dalle campagne.
Fedelmente ai numerosi processi schedulati precedentemente descritti, è stato impostato un task scheduler giornaliero che ricalcola in delta le 5 viste scritte sul DWH: si verifica quali campagne devono essere aggiornate e a scalare dalla prima entità, tutte le altre.
L’area Business di Alfa, in seguito ad un’attenta analisi dei report forniti dal team BI di Value Lab, comunicherà ai designer delle campagne di apportare eventuali modifiche oppure utilizzare altre promozioni da offire ai clienti. Non è escluso che Alfa richieda al team Data Analytics di Value Lab, di analizzare i risultati ottenuti e realizzare modelli analitici da applicare alle campagne, al fine di raffinare le strategie di marketing attualemente in uso. Nel caso in cui tale evenienza trovi terreno fertile, gli analisti utilizzeranno il tool SAS Enterprise Miner ed offriranno al team Campaign modelli da integrare in SAS Marketing Automation.
Tale circostanza non è ancora avvenuta, ma non è escluso che possa verificarsi nell’avvenire: sarebbe interessante adottare una “churner analysis” nella campagna “Anniversario Primo Acquisto”, al fine di identificare quali clienti sono più a rischio e reindirizzarli verso una differente promozione, attraverso l’opportuno canale di contatto.
82
Considerazioni Finali
Il porgetto formativo ha fornito la possibilità di applicare in contesti reali le tematiche affrontate durante il percorso di studi.
In particolare il lavoro svolto è direttamente collegato al data warehousing, al business intelligence e ai data analytics. In riferimento a questi ultimi, come anticipato nell’ultimo paragrafo, sarebbe interessante applicare un modello analitico tra quelli studiati per aumentare il tasso di rendimento delle campagne. In tal modo il modello di gestione delle campagne basato sulla customer intelligence, porterebbe alla creazione di campagne mirate ai clienti di maggiore valore.
Ovviamente ciò è dipeso dalla disponibilità dei feedback ottenuti successivamente al lancio delle campagne, le quali hanno bisogno di un ciclo temporale abbastanza ampio prima di poterle analizzare e la circostanza non si è ancora verificata. Altresì non è consigliabile applicare