Come fidelizzare i fan del blog? Semplice. Con una newsletter che li tenga aggiornati sulle nuove uscite. In questo “In 3 2 1” vediamo come modificare un qualsiasi form di contatto aggiungendo una checkbox per l’iscrizione alla vostra newsletter.
La soluzione che vi propongo non utilizza alcun plugin proprio ma si appoggia direttamente a Contact Form 7 e CFDB (che sicuramente avrete già installato per creare i form di contatto e salvare i dati degli utenti in una apposita tabella del database).
Ho scelto MailUp come servizio di email marketing ma, con modifiche minime, la soluzione è applicabile anche ad altri provider (es. MailChimp). MailUp possiede una funzionalità che vi consente di creare un form di registrazione da incollare sul vostro sito ma è una soluzione completamente svincolata dal database di WordPress. In pratica i dati dei vostri utenti saranno salvati solo sui server di MailUp.
3) Iscrizione su MailUp
Per utilizzare MailUp è necessario attivare un account a pagamento ma è comunque possibile eseguire un test gratuito della piattaforma. Dopo aver completato l’iscrizione potrete loggarvi da un indirizzo web detto MailUp Console Host che ci servirà tra poco per collegare il form di contatto a MailUp.
L’account di base (web) prevede l’utilizzo di una sola lista di destinatari (tabella nella quale confluiscono i dati utente raccolti dai form), mentre gli altri account (pro ed enterprise) consentono la creazione di ulteriori liste per suddividere gli iscritti secondo le esigenze. Noi prenderemo in considerazione il caso base e la lista di default che ha come identificativo il numero 1.
2) Creazione del form di iscrizione
Per prima cosa verifichiamo di aver istallato e attivato i plugin Contact Form 7 e Contact Form DB.
Prendiamo come esempio il modulo di contatto che viene automaticamente proposto da Contact Form 7 quando creiamo un nuovo form:
<label>Il tuo nome (richiesto) [text* your-name] </label> <label>La tua email (richiesto) [email* your-email] </label> <label>Oggetto [text your-subject] </label> <label> Il tuo messaggio [textarea your-message] </label> [submit "Invia"]
Inseriamo quindi la nostra nuova checkbox con la richiesta di iscrizione alla newsletter prima del bottone di submit:
<label> Vuoi iscriverti alla nostra newsletter? [checkbox mailup "Si"] </label>
1) Collegamento del form al vostro account MailUp
Il collegamento tra il vostro form di contatto e l’account MailUp avviene per mezzo dell’url della MailUp Console che altro non è che l’indirizzo web al quale vi collegate per fare il login sull’account di MailUp. Ha una forma del tipo
xxxxxx.mailupclient.com
dove xxxxxx è una stringa alfanumerica che vi è stata associata al momento dell’iscrizione al servizio di MailUp.
Per realizzare la magia dobbiamo sfruttare un hook messo a disposizione da Contact Form DB. Un hook non è altro che un appiglio, previsto dagli sviluppatori del plugin, al quale è possibile attaccarsi per aggiungere una nuova funzionalità da noi decisa che sarà eseguita in una particolare condizione. Per farla semplice quello che dobbiamo fare è dire a Contact Form DB che ogni qual volta salverà un nuovo utente nel database (a seguito di una compilazione di un form) dovrà anche eseguire una iscrizione dello stesso utente ad una nostra lista di destinatari MailUp.
L’hook al quale aggrapparsi per eseguire il nostro compito si chiama cfdb_form_data e questo è il codice che andrà inserito in coda al solito functions.php (file del tema che esegue le personalizzazioni):
function mailup_subscription($formData) { $data = $formData->posted_data; if ($data['mailup'] == 'Si') { /* imposto i parametri */ $mailup_console_url = 'xxxxxx.mailupclient.com'; /* MODIFICA CON IL TUO MailUp Console Host */ $pars = 'list=1'; /* identificativo della lista di default */ $pars .= '&email='.$data['your-email']; /* salva la mail */ $pars .= '&confirm=true'; /* richiede la conferma dell'iscrizione */ $pars .= '&csvFldNames=campo1'; $pars .= '&csvFldValues='.$data['your-name']; /* salva il nome utente */ $mailup_subscription_url = "http://{$mailup_console_url}/frontend/xmlSubscribe.aspx?".$pars; /* eseguo la chiamata a MailUp */ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $mailup_subscription_url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); curl_close($ch); } return $formData; } add_filter('cfdb_form_data', 'mailup_subscription');
Quello che sto facendo è recuperare i dati del modulo al momento del suo salvataggio e passare alla console di MailUp l’email e il nome utente di chi lo ha compilato. Questi dati saranno salvati nella lista di default di MailUp e all’utente verrà inviata una mail che richiederà la conferma di iscrizione.
Ora non vi resta che creare la vostra newsletter e inviarla ai nuovi fan 😉
Nota: per informare MailUp che stiamo richiedendo una iscrizione dal nostro sito dobbiamo indicargli qual’è l’indirizzo IP del nostro server (che possiamo chiedere al nostro fornitore di hosting) accendendo alla console di MailUp e andando su Gestione (ingranaggio) > Opzioni Avanzate > Opzioni Sviluppatore > Web services. A questo punto basta selezionare Frontend dal menu a tendina, abilitare Web Service e cliccare su Aggiungi IP.
[Aggiornamento 05/2017] Se vogliamo usare Gravity Forms invece di Contact Form 7 il procedimento è molto simile; cambia ovviamente l’hook da utiilizzare – in questo caso gform_after_submission – e il modo con cui si recuperano i dati dal form
function mailup_subscription( $entry, $form) { $email = rgar( $entry, '1' ); /* recupero il campo mail dal form */ $mailup_console_url = 'xxxxxx.mailupclient.com'; /* MODIFICA CON IL TUO MailUp Console Host */ $pars = 'list=1'; /* identificativo della lista */ $pars .= '&email='.$email; /* salva la mail */ $pars .= '&confirm=true'; /* richiede la conferma dell'iscrizione */ $mailup_subscription_url = "http://{$mailup_console_url}/frontend/xmlSubscribe.aspx?".$pars; /* eseguo la chiamata a MailUp */ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $mailup_subscription_url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); curl_close($ch); } add_action( 'gform_after_submission', 'mailup_subscription', 10, 2 );
Ciao Simone,
grazie mille per aver condiviso il tuo lavoro!
Volevo chiederti un aiuto per configurare questo sistema sul un sito che sto realizzando perché purtroppo non riesco a farlo funzionare.
L’email viene spedita correttamente dal modulo ma l’iscrizione alla newsletter non avviene.
Se puoi aiutarmi posso darti altri dettagli,
grazie in anticipo
Giulia
Ciao Giulia,
se ho capito bene hai bisogno di un form che consenta la registrazione automatica a MailUp.
Se questo è il caso si tratta “solo” di creare il form con uno degli strumenti che ti mette a disposizione MailUp e inserire nel tuo sito il codice generato in un iframe come indicato in questo how to:
http://help.mailup.com/pages/viewpage.action?pageId=28115670
La cosa importante da impostare è il parametro src dell’iframe che va settato con l’url del tuo pannello di amministrazione MailUp e con l’identificativo della lista in cui vuoi salvare il contatto:
http://url_pannello_di_controllo/frontend/forms/Form1.aspx?idList=identificativo_lista
Il metodo che ho indicato nel post è un po’ più da programmatore. Con quello che ti ho scritto qua ottieni lo stesso risultato ma con meno sbattimento 😉
Fammi sapere se risolvi!
Ciao Simone, grazie per la risposta 🙂
In realtà ho un form fatto con CF7 che utilizzo per raccogliere i dati degli utenti per una card e mi servirebbe che contestualmente venissero iscritti alla lista di mailup.
Ho ricontrollato il codice ma ho come l’impressione che il filtro non filtri..non parta?!
Ho provato anche solo a stamparmi il contenuto di $data con wp_die (var_dump($data)); ma quando invio il form non succede nulla..
Hai qualche suggerimento?
Grazie mille
Giulia
Ciao Simone!
Alla fine ho risolto inserendo un redirect all’url di iscrizione di mailup passando i valori del form, nelle impostazioni aggiuntive, così:
on_sent_ok: "var name = $('.wpcf7 input[name=text-268]').val(); var email = $('.wpcf7 input[name=email-765]').val(); location = 'http://xxxxxxx/frontend/subscribe.aspx?list=49&email='+email+'&confirm=true&csvFldNames=campo1&csvFldValues='+name;"
Usando gli hook di CF7 non sono riuscita a far funzionare cURL…mah?!?
Comunque grazie per l’aiuto,
Buon lavoro!
Giulia
Scusa per la risposta sbrigativa ma credevo ti servisse il semplice invio di un form base 🙂
Quindi hai risolto chiamando l’url via ajax con jQuery sull’on_sent_ok?
Buongiorno!
Sono entrato in questo post per cercare di agganciare contact form 7 e mailup, ma ho notato che Contact Form DB non esiste più.
dove si potrebbe inserire tutto il codice da inserire nell’hook?
grazie mille
Ho aggiornato il post con il link al repository del plugin.
Ciao, on_sent_ok è stato rimosso da CF7 ormai da tempo.
Come posso integrare la soluzione proposta? non riesco proprio a farlo funzionare in nessun modo.
Ciao Diego, la soluzione è collegare, con document.addEventListener, una funzione javascript con il tuo codice all’evento ‘wpcf7mailsent’ proprio di CF7.
Ciao Simone,
anche io ho la necessità di agganciare CF7 a MailUp e nel contempo salvare i dati di un form sul DB.
Ho letto nei commenti precedenti che Contact Form DB non è più presente nel repository di WordPress, da quello che ho capito adesso la sua funzione di storage nel DB la svolge il plugin Flamingo, che è sviluppato dallo stesso team.
E possibile, tramite Flamingo, effettuare l’operazione di collegamento a MailUp?
Grazie mille
Ciao Paride,
non ho esperienza con Flamingo e quindi non saprei dirti. Puoi procedere installando CFDB da https://cfdbplugin.com/ (basta scaricare e attivare lo zip del plugin e aggiungere GitHub updater plugin per gli aggiornamenti) o, se vuoi mantenere Flamingo, seguire la soluzione di Giulia che si attiva all’invio della mail da parte di Contact Form 7 e che quindi non coinvolge nessun altro plugin (Flamingo o CFDB che sia).
Ciao, volevo sapere come integrareMailchimp anzichè Mailup…grazie!!!
Ciao Peppe,
provo a preparare qualcosa a riguardo.
Grazie.
Ciao Simone,
anche io ho la necessità di collegare Mailup a Form7. Ho provato la soluzione che hai proposto, anche scaricando il plugin al link aggiornato, ma non riesco a fargli aggiornare i dati sulla console di Mailup.
Ho visto che Giulia ha proposto una soluzione, ma non ho capiro se è in alternativa al tuo hook e se andrebbe inserito nel function.php.
Potrebbe andare bene quella? O hai altre soluzioni da consigliare?
Grazie
Ciao Fabio,
la soluzione proposta da Giulia è altrettanto valida e funziona anche senza che sia stato installato CFDB dato che si attiva su un evento di Contact Form 7. Il codice presentato, alternativo al mio, non va inserito nel functions.php ma nella tab “Impostazione aggiuntive” che trovi una volta che apri in editing il form interessato.