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.
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 }
});
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 });
Google Ads Conversion
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
- Faça um pedido de teste real (com gateway de teste, se disponível).
- Abra a página de obrigado.
- Inspecione com F12 → Network e veja a requisição do pixel sendo disparada.
- No Facebook/Google Ads, use Test Events ou Diagnostics para confirmar.