Conversioni Personalizzate Facebook: cosa sono e come si usano

Le conversioni personalizzate di Facebook Ads sono uno strumento incredibilmente utile e potente per riuscire a tracciare tutti quegli eventi che non potremmo coprire utilizzando gli standard events (i quali hanno già le rispettive conversioni associate).

Facebook Ads e iOS 14: ora è possibile creare adSet ottimizzati per eventi non prioritizzati

Puoi integrarle sul tuo sito web sia utilizzando lo strumento predisposto da Facebook (e in questo caso non sarà necessario intervenire sul codice del sito web), oppure creando gli eventi personalizzati (da codice o con Google Tag Manager) e le relative conversioni.

In questa guida vedremo come utilizzare le conversioni personalizzate e come integrarle sul sito web utilizzando tutti i diversi metodi elencati poco fa.

Differenza tra eventi e conversioni

Se utilizzi Facebook Ads facendo campagne con obiettivo di Conversione ti sarà chiaro che la piattaforma prevede una serie di conversioni — per così dire — native, che grazie a Pixel di monitoraggio e Conversion API vengono lanciate ogniqualvolta sul sito web (se quest’ultimo è correttamente configurato) un utente scatena un evento standard.

Lavorando con gli Standard Events siamo abituati a vedere eventi e conversioni come una cosa sola. In realtà non è così e specialmente lavorando con eventi e conversioni personalizzate dobbiamo abituarci a tenere i due concetti separati.

In poche parole: un evento si limita a segnalare a Facebook che è successo qualcosa; se vuoi fare in modo che Gestione inserzioni e Report indichino il numero di volte in cui un evento è imputabile a un elemento pubblicitario (campagne, gruppi di inserzioni o inserzioni) secondo modello e finestra di attribuzione, è necessario creare una conversione collegata a quell’evento.

Come ti dicevo, questo processo di associazione evento/conversione avviene sempre, anche se in alcuni casi non ce ne accorgiamo perché Facebook se ne occupa per conto nostro.

Cosa sono le Conversioni personalizzate

Una conversione personalizzata è, appunto, una conversione che viene lanciata quando viene generato un evento personalizzato o un evento standard filtrato secondo regole personalizzate.

Al pari delle normali conversioni possono essere utilizzate per l’ottimizzazione della pubblicazione delle campagne e possono prevedere uno o più parametri utili per arricchire le informazioni che raccogliamo in occasione del verificarsi dell’evento che la genera.

Vediamo ora le diverse possibilità che abbiamo per generare una conversione personalizzata.

Per utilizzare le conversioni personalizzate è necessario che sul sito sia installato correttamente il Pixel di Monitoraggio e, per tracciare gli utenti che navigano utilizzando iOS 14.5 o successivi, le Conversion API.

Come creare una Conversione personalizzata utilizzando l’interfaccia di Facebook Ads

Come ti dicevo, utilizzando questo metodo non è necessario scrivere codice. Tuttavia tieni conto che limitandoti a questo tipo di conversioni personalizzate perdi diverse opportunità di tracciamento e quindi, anche se è un buon modo per iniziare, dovrai prima o poi passare oltre.

Dunque iniziamo. Una volta su Business Manager seleziona lo strumento Gestione eventi, quindi, dopo aver selezionato l’account pubblicitario su cui hai intenzione di lavorare, dalla sidebar di sinistra, clicca su Conversioni personalizzate.

Il menù Business Manager per creare Conversioni personalizzate

Clicca su Crea conversione personalizzata e ti dovresti ritrovare in questa situazione.

Facebook Ads Strumento creazione conversioni personalizzate

Nel caso in cui l’Evento di conversione selezionato sia diverso, clicca sul menù a tendina e seleziona Traffico da tutti gli URL. Vedremo più avanti le altre scelte.

Ora possiamo lavorare alla costruzione della regola che determina il verificarsi dell’evento e, quindi, della nostra conversione.

