Guia de Integração WooCommerce
Este guia abrangente explica como integrar o Tajo com a sua loja WooCommerce para desbloquear um poderoso envolvimento com clientes, programas de fidelidade e capacidades de automação de marketing.
Visão Geral
A integração Tajo-WooCommerce permite-lhe:
- Sincronizar dados de clientes automaticamente da sua loja WooCommerce
- Rastrear pedidos e produtos para marketing personalizado
- Executar programas de fidelidade com pontos, níveis e recompensas
- Automatizar campanhas de marketing via Brevo (e-mail, SMS, WhatsApp)
- Segmentar clientes por comportamento de compra e envolvimento
- Recuperar carrinhos abandonados com sequências automatizadas
Pré-requisitos
Antes de iniciar a integração, certifique-se de que tem:
- Site WordPress com WooCommerce instalado (versão 7.0+)
- Conta Tajo com uma subscrição ativa
- Conta Brevo (opcional, para automação de marketing)
- Acesso de administrador ao seu site WordPress
- PHP 7.4+ e WordPress 6.0+
Passo 1: Instalar o Plugin Tajo
A partir do Diretório de Plugins WordPress
- Aceda ao painel de administração do WordPress
- Navegue até Plugins → Adicionar Novo
- Procure por “Tajo for WooCommerce”
- Clique em Instalar Agora e depois em Ativar
- Aceda a WooCommerce → Tajo para configurar
Instalação Manual
Se preferir a configuração manual:
# Descarregar o plugincd wp-content/pluginswget https://downloads.tajo.io/woocommerce/tajo-woocommerce-latest.zip
# Descomprimir e instalarunzip tajo-woocommerce-latest.zipEm seguida, ative a partir do painel WordPress:
- Aceda a Plugins → Plugins Instalados
- Encontre “Tajo for WooCommerce”
- Clique em Ativar
Configuração
Navegue até WooCommerce → Tajo → Definições e introduza as suas credenciais:
// Estas definições são configuradas através do painel de administração// ou podem ser adicionadas ao wp-config.php para configurações avançadas
define('TAJO_API_KEY', 'your_tajo_api_key');define('TAJO_API_SECRET', 'your_tajo_api_secret');define('BREVO_API_KEY', 'your_brevo_api_key'); // OpcionalPasso 2: Configurar Sincronização de Dados
Definições de Sincronização de Clientes
No painel do Tajo, configure quais os dados de clientes a sincronizar:
{ "sync_settings": { "customers": { "enabled": true, "sync_frequency": "real-time", "fields": [ "email", "first_name", "last_name", "billing_phone", "accepts_marketing", "total_spent", "order_count", "date_created", "billing_address", "shipping_address" ] }, "orders": { "enabled": true, "sync_frequency": "real-time", "include_line_items": true, "include_shipping": true }, "products": { "enabled": true, "sync_frequency": "hourly", "include_variations": true, "include_images": true } }}Hooks do WooCommerce
O Tajo integra-se automaticamente nestas ações do WooCommerce:
| Hook | Propósito |
|---|---|
woocommerce_created_customer | Sincronizar novos clientes para Tajo e Brevo |
woocommerce_update_customer | Manter perfis de clientes atualizados |
woocommerce_new_order | Rastrear compras, atribuir pontos de fidelidade |
woocommerce_order_status_completed | Acionar campanhas pós-compra |
woocommerce_order_status_processing | Enviar confirmação de pedido |
woocommerce_cart_updated | Rastrear carrinho para recuperação de abandono |
woocommerce_update_product | Manter catálogo de produtos sincronizado |
Importação Inicial de Dados
Para lojas existentes, importe dados históricos:
<?php// Importar clientes existentes para o Tajofunction tajo_import_existing_customers() { $customers = get_users([ 'role' => 'customer', 'number' => -1 ]);
foreach ($customers as $customer) { $customer_data = new WC_Customer($customer->ID);
tajo_sync_customer([ 'email' => $customer_data->get_email(), 'firstName' => $customer_data->get_first_name(), 'lastName' => $customer_data->get_last_name(), 'phone' => $customer_data->get_billing_phone(), 'totalSpent' => $customer_data->get_total_spent(), 'ordersCount' => $customer_data->get_order_count(), 'source' => 'woocommerce', 'externalId' => $customer->ID ]); }}
// Executar importaçãotajo_import_existing_customers();Passo 3: Configurar Programa de Fidelidade
Configurar Sistema de Pontos
Defina como os clientes ganham pontos em WooCommerce → Tajo → Fidelidade:
<?php// Configuração de pontos$points_config = [ // Pontos por valor gasto 'purchase_points' => [ 'enabled' => true, 'rate' => 1, // 1 ponto por $1 'rounding_mode' => 'floor' ],
// Ações de bónus 'bonus_points' => [ 'account_creation' => 100, 'first_purchase' => 200, 'review_submitted' => 50, 'referral_made' => 500, 'birthday_bonus' => 100, 'newsletter_signup' => 25 ],
// Multiplicadores por nível 'tier_multipliers' => [ 'Bronze' => 1.0, 'Silver' => 1.25, 'Gold' => 1.5, 'Platinum' => 2.0 ]];Shortcodes do Widget de Fidelidade
Apresente informações de fidelidade no seu site:
// Saldo de pontos do cliente[tajo_points_balance]
// Histórico de pontos[tajo_points_history limit="10"]
// Estado do nível atual[tajo_loyalty_tier]
// Recompensas disponíveis[tajo_rewards_catalog]
// Link de indicação[tajo_referral_link]Definir Níveis de Fidelidade
<?php$loyalty_tiers = [ [ 'name' => 'Bronze', 'min_points' => 0, 'benefits' => [ '1 ponto por $1 gasto', 'Pontos bónus de aniversário', 'Promoções exclusivas para membros' ] ], [ 'name' => 'Silver', 'min_points' => 1000, 'benefits' => [ 'Multiplicador de pontos 1,25x', 'Envio gratuito em pedidos acima de $50', 'Acesso antecipado a saldos' ] ], [ 'name' => 'Gold', 'min_points' => 5000, 'benefits' => [ 'Multiplicador de pontos 1,5x', 'Envio gratuito em todos os pedidos', 'Acesso exclusivo a produtos', 'Suporte ao cliente prioritário' ] ], [ 'name' => 'Platinum', 'min_points' => 15000, 'benefits' => [ 'Multiplicador de pontos 2x', 'Envio expresso gratuito', 'Experiências VIP', 'Assistente de compras pessoal', 'Oferta anual' ] ]];Criar Catálogo de Recompensas
<?php$rewards = [ [ 'id' => 'discount_5', 'name' => '$5 de Desconto', 'points_cost' => 500, 'type' => 'fixed_cart', 'value' => 5, 'min_purchase' => 25 ], [ 'id' => 'discount_10', 'name' => '$10 de Desconto', 'points_cost' => 900, 'type' => 'fixed_cart', 'value' => 10, 'min_purchase' => 50 ], [ 'id' => 'percent_10', 'name' => '10% de Desconto', 'points_cost' => 750, 'type' => 'percent', 'value' => 10, 'max_discount' => 50 ], [ 'id' => 'free_shipping', 'name' => 'Envio Gratuito', 'points_cost' => 300, 'type' => 'free_shipping' ]];Passo 4: Recuperação de Carrinho Abandonado
Configurar Rastreamento do Carrinho
<?php// Rastrear atualizações do carrinhoadd_action('woocommerce_cart_updated', 'tajo_track_cart');
function tajo_track_cart() { if (!is_user_logged_in() && !WC()->session->get('tajo_guest_email')) { return; // Necessário e-mail para rastreamento }
$cart = WC()->cart; if ($cart->is_empty()) { return; }
$customer_email = is_user_logged_in() ? wp_get_current_user()->user_email : WC()->session->get('tajo_guest_email');
$cart_items = []; foreach ($cart->get_cart() as $item) { $product = $item['data']; $cart_items[] = [ 'productId' => $item['product_id'], 'variantId' => $item['variation_id'] ?: null, 'title' => $product->get_name(), 'quantity' => $item['quantity'], 'price' => $product->get_price(), 'image' => wp_get_attachment_url($product->get_image_id()) ]; }
tajo_api_call('carts/track', [ 'email' => $customer_email, 'cartToken' => WC()->session->get_customer_id(), 'items' => $cart_items, 'totalPrice' => $cart->get_total('edit'), 'currency' => get_woocommerce_currency(), 'checkoutUrl' => wc_get_checkout_url() ]);}Capturar E-mail de Visitante
<?php// Capturar e-mail no checkout para recuperação de visitantesadd_action('woocommerce_after_checkout_billing_form', 'tajo_capture_guest_email_js');
function tajo_capture_guest_email_js() { ?> <script> jQuery(function($) { $('#billing_email').on('blur', function() { var email = $(this).val(); if (email && email.includes('@')) { $.post('<?php echo admin_url('admin-ajax.php'); ?>', { action: 'tajo_capture_email', email: email, nonce: '<?php echo wp_create_nonce('tajo_email_capture'); ?>' }); } }); }); </script> <?php}
add_action('wp_ajax_nopriv_tajo_capture_email', 'tajo_capture_email_handler');function tajo_capture_email_handler() { check_ajax_referer('tajo_email_capture', 'nonce'); WC()->session->set('tajo_guest_email', sanitize_email($_POST['email'])); wp_die();}Configurar Sequência de Recuperação
{ "abandoned_cart_sequence": { "trigger": { "event": "cart_abandoned", "delay": "1 hour" }, "messages": [ { "delay": "1 hour", "channel": "email", "template": "cart_reminder_1", "subject": "Você deixou algo para trás!" }, { "delay": "24 hours", "channel": "email", "template": "cart_reminder_2", "subject": "O seu carrinho está à espera - 10% de desconto incluído" }, { "delay": "72 hours", "channel": "sms", "template": "cart_sms_final", "message": "Última oportunidade! O seu carrinho está prestes a expirar. Conclua a sua encomenda: {{checkout_url}}" } ], "exit_conditions": [ "order_completed", "cart_emptied", "unsubscribed" ] }}Passo 5: Automação de Marketing com Brevo
Segmentos de Clientes
Crie segmentos com base nos dados do WooCommerce:
<?php$woo_segments = [ // Comportamento de compra [ 'name' => 'Primeiras Compras', 'conditions' => ['order_count' => 1] ], [ 'name' => 'Clientes Recorrentes', 'conditions' => ['order_count' => ['$gte' => 2]] ], [ 'name' => 'Clientes VIP', 'conditions' => ['total_spent' => ['$gte' => 500]] ], [ 'name' => 'Clientes em Risco', 'conditions' => [ 'last_order_date' => ['$lt' => '-90 days'], 'order_count' => ['$gte' => 2] ] ],
// Interesse em produtos [ 'name' => 'Categoria: Eletrónica', 'conditions' => ['purchased_categories' => ['$contains' => 'Electronics']] ],
// Envolvimento [ 'name' => 'Carrinho Abandonado', 'conditions' => ['has_abandoned_cart' => true] ]];Gatilhos de Campanha Automatizados
<?php// Pedido concluído - atribuir pontos e acionar campanhasadd_action('woocommerce_order_status_completed', 'tajo_order_completed', 10, 1);
function tajo_order_completed($order_id) { $order = wc_get_order($order_id); $customer_email = $order->get_billing_email();
// Obter ou criar cliente no Tajo $customer = tajo_get_customer($customer_email);
// Calcular e atribuir pontos $points_earned = tajo_calculate_points($order, $customer); tajo_award_points($customer['id'], $points_earned, [ 'reason' => 'purchase', 'orderId' => $order_id ]);
// Enviar para Brevo para campanhas brevo_track_event($customer_email, 'order_completed', [ 'order_id' => $order_id, 'order_total' => $order->get_total(), 'points_earned' => $points_earned, 'loyalty_tier' => $customer['loyaltyTier'], 'products' => array_map(function($item) { return $item->get_name(); }, $order->get_items()) ]);}
// Campanha de pedido de avaliação pós-compra$review_request_campaign = [ 'trigger' => 'order_completed', 'delay' => '14 days', // Aguardar tempo para entrega 'template' => 'review_request', 'conditions' => [ 'customer_opted_in' => true ]];
// Campanha de reativação$win_back_campaign = [ 'trigger' => 'customer_inactive', 'conditions' => [ 'last_order_date' => '-90 days', 'order_count' => ['$gte' => 1] ], 'sequence' => [ ['delay' => '0', 'template' => 'we_miss_you', 'offer' => '15% de desconto'], ['delay' => '7 days', 'template' => 'win_back_2', 'offer' => '20% de desconto'], ['delay' => '14 days', 'template' => 'final_offer', 'offer' => '25% de desconto'] ]];Passo 6: Recomendações de Produtos
Configurar Motor de Recomendações
<?php$recommendation_config = [ 'algorithms' => [ [ 'name' => 'frequently_bought_together', 'weight' => 0.3 ], [ 'name' => 'similar_products', 'weight' => 0.25 ], [ 'name' => 'customer_also_viewed', 'weight' => 0.2 ], [ 'name' => 'trending_in_category', 'weight' => 0.15 ], [ 'name' => 'personalized_for_you', 'weight' => 0.1 ] ], 'filters' => [ 'exclude_purchased' => true, 'exclude_out_of_stock' => true, 'min_rating' => 3.5 ]];Apresentar Recomendações
// Shortcode para recomendações de produtos[tajo_recommendations limit="4" algorithm="frequently_bought_together"]
// Ou usar em templates<?php$recommendations = tajo_get_recommendations([ 'customer_id' => get_current_user_id(), 'limit' => 4, 'context' => 'product_page', 'current_product' => get_the_ID()]);
foreach ($recommendations as $product_id) { $product = wc_get_product($product_id); // Apresentar produto}?>Passo 7: Análise e Relatórios
Painel de Métricas Principais
Aceda às análises em WooCommerce → Tajo → Análise ou via API:
<?php$dashboard_metrics = [ // Métricas de clientes 'customers' => [ 'total' => tajo_analytics_count('customers'), 'new_this_month' => tajo_analytics_count('customers', [ 'created_at' => ['$gte' => 'this_month'] ]), 'returning_rate' => tajo_analytics_returning_customer_rate() ],
// Métricas de receita 'revenue' => [ 'total' => tajo_analytics_sum('orders.total'), 'average_order_value' => tajo_analytics_avg('orders.total'), 'revenue_per_customer' => tajo_analytics_revenue_per_customer() ],
// Métricas de fidelidade 'loyalty' => [ 'active_members' => tajo_analytics_count('loyalty_members', [ 'status' => 'active' ]), 'points_issued' => tajo_analytics_sum('points.awarded'), 'points_redeemed' => tajo_analytics_sum('points.redeemed'), 'redemption_rate' => tajo_analytics_points_redemption_rate() ],
// Métricas de campanhas 'campaigns' => [ 'emails_sent' => brevo_analytics_emails_sent('this_month'), 'open_rate' => brevo_analytics_open_rate('this_month'), 'click_rate' => brevo_analytics_click_rate('this_month'), 'revenue_attributed' => tajo_analytics_campaign_revenue('this_month') ]];Resolução de Problemas
Problemas Comuns
Conflitos de Plugins
<?php// Verificar conflitos de pluginsfunction tajo_check_conflicts() { $conflicts = [];
$problematic_plugins = [ 'some-caching-plugin/plugin.php', 'aggressive-minifier/plugin.php' ];
foreach ($problematic_plugins as $plugin) { if (is_plugin_active($plugin)) { $conflicts[] = $plugin; } }
return $conflicts;}Verificação de Webhook
<?php// Verificar assinatura de webhook do Tajofunction tajo_verify_webhook($payload, $signature) { $expected = hash_hmac( 'sha256', $payload, get_option('tajo_webhook_secret') );
return hash_equals($expected, $signature);}Problemas de Sincronização
<?php// Depurar problemas de sincronizaçãofunction tajo_debug_sync($customer_id) { $customer = new WC_Customer($customer_id);
error_log('Tajo Sync Debug para Cliente ' . $customer_id); error_log('E-mail: ' . $customer->get_email()); error_log('Total Gasto: ' . $customer->get_total_spent()); error_log('Número de Pedidos: ' . $customer->get_order_count());
// Testar ligação à API $response = tajo_api_call('ping'); error_log('Resposta API: ' . print_r($response, true));}Limitação de Taxa
<?php// Implementar limitação de taxa para chamadas à APIfunction tajo_rate_limited_call($endpoint, $data, $retries = 3) { for ($i = 0; $i < $retries; $i++) { $response = tajo_api_call($endpoint, $data);
if (!is_wp_error($response)) { return $response; }
if ($response->get_error_code() === 'rate_limited') { $delay = pow(2, $i) * 1000000; // Retrocesso exponencial em microssegundos usleep($delay); continue; }
break; }
return $response;}Próximos Passos
- Configurar a Integração Brevo para campanhas de e-mail/SMS
- Configurar Webhooks para eventos em tempo real
- Criar Segmentos de Clientes para marketing direcionado
- Criar Modelos de E-mail para campanhas automatizadas
Suporte
- Suporte de Integração: [email protected]
- Documentação WooCommerce: woocommerce.com/documentation
- Referência API: docs.tajo.io/api
- Fórum da Comunidade: community.tajo.io