Rishidocs

Tag de conversão

2 min de leituraAtualizado há 1 semana

A página de obrigado é o ponto exato pra disparar pixels de conversão (Facebook, Google Ads, TikTok). O Checkout Rishi expõe o hook wc_smart_checkout_head para inserir scripts no <head> apenas dessa página.

Plugin dedicado é melhor

Se você usa Pixel Your Site, GA4 ou similar, deixe o plugin lidar com tracking. Eles têm lógica de deduplicação melhor e cobrem o site inteiro. Use os snippets desta página apenas se você precisa de algo bem específico que o plugin não cobre.

Disparar só em pedidos pagos

A conversão "real" acontece quando o pedido está pago. Esse é o cenário mais correto:

add_action( 'wc_smart_checkout_head', function() {
  if ( is_order_received_page() ) {

    global $wp;
    $order_id = absint( $wp->query_vars['order-received'] );
    $order = wc_get_order( $order_id );

    if ( ! $order || ! $order->is_paid() ) {
      return;
    }
    ?>

    <!-- COLOCAR O SCRIPT AQUI -->

  <?php }
});

Substitua o comentário COLOCAR O SCRIPT AQUI pelo seu pixel.

Disparar em todos os pedidos

Em muitos casos vale disparar a conversão em todos os pedidos, mesmo os pendentes:

add_action( 'wc_smart_checkout_head', function() {
  if ( is_order_received_page() ) { ?>

    <!-- COLOCAR O SCRIPT AQUI -->

  <?php }
});
Subnotificação vs sobrenotificação

Disparar apenas em pagos subnotifica casos onde o gateway processa o pagamento de forma assíncrona (cliente sai da página antes do callback chegar).

Disparar em todos os pedidos sobrenotifica casos onde o pedido não chega a ser pago.

A escolha depende do gateway que você usa. Pix instantâneo? Conte só pagos. Boleto? Conte todos. Cartão com 3DS? Considere todos com revisão posterior.

Pixels comuns

Facebook Pixel (Purchase event)

add_action( 'wc_smart_checkout_head', function() {
  if ( ! is_order_received_page() ) return;

  global $wp;
  $order_id = absint( $wp->query_vars['order-received'] );
  $order = wc_get_order( $order_id );
  if ( ! $order ) return;
  ?>
  <script>
    fbq('track', 'Purchase', {
      value: <?php echo esc_js( $order->get_total() ); ?>,
      currency: '<?php echo esc_js( $order->get_currency() ); ?>'
    });
  </script>
<?php });
add_action( 'wc_smart_checkout_head', function() {
  if ( ! is_order_received_page() ) return;

  global $wp;
  $order_id = absint( $wp->query_vars['order-received'] );
  $order = wc_get_order( $order_id );
  if ( ! $order ) return;
  ?>
  <script>
    gtag('event', 'conversion', {
      'send_to': 'AW-XXXXXXXXX/XXXXXXXX',
      'value': <?php echo esc_js( $order->get_total() ); ?>,
      'currency': '<?php echo esc_js( $order->get_currency() ); ?>',
      'transaction_id': '<?php echo esc_js( $order->get_id() ); ?>'
    });
  </script>
<?php });

GA4 Purchase event

add_action( 'wc_smart_checkout_head', function() {
  if ( ! is_order_received_page() ) return;

  global $wp;
  $order_id = absint( $wp->query_vars['order-received'] );
  $order = wc_get_order( $order_id );
  if ( ! $order ) return;

  $items = [];
  foreach ( $order->get_items() as $item ) {
    $items[] = [
      'item_id' => $item->get_product_id(),
      'item_name' => $item->get_name(),
      'price' => $order->get_item_total( $item ),
      'quantity' => $item->get_quantity(),
    ];
  }
  ?>
  <script>
    gtag('event', 'purchase', {
      transaction_id: '<?php echo esc_js( $order->get_id() ); ?>',
      value: <?php echo esc_js( $order->get_total() ); ?>,
      currency: '<?php echo esc_js( $order->get_currency() ); ?>',
      items: <?php echo wp_json_encode( $items ); ?>
    });
  </script>
<?php });

Onde colocar o snippet

Use Code Snippets ou adicione no functions.php do tema filho. Não edite arquivos do plugin diretamente — qualquer update sobrescreve.

Testar

  1. Faça um pedido de teste real (com gateway de teste, se disponível).
  2. Abra a página de obrigado.
  3. Inspecione com F12 → Network e veja a requisição do pixel sendo disparada.
  4. No Facebook/Google Ads, use Test Events ou Diagnostics para confirmar.
Foi útil?