Avendo selezionato l’evento Traffico da tutti gli URL, siamo vincolati al caricamento delle pagine per determinare se e quando lanciare la conversione. Vediamo dunque le regole a disposizione.

Le regole

I criteri di corrispondenza con i quali possiamo costruire una Custom Conversion sono tre:

Le regole disponibili per creare una Conversione personalizzata

Se in passato hai creato una Custom Audience avrai sicuramente già incontrato URL Contiene e URL Uguale a.

Se volessi creare una regola in grado di determinare quali visitatori abbiano visitato questo articolo potrei procedere indistintamente in uno dei due seguenti modi:

  • URL Contiene: /conversioni-personalizzate-facebook-guida/
  • URL Uguale a: www.coine.it/social-media-marketing/conversioni-personalizzate-facebook-guida/ (http:// o https:// non sono necessari)

Naturalmente le due opzioni non sono sempre equivalenti, per cui dovrai essere in grado di decidere caso per caso a seconda di come vengono generati gli URL delle pagine del tuo sito.

In linea di massima, grazie a Contiene o Non contiene puoi isolare dei gruppi di pagine in base all’url che viene generato per i vari contenuti. Ti faccio qualche esempio:

  • URL Contiene /marketing-online/ mi consentirebbe di isolare tutte le visualizzazioni di articoli appartenenti alla categoria Marketing e dintorni di Coiné;
  • URL Non Contiene /shop/ mi permetterebbe di isolare tutto il traffico a parte quello dello shop di un eCommerce

E così via. Come ti dicevo i criteri sono in tutto e per tutto dipendenti dalla struttura delle Url del sito web su cui stai lavorando.

Qualsiasi criterio di corrispondenza tu scelga, puoi inserire più di un valore nella stessa casella di testo. In questo caso, i vari valori saranno concatenati secondo disgiunzione logica (OR). Ciò significa che la condizione sarà vera (e quindi la conversione verrà lanciata) se almeno uno delle regole indicate sarà vera.

Disgiunzione logica nelle condizioni di creazione delle conversioni personalizzate
In questo caso la conversione verrà lanciata nel caso in cui la pagina visualizzata sia quella della Privacy Policy oppure quella dei Termini d’uso.

Cliccando invece sul tasto + accanto alla casella di testo viene generato un nuovo componente per la regola e in questo caso le condizioni per il lancio della conversione personalizzata saranno concatenate secondo congiunzione logica (AND), quindi la condizione sarà vera solo se entrambe le regole saranno vere.

Congiunzione logica nelle condizioni di creazione delle conversioni personalizzate
In questo caso la conversione verrà lanciata nel caso in cui l’indirizzo della pagina visualizzata contenga entrambe le stringhe indicate.

Oltre all’URL, con questo metodo possiamo creare regole che utilizzano il Referring Domain, ovvero il dominio dal quale proviene l’utente e valutare gli Event Parameters eventualmente associati alla visualizzazione di pagina.

Creando una Conversione in questo modo hai quindi utilizzato un evento esistente (Page View) e l'hai ottimizzato secondo le regole impostate. Ancora una volta ti faccio notare che evento e conversione non sono la stessa cosa.

Il prossimo step consiste dunque nella selezione di una Categoria. Cliccando su Seleziona una categoria Facebook ci chiederà di scegliere un evento standard per l’ottimizzazione della conversione personalizzata.

Hai a disposizione diverse possibilità, fondamentalmente tutti gli eventi standard più due opzioni:

  • Categoria selezionata da Facebook (opzione consigliata)
  • Altro (per gli eventi che non possono essere categorizzati per affinità con gli standard events)

Selezionando una di queste opzioni stiamo appunto dicendo a Facebook che la conversione personalizzata che stiamo creando è affine a quella standard che abbiamo scelto e l’informazione verrà utilizzata per migliorare l’efficacia degli algoritmi di apprendimento nel caso in cui la conversione dovesse essere utilizzata per l’ottimizzazione della pubblicazione delle campagne.

Dunque, ecco come appare una Custom Conversion dedicata ai lettori degli articoli contenuti nella categoria Marketing e dintorni:

Conversione personalizzata per tutti i lettori degli articoli nella categoria Marketing e dintorni

Dopo aver cliccato sul tasto Crea, il processo di creazione è terminato e veniamo riportati all’elenco delle Custom Conversion Create in precedenza.

Creare una conversione personalizzata da codice, dal sito o con Google Tag Manager

La vita dell’utente su un sito web non si può ridurre alle visualizzazioni di pagina. Sarebbe troppo riduttivo e limitante per quanto riguarda le nostre possibilità di tracciare le conversioni e, soprattutto, di creare audience basate sugli utenti che le generano.

Con il metodo che ti ho indicato poco fa non puoi valutare il tempo di permanenza sulla pagina, il livello di scroll, gli elementi cliccati, video riprodotti o altre cose che potrebbe interessarti sapere. Per generare questo tipo di conversioni dobbiamo fare un passo avanti e iniziare a prendere in considerazione il codice.

Per prima cosa dobbiamo creare un evento personalizzato. Facebook ci mette a disposizione una funzione Javascript che possiamo richiamare per generare un evento.

<script>
    fbq('trackCustom', 'nomeEvento', {
        parametro: 'valore',
    } , {'eventID: 'ID_evento'} );
</script>

La sintassi è semplice.

Il primo parametro è la stringa ‘trackCustom’ che indica a Facebook che quello che vogliamo lanciare è un evento personalizzato.

Il secondo parametro è il nome dell’evento. Non ci sono particolari limitazioni per quanto riguarda il nome, tuttavia ti consiglio di trovare una sintassi e utilizzarla per tutti i tuoi eventi, in modo da non creare confusione sugli account.

Il terzo parametro è un oggetto contenente le proprietà dell’evento. Anche in questo caso non ci sono limitazioni, purché i nomi delle proprietà siano compatibili con quelli di una variabile Javascript.

Il quarto parametro è un ulteriore oggetto che ti serve per passare l’eventID utile per la deduplicazione degli eventi nel caso in cui il tuo sito implementi le Conversion API e l’evento venga inviato a Facebook utilizzando sia la comunicazione lato client, sia quella lato server.

Se stai lavorando direttamente sul sito web dovrai utilizzare Javascript (o jQuery) per determinare il momento in cui lanciare un evento e lanciarlo. Quindi per esempio:

$(window).load(function() {
    $(window).one('scroll', function() {
       if($(window).scrollTop() >= $(document).height() / 2 ){
           fbq('trackCustom', 'halfPageScroll', {
               pagePath: document.location.pathname,
           },{ eventID: 'ID_Evento'});
       }
    });
});

In questo esempio, utilizzo il metodo one per lanciare una sola volta per ogni pagina un evento personalizzato quando l’utente ha scrollato più del 50% della lunghezza della pagina. Associo inoltre all’evento un parametro che mi permette di tenere traccia della pagina su cui è stato lanciato l’evento e passo inoltre l’ID dell’evento (generato casualmente) per la deduplicazione.

Eventi personalizzati con Google Tag Manager

Se non vuoi mettere mano al codice del sito puoi sempre ricorrere a Google Tag Manager.

In questo caso è necessario creare un nuovo TAG Custom HTML. Il contenuto del TAG sarà identico a quello che abbiamo visto poco fa.

custom event facebook con google tag manager

Rispetto all’esempio precedente, per lanciare l’evento dovremo creare un Trigger. In questo caso abbiamo a disposizione il trigger Scroll Depth che ci permette di fare esattamente quello che vogliamo.

tag manager scroll depth

A ben vedere non è un grandissimo risparmio di tempo, ma ti permette di evitare di modificare il codice del sito, cosa che in alcuni casi si rivela molto utile e in grado di far risparmiare molto tempo.

Gli eventi personalizzati con le Conversion API

Come ormai ben sai, il tracciamento è diventato sempre più difficile, specialmente dopo l’introduzione di iOS 14.5. Uno dei modi in cui Facebook ha risposto a queste limitazioni è l’introduzione delle Conversion API. Ne ho già parlato in altri articoli, per cui non mi dilungo più di tanto.

Per quello che ci interessa qui, il fatto è che per fare in modo che un evento personalizzato (e quindi la relativa conversione) funzionino correttamente anche per gli utenti iOS dobbiamo lanciarlo anche lato server. E qui le cose si fanno leggermente più complicate.

Per proseguire nella stesura di questo capitoletto devo per forza di cose dare per scontate un paio di cose. Suppongo infatti che tu abbia già abilitato le Conversion API e che sul tuo sito abbia a disposizione una delle librerie che Facebook mette a disposizione per gestire la conversazione lato server.

Inoltre, gli esempi seguenti saranno basati sull’architettura WordPress, quindi utilizzerò PHP come linguaggio di riferimento per le attività server-side. Bene, possiamo procedere.

Se hai anche solamente un’infarinatura del funzionamento delle pagine web, capirai facilmente che parlando di programmazione lato server abbiamo diverse limitazioni, perché fondamentalmente non potremo mai capire cosa sta facendo l’utente mentre visualizza le pagine del nostro sito.

Implementare un evento di conversione legato allo scroll così come abbiamo fatto poco fa sarebbe semplicemente impossibile. È quindi necessario ricorrere ad Ajax, in modo da permettere al server di reagire a eventi intercettati lato client.

Riprendiamo dunque l’esempio di prima e supponiamo di voler lanciare anche l’evento lato server subito dopo esserci occupati della chiamata lato client. Ecco come potremmo fare:

$(window).load(function() {
    $(window).one('scroll', function() {
       if($(window).scrollTop() >= $(document).height() / 2 ){
           let eventID = 'ID_Evento',
               eventParams = {
                   pagePath: document.location.pathname,
                   pageURL: document.location.href
               };

           fbq('trackCustom', 'halfPageScroll', eventParams,
               { eventID: eventID});

           $.ajax({
               url: coine.ajaxUrl,
               type: 'POST',
               data: {
                  action: 'push_custom_event',
                  eventName: 'halfPageScroll',
                  eventID: eventID,
                  eventParams: eventParams,
               },
               cache: false,
           });
       }
    });
});

Come vedi, abbiamo aggiunto una chiamata Ajax per permetterci di notificare al server la necessità di lanciare un evento custom. A questo punto non ci resta che scrivere il codice PHP necessario nel function.php del template (possibilmente nel Child Theme in modo da non rischiare di perdere le modifiche al primo aggiornamento del tema.

Nota che oltre agli altri parametri, passo al server anche l’ID dell’evento generato casualmente, in modo da poterlo associare anche alla chiamata via Conversion API.

require __DIR__ . '/vendor/autoload.php';

use FacebookAds\Api;
use FacebookAds\Logger\CurlLogger;
use FacebookAds\Object\ServerSide\ActionSource;
use FacebookAds\Object\ServerSide\Content;
use FacebookAds\Object\ServerSide\CustomData;
use FacebookAds\Object\ServerSide\DeliveryCategory;
use FacebookAds\Object\ServerSide\Event;
use FacebookAds\Object\ServerSide\EventRequest;
use FacebookAds\Object\ServerSide\UserData;

add_action('wp_ajax_nopriv_push_custom_event', 'fb_push_custom_event');
add_action('wp_ajax_push_custom_event', 'fb_push_custom_event');

function fb_push_custom_event():void
{
    
    // Controlliamo che tutti i parametri siano presenti in POST  
    if(isset($_POST['eventName']) && !empty($_POST['eventName'] &&
       isset($_POST['eventID']) && !empty($_POST['eventID'] && 
       isset($_POST['eventParams']) && !empty($_POST['eventParams'])){
    
        $access_token = '<ACCESS_TOKEN>';
        $pixel_id = '<ADS_PIXEL_ID>';

        $api = Api::init(null, null, $access_token);
        $api->setLogger(new CurlLogger());

        $user_data = (new UserData())
            ->setClientIpAddress($_SERVER['REMOTE_ADDR'])
            ->setClientUserAgent($_SERVER['HTTP_USER_AGENT'])
            ->setFbc($_COOKIE['_fbc'])
            ->setFbp($_COOKIE['_fbp']);

        if(is_user_logged_in()){
             $user_data->setEmails(array(get_current_user()->email));
        }

        $custom_data = (new CustomData())
            ->setContents(array($_POST['eventParams']));

        $event = (new Event())
            ->setEventName($_POST['eventName'])
            ->setEventTime(time())
            ->setEventSourceUrl($_POST['eventParams']['pageURL'])
            ->setUserData($user_data)
            ->setCustomData($custom_data)
            ->setActionSource(ActionSource::WEBSITE);

        $events = array();
        array_push($events, $event);

        $request = (new EventRequest($pixel_id))
            ->setEvents($events);
        $response = $request->execute();
    }
}

Effettivamente la comunicazione lato server è leggermente più complicata, ma niente di insormontabile. L’importante è prendersi tutto il tempo per studiare e capire la documentazione ufficiale.

Nel caso in cui volessi inviare un evento personalizzato utilizzando Google Tag Manager dovrai creare un Container Server-Side. Siccome questo articolo è già piuttosto lungo non mi spingo oltre. Forse tornerò in futuro su questo argomento, tuttavia per il momento ti rimando alla guida di Facebook dedicata appunto all'integrazione delle Conversion API utilizzando Google Tag Manager. 

Creare una conversione personalizzata da un evento personalizzato

Se tutto è andato per il meglio, dovremmo essere a un punto nel quale l’evento personalizzato viene inviato con successo sia lato server sia lato client e, grazie all’eventID associato a ogni chiamata, la deduplicazione avverrà con successo.

Sappiamo bene tuttavia che il nostro lavoro non è ancora terminato, perché un evento non è una conversione.

Torniamo quindi su Facebook e attendiamo che l’evento personalizzato compaia nella lista di quelli ricevuti di Gestione Eventi. Solitamente basta attendere pochi minuti.

Su Coiné utilizzo un evento chiamato Signal per inviare a Facebook tutte le interazioni che possono tornarmi utili per il targeting. Per l’esempio utilizzerò questo in modo da non dover creare nuovi eventi. È molto semplice.

Andiamo nuovamente nella sezione delle conversioni personalizzate, quindi creiamone una nuova. A questo punto, dal menù Evento di conversione andiamo a selezionare quello che abbiamo appena creato. Nel nostro esempio, Signal.

creazione conversione personalizzata da un evento personalizzato

Come nell’esempio precedente, possiamo poi selezionare una categoria e successivamente, nel caso in cui sia necessario, possiamo fissare delle regole (sempre per URL, Referrer e parametri dell’evento) in modo da filtrare solamente alcuni eventi per lanciare la conversione.

Ottimizzazione della pubblicazione per una Conversione personalizzata

Ora che abbiamo la nuova conversione personalizzata possiamo decidere di utilizzarla per ottimizzare la pubblicazione dei Gruppi di inserzioni. La troverai nell’elenco degli eventi di conversione di ogni AdSet dell’account.

Nel caso in cui la conversione sia lanciata anche lato server dovrai prioritizzarla in modo da poterla utilizzare per l’ottimizzazione anche per gli utenti iOS. Questa azione, obbligatoria subito dopo il lancio delle Conversion API, è oggi divenuta facoltativa. In ogni caso, se decidi di non farlo, gli annunci contenuti nel gruppo di inserzioni potrebbero non essere mostrati agli utenti che utilizzano il sistema operativo mobile Apple.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. Tutti i campi sono obbligatori.