Pular para o conteúdo
Google Analytics

GA4 — Informar evento “purchase” via API

Atualizado em
Capa do artigo: GA4 — Informar evento “purchase” via API

Olá Gente!

Certamente você já teve problemas ao enviar os eventos de compra para a Google, já que nem sempre a compra tem seu pagamento confirmado na hora para permitir o envio via Javascript.

No GA4 podemos enviar via API com muita facilidade!

A primeira coisa a fazer é copiar o código do GA4.

Para isto, acesse o painel da Google Analytc e clique em “Fluxos de Dados”, e copie o “ID da Métrica”:

Agora iremos gerar o Token, para isto, clique em “Chaves secretas da API do Measurement Protocol”:

Após isto clique em “Criar” e preencha um nome para identificar o Token:

Pronto! Copie o Token na coluna “Valor do secret”:

Agora temos que Obter o “client_id” da pessoa que esta navegando no site, para isto, iremos utilizar a função nativa do GA4 “gtag”:

<script language="javascript" type="text/javascript">
$(function() {

    try {
    
        gtag('get', 'G-XXXXXXXXX', 'client_id', (clientID) => {
        
            console.log("clientID", clientID);

        });
        
    }
    catch (e) {
    
        //

    }

});
</script>

Nesta função, preencha o “ID da Métrica” no lugar de “G-XXXXXXXXX” e salve o “clientID’.

Com esta informação, vamos ao PHP para enviar o evento “purchase”:

<?
$CfgIfn_Endpoint        = "https://www.google-analytics.com/mp/collect?api_secret=[api_secret]&measurement_id=[measurement_id]";
$CfgIfn_Payload         = '{
"client_id": "[client_id]",
"non_personalized_ads": false,
"events": [
    {
    "name": "purchase",
    "params": {
        "transaction_id": "1",
        "affiliation": "SiteTeste",
        "value": 100,
        "currency": "BRL",
        "tax": 0,
        "shipping": 0,
        "items": [{
            "item_id": "1",
            "item_name": "Notebook",
            "quantity": 1,
            "price": 100
        }]
    }
    }]
}';

# -------------------------------------------------------------------

$curl 		                = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL 				=> $CfgIfn_Endpoint,
CURLOPT_RETURNTRANSFER 		=> true,
CURLOPT_MAXREDIRS 			=> 10,
CURLOPT_TIMEOUT 			=> 30,
CURLOPT_SSL_VERIFYHOST 		=> false,
CURLOPT_SSL_VERIFYPEER 		=> false,
CURLOPT_CUSTOMREQUEST		=> "POST",
CURLOPT_POSTFIELDS 			=> $CfgIfn_Payload,
CURLOPT_HTTPHEADER 			=> array(
                            "Content-Type: application/json",
                            ),
));

$response 	                = curl_exec($curl);
$httpcode	                = curl_getinfo($curl, CURLINFO_HTTP_CODE);
$err 		                = curl_error($curl);

curl_close($curl);

var_dump($httpcode);
var_dump($response);
?>

Aqui precisamos preencher alguns campos:

  • [api_secret]: Preencha com a “Chaves secretas da API do Measurement Protocol” que geramos no Painel da Google
  • [measurement_id]: Preencha com o “ID da Métrica” que copiamos do painel da Google
  • [client_id]: Preencha com o “ClientId” que obtemos via javascript no site

E também atualize os dados do evento na variável “events”:

{ 
  "name": "purchase", 
  "params": { 
      "transaction_id": "1", 
      "affiliation": "SiteTeste", 
      "value": 100, 
      "currency": "BRL", 
      "tax": 0, 
      "shipping": 0, 
      "items": [{ 
          "item_id": "1", 
          "item_name": "Notebook", 
          "quantity": 1, 
          "price": 100 
      }] 
  } 
  }

Por hoje é só, pessoal! 🛑

Até mais! 👋