Aumentano gli e-commerce e in generale i sistemi per fare transazioni on-line e, di conseguenza, aumentano anche i problemi da risolvere.
Negli ultimi mesi, infatti, la domanda che regna sovrana è:
Massimo ho questo cliente che ha l'e-commerce X ma Analytics perde il 20-30-40 % delle transazioni, come facciamo per "sistemare"?
Ora, a prescindere che sia un e-commerce o semplicemente una landing page, e che venda un servizio singolo o un prodotto singolo, il discorso non cambia: bisogna capire come tracciare correttamente e al 100% i sistemi di pagamento.
Prenderò come esempio Paypal perchè è il sistema maggiormente utilizzato e che tutti conosciamo, ma la sostanza si può applicare a qualsiasi sistema di pagamento (es. Banca Sella, Unicredit, MyBank, Braintree, GestPay, Stripe, Skirill, MultiSafePay, ecc. ). Per tracciare il 100% delle transazioni devi attivare il servizio di chiamate CallBak di questi sistemi, che su Paypal si chiama IPN (Instant Payment Notification), ovvero una notifica immediata di pagamento.
In questo articolo affronteremo questi punti:
L'IPN è un sistema di chiamata SERVER to SERVER, questo significa che il sistema di Paypal comunica direttamente al nostro e-commerce la transazione. Normalmente in Paypal se non si conosce l'IPN e si imposta il classico redirect automatico al sito, con delle controindicazioni quali:
Questo, dunque, si traduce nella perdita delle transazioni di cui parlavo prima.
Il comando Paypal per attivare IPN si trova in Paypal -> profilo e impostazioni -> strumenti di vendita -> Notifiche immediate di pagamento: da qui puoi impostare il link dove Paypal potrà comunicare al tuo e-commerce che la transazione è stata effettuata correttamente.
Esempi di url IPN nei vari e-commerce:
Nella maggior parte degli e-commerce sarà direttamente il sistema a mandare il tracciamento a Google Analytics e quindi a farti vedere la transazione avvenuta, ma attenzione! Non è sempre così. Infatti, se per esempio hai un e-commerce "fuffa", cioè il classico e-commerce CUSTOM che spesso sento dire "è fatto appositamente per me", a meno che tu non sia Yoox o Zalando, tutte queste cose automatiche non le hai. Nel tuo e-commerce CUSTOM non ci sarà un'url fatta appositamente per la chiamata IPN di Paypal e bisognerà chiedere uno sviluppo ad hoc.
E non finisce qui: bisognerà anche implementare il sistema di chiamate verso Google Analytics tramite la funzione COLLECT, cioè una chiamata sempre Server to Server per comunicare a Google Analytics l'avvenuta transazione, con tutti i relativi parametri.
Mettiamo il caso quindi di non avere un sistema che prevede già i tracciamenti su Google Analytics e di dover quindi sviluppare a mano tutto. Ecco i passaggi da fare:
Un piccolo esempio fatto in php e in maniera molto veloce di quello che sto dicendo. Qui di seguito sto tracciando un Evento, ma è possibile, cambiando la variabile $field, passare una transazione.
creo un file php su /ipn/ipn.php con all'interno :
[php] <?php if(isset($_GET['control']) && $_GET['control']=='CODICE_SEGRETO'){ $url = 'https://www.google-analytics.com/collect'; $fields = array( 'v' => '1',
'_v' => 'j46',
't' => 'event',
'ec' => 'Donazione', //Categoria
'ea' => 'Effettuata', //Azione
'el' => '1-mese', //Etichetta
'ev' => '87', //Valore
'cid' => $_REQUEST['custom'],
'tid' => 'UA-XXXXXXXX',
);
//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string, '&');
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url.'?'.$fields_string);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);
//curl_setopt($ch,CURLOPT_POST, count($fields));
//curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
//execute post
$result = curl_exec($ch);
//close connection
curl_close($ch);
gen_log($url,$fields_string);
}
function gen_log($url,$fields_string){
$testo = "------\r\n".date("Y-m-d H:i:s")."\r\ngoogle_curl.php\r\n".$url.'?'.$fields_string."\r\n";
$var=fopen("logger.txt","a");
fwrite($var,$testo);
fclose($var);
}
function gen_uuid() {
return sprintf( '%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ),
mt_rand( 0, 0xffff ),
mt_rand( 0, 0x0fff ) | 0x4000,
mt_rand( 0, 0x3fff ) | 0x8000,
mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff )
);
} [/php]
3. Â Andare nel pannello di controllo di Paypal e all'indirizzo IPN settare https://www.tuosito.it/ipn/ipn.php;
L'elemento interessante di Gravity form è che ha già tutto predisposto, quindi di default l'IPN è questo, https://example.com/?page=gf_paypal_ipn però attenzione, attualmente non c'è un modo automatico per tracciare anche la transazione con Google Analytics, quindi Paypal comunica a Gravity form che la transazione è avvenuta ma Google Analytics non lo sa! E quindi come facciamo?
E qui viene il bello, bisogna creare una chiamata così,
add_action( 'gform_paypal_post_ipn', 'your_function_name', 10, 4) ;
e la funzione "your_function_name
" chiama il file https://www.tuosito.it/ipn/ipn.php che abbiamo visto poco sopra, il quale si occupa di comunicare con Google Analytics, qui trovate qualche indicazione https://www.gravityhelp.com/documentation/article/gform_paypal_post_ipn/
Ma possibile che non ci sia una cosa più semplice?
Si si c'è, non è più semplice ma è più ordinata e si capisce meglio, continuate a leggere e diventerà tutto più chiaro.
Infine arriviamo ad installare woo-commerce che ci risolve nativamente molte cose, prevede già un IPN https://example.com/?wc-api=WC_Gateway_Paypal ed è già integrato con Google Analytics per tracciare le transazioni, quindi ci risolve un pò di cose in maniera nativa.
Bene siamo arrivati alla fine con la domanda fatidica:
cosa succede se io dopo una transazione devo notificare a più servizi la mia transazione?
Facciamo un esempio:
Una volta che il prodotto/servizio è acquistato voglio comunicarlo ai seguenti servizi:
Come abbiamo visto Paypal comunica ad un indirizzo singolo IPN, quindi come facciamo a comunicare a tutti questi servizi?
Ci sono 2 soluzioni, una più intelligente e una più economica (a prima vista). Vediamole entrambe:
Inoltre vi mette a disposizione tutti i LOG delle chiamate e gestisce anche gli errori facendo partire magari una mail quando qualche cosa non funziona, non è finita qui, i sistemi di integrazione con altri programmi sono in continua crescita e si occupano loro di fare la manutenzione delle varie integrazioni.
"*" indica i campi obbligatori
Ti invieremo la nostra newsletter una volta al mese per comunicazioni importanti, novità , progetti e focus speciali sul mondo della comunicazione.
Siamo sicuri che non vedrai l’ora di trovarla nella tua Inbox e se un giorno non volessi più riceverla, potrai disiscriverti.
"*" indica i campi obbligatori
Idee, tecnologia, omnicanalità e cultura: in site By site abbiamo un approccio guidato dalle idee e ispirato dai dati, per creare valore per i brand, step By step.
Via Italo Bordin, 117 b/c
35010 Cadoneghe, Padova
Tel +39 049 629146
Email info@sitebysite.it
Corso Buenos Aires, 43
20124 Milano
Tel +39 02 365 90500