Guia de integração com o WooCommerce
Este guia conecta uma loja WooCommerce à Tajo. A integração tem duas metades que trabalham juntas:
- Plugin Tajo for WooCommerce: captura eventos de engajamento em tempo real (pedidos, carrinhos, reembolsos, avaliações, envios de formulário) dentro do WordPress e os entrega à Tajo por uma caixa de saída durável e assinada.
- Conexão REST do WooCommerce: a Tajo lê clientes, pedidos, produtos, cupons, reembolsos e avaliações da sua loja para a importação do histórico e a sincronização contínua. Veja a referência do conector WooCommerce para a configuração somente REST.
A automação de marketing em si (e-mail, SMS, WhatsApp via Brevo e outros provedores) é configurada na Tajo, não no plugin. O trabalho do plugin é tirar eventos confiáveis de dentro do WordPress.
Pré-requisitos
- WordPress 6.3+ com acesso de administrador
- PHP 7.4+
- WooCommerce 7.0+ (o plugin também funciona em sites WordPress sem WooCommerce; os adaptadores de e-commerce simplesmente ficam inativos)
- Conta Tajo com uma conexão WordPress criada
- HTTPS no endpoint da Tajo (sempre verdadeiro na Tajo hospedada)
Passo 1: instale o plugin Tajo for WooCommerce
Instalação manual
# Download the plugincd wp-content/pluginswget https://tajo.io/downloads/woocommerce/tajo-woocommerce-latest.zip
# Verify and unzipunzip tajo-woocommerce-latest.zipDepois ative pelo admin do WordPress:
- Vá em Plugins → Plugins instalados
- Encontre “Tajo for WooCommerce”
- Clique em Ativar
Você também pode enviar o zip diretamente por Plugins → Adicionar novo → Enviar plugin. Um checksum SHA-256 é publicado junto com cada versão em tajo.io/downloads/woocommerce/. O plugin ainda não está listado no diretório do WordPress.org; a instalação manual é o caminho com suporte hoje.
Passo 2: configure a conexão
Vá em WooCommerce → Tajo (em sites sem WooCommerce: Configurações → Tajo) e informe os três valores da sua conexão WordPress na Tajo:
| Campo | Valor |
|---|---|
| Endpoint da Tajo | A URL HTTPS de webhook exibida na Tajo, por exemplo https://alto.tajo.io/api/connectors/wordpress/webhooks/engagement |
| Binding ID | O binding ID da conexão, obtido na Tajo |
| Segredo de assinatura | O segredo compartilhado (32 a 256 caracteres). O plugin gera um segredo local forte na ativação; cole-o na Tajo, ou cole aqui o segredo da Tajo |
Não há constantes de chave de API para adicionar ao wp-config.php. Os eventos ficam guardados com segurança na caixa de saída local até que os três valores sejam salvos.
Depois verifique o caminho de ponta a ponta:
- Clique em Queue test event e depois em Process now.
- A tabela da caixa de saída de entrega deve mostrar o evento como entregue.
- Na Tajo, confirme que o evento
connection.testchegou na conexão WordPress.
O que o plugin envia
Cada evento é um envelope compacto, com dados pessoais minimizados, assinado com HMAC-SHA256. Só saem do WordPress os campos de identidade de engajamento (e-mail, telefone, IDs locais) e metadados limitados do evento, nunca nomes, endereços postais, endereços IP, user agents, corpos de comentários, campos livres de formulário, notas de pedido ou dados de pagamento.
Eventos do WooCommerce
| Hook | Evento |
|---|---|
woocommerce_created_customer / woocommerce_update_customer | customer.created / customer.updated |
woocommerce_new_product / woocommerce_update_product | product.created / product.updated |
woocommerce_add_to_cart, remoção de item, aplicação/remoção de cupom | cart.updated (com resumo do carrinho para fluxos de abandono) |
woocommerce_cart_emptied | cart.emptied |
woocommerce_new_order / woocommerce_update_order | order.placed / order.updated |
woocommerce_order_status_changed | order.status_changed (+ order.fulfilled na conclusão) |
woocommerce_payment_complete | order.paid |
woocommerce_order_refunded | refund.created |
| Atualizações de status do WooCommerce Subscriptions | subscription.status_changed |
Os eventos de pedido carregam número do pedido, status, moeda, totais, itens do pedido e URLs prontas de avaliação e recompra, o suficiente para automações pós-compra e de recuperação sem uma chamada de API adicional.
Eventos do WordPress
contact.created/contact.updated/contact.deletedpara contas de usuáriocontent.published/content.updated/content.unpublishedpara conteúdo públicocomment.created/comment.status_changedpara comentários de visitantes e avaliações de produtos (notas internas de pedido do WooCommerce, pingbacks e trackbacks nunca são emitidos)form.submittedpara envios bem-sucedidos de Contact Form 7, WPForms, Gravity Forms e Fluent Forms; só são extraídos os campos de identidade tipados como e-mail ou telefone e os metadados do formulário, os demais campos enviados são descartados
Confiabilidade: a caixa de saída de entrega
O plugin nunca dispara eventos para a Tajo direto de um carregamento de página. Cada evento é primeiro gravado em uma tabela de caixa de saída local, e depois entregue pelo WP-Cron com:
- Backoff exponencial limitado (até 8 tentativas, respeitando
Retry-After) - Dead letters com Replay dead letters em um clique no admin
- Limites de retenção para que um endpoint inacessível nunca acumule dados pessoais (entregues: 7 dias; na fila: 30 dias; dead letters: 30 dias após a última atualização)
- IDs de evento idempotentes, para que novas tentativas e reenvios nunca dupliquem nada no destino
Se sua hospedagem desativa o WP-Cron (DISABLE_WP_CRON), chame o wp-cron.php a partir de um agendador real pelo menos uma vez por minuto.
O consentimento nunca é inferido
Criação de conta, checkout, compra e envios genéricos de formulário não são tratados como consentimento de marketing. Os eventos nativos carregam uma lista de consentimentos vazia. Para registrar consentimento explícito (por exemplo, de uma caixa de newsletter marcada), emita-o pelo hook de extensão:
do_action( 'tajo_engagement_emit', 'consent.updated', array( 'email' => $email ), array( 'policyVersion' => '2026-07' ), array( array( 'channel' => 'email', 'status' => 'opt_in', // or 'opt_out' 'purpose' => 'marketing', 'source' => 'newsletter_checkbox', 'evidence' => array( 'formId' => 'newsletter-footer', 'field' => 'marketing_email' ), ), ), gmdate( 'c' ));O mesmo hook permite que qualquer plugin ou tema emita eventos personalizados; tudo passa pelo mesmo sanitizador, pela mesma caixa de saída e pela mesma assinatura.
Passo 3: importação do histórico
Os eventos em tempo real cobrem tudo a partir da instalação. Para o histórico anterior ao plugin, a conexão REST do WooCommerce da Tajo importa clientes, pedidos, produtos, cupons, reembolsos e avaliações existentes, configurada inteiramente do lado da Tajo com uma chave da API REST do WooCommerce (WooCommerce → Configurações → Avançado → API REST, permissão de leitura). Veja a referência do conector WooCommerce para os detalhes.
Privacidade e GDPR
- O plugin se registra em Ferramentas → Exportar dados pessoais e Ferramentas → Apagar dados pessoais do WordPress; os eventos retidos na caixa de saída para um e-mail correspondente são exportados ou apagados localmente.
- O apagamento e a entrega compartilham um mutex fail-closed, então um apagamento nunca pode informar conclusão enquanto um payload está no meio do envio.
- O apagamento local cobre apenas a caixa de saída do WordPress; envie a solicitação correspondente na Tajo para os dados no destino.
- A desativação pausa a entrega, mas mantém a configuração e os eventos na fila; excluir o plugin remove permanentemente a caixa de saída, as configurações, o segredo e os agendamentos.
Compatibilidade
- HPOS: o plugin declara compatibilidade com o WooCommerce High-Performance Order Storage e usa apenas objetos CRUD e hooks públicos.
- WooCommerce Subscriptions: as mudanças de status de assinatura são capturadas quando a extensão está ativa.
- Multisite: a desinstalação limpa todos os sites da rede.
Referência de operações
A descoberta server-to-server e o controle da caixa de saída ficam disponíveis para administradores por autenticação com Application Password:
| Método | Rota | Finalidade |
|---|---|---|
GET | /wp-json/tajo/v1/capabilities | Versão do plugin, adaptadores detectados, inventário de eventos, saúde da caixa de saída |
GET | /wp-json/tajo/v1/outbox | Contagens da caixa de saída (os payloads nunca são expostos) |
POST | /wp-json/tajo/v1/outbox/process | Processar um lote imediatamente |
POST | /wp-json/tajo/v1/outbox/replay | Reenviar dead letters |
Solução de problemas
| Sintoma | Causa e correção |
|---|---|
| Os eventos ficam em “Queued” | Endpoint, binding ID ou segredo ainda não salvos; a entrega fica pausada até que os três estejam configurados |
| Os eventos ficam em “Retrying” | O endpoint da Tajo está inacessível a partir da sua hospedagem, ou o WP-Cron não está rodando; confira a coluna de erro da tabela da caixa de saída e a configuração do cron |
| Dead letters se acumulam | Um erro não recuperável (em geral binding ID ou segredo errado); corrija a configuração e depois use Replay dead letters |
| ”Enter a valid HTTPS Tajo webhook endpoint” | O endpoint precisa ser HTTPS e sem credenciais embutidas |
| Evento de teste entregue, mas nada na Tajo | Verifique se você colou o binding ID do mesmo workspace ou da mesma conexão da Tajo a que o endpoint pertence |
Próximos passos
- Referência do conector WooCommerce: sincronização REST, detalhes da assinatura de webhook, chaves de configuração
- Sincronização de clientes: como mapear os clientes do WooCommerce no seu sistema de registro
- Configure automações de carrinho abandonado, pós-compra e recuperação de clientes na Tajo usando os eventos
cart.updated,order.placedeorder.fulfilled