Conector WooCommerce
Conector WooCommerce
Conecte sua loja WooCommerce ao Brevo através do Tajo para sincronização completa de dados de e-commerce. Aproveite a WooCommerce REST API para sincronizar clientes, pedidos, produtos e dados de cupons em campanhas de marketing segmentadas e workflows automatizados.
Visão geral
| Propriedade | Valor |
|---|---|
| Plataforma | WooCommerce (WordPress) |
| Categoria | E-commerce |
| Complexidade de configuração | Média |
| Integração oficial | Não |
| Dados sincronizados | Clientes, Pedidos, Produtos, Cupons |
| Skills disponíveis | 10 |
Recursos
- Sincronização de clientes - Sincronização em tempo real de dados de clientes para contatos do Brevo
- Rastreamento de pedidos - Rastreamento completo de eventos do ciclo de vida dos pedidos para fluxos pós-compra
- Sincronização de catálogo de produtos - Sincronize produtos e variações para recomendações por e-mail
- Gestão de cupons - Sincronize códigos de cupom para campanhas promocionais
- Suporte a webhook - Atualizações em tempo real via webhooks do WooCommerce
- Carrinho abandonado - Rastreie e recupere carrinhos abandonados
- Suporte multi-site - Conecte instalações WooCommerce em WordPress multisite
- Campos meta personalizados - Mapeie metadados personalizados do WooCommerce para atributos do Brevo
Pré-requisitos
Antes de começar, certifique-se de ter:
- Um site WordPress com o plugin WooCommerce instalado e ativado
- WooCommerce REST API habilitada (Settings > Advanced > REST API)
- Consumer Key e Consumer Secret da API gerados
- Seu site deve usar HTTPS para autenticação da API
- Uma conta Brevo com acesso à API
- Uma conta Tajo com credenciais de API
Autenticação
Chaves REST API
O WooCommerce usa pares de Consumer Key e Consumer Secret para autenticação. Gere-os em WooCommerce > Settings > Advanced > REST API.
OAuth 1.0a (sites com HTTPS)
curl https://yourstore.com/wp-json/wc/v3/orders \ -u "consumer_key:consumer_secret"Autenticação por query string (HTTPS)
curl "https://yourstore.com/wp-json/wc/v3/orders?consumer_key=ck_xxx&consumer_secret=cs_xxx"Níveis de permissão
| Permissão | Acesso |
|---|---|
| Read | Somente visualizar recursos |
| Write | Criar e editar recursos |
| Read/Write | Acesso CRUD completo |
Configuração
Configuração básica
connectors: woocommerce: enabled: true store_url: "https://yourstore.com" consumer_key: "ck_your_consumer_key" consumer_secret: "cs_your_consumer_secret" api_version: "wc/v3" verify_ssl: true
# Data sync options sync: customers: true orders: true products: true coupons: true
# Brevo list assignment lists: all_customers: 50 buyers: 51 abandoned_cart: 52Mapeamento de campos de clientes
Mapeie campos de clientes do WooCommerce para atributos do Brevo:
customer_mapping: email: email first_name: FIRSTNAME last_name: LASTNAME billing.phone: SMS billing.company: COMPANY billing.city: CITY billing.state: STATE billing.country: COUNTRY billing.postcode: ZIP
# E-commerce metrics (computed) orders_count: ORDER_COUNT total_spent: TOTAL_SPENT date_created: SIGNUP_DATE
# Meta fields meta_data.loyalty_points: LOYALTY_POINTS meta_data.preferred_category: PREF_CATEGORYConfiguração de webhook
Registre webhooks em WooCommerce > Settings > Advanced > Webhooks:
webhooks: - topic: "customer.created" event: "customer_created" - topic: "customer.updated" event: "customer_updated" - topic: "order.created" event: "order_placed" - topic: "order.updated" event: "order_updated" - topic: "order.completed" event: "order_fulfilled" - topic: "order.refunded" event: "order_refunded" - topic: "coupon.created" event: "coupon_created" - topic: "product.created" event: "product_added" - topic: "product.updated" event: "product_updated"Endpoints da API
| Método | Endpoint | Descrição |
|---|---|---|
GET | /wc/v3/customers | Listar clientes |
POST | /wc/v3/customers | Criar um cliente |
GET | /wc/v3/customers/{id} | Obter um cliente |
PUT | /wc/v3/customers/{id} | Atualizar um cliente |
GET | /wc/v3/orders | Listar pedidos |
POST | /wc/v3/orders | Criar um pedido |
GET | /wc/v3/orders/{id} | Obter um pedido |
GET | /wc/v3/products | Listar produtos |
GET | /wc/v3/products/{id} | Obter um produto |
GET | /wc/v3/products/{id}/variations | Listar variações de produto |
GET | /wc/v3/coupons | Listar cupons |
GET | /wc/v3/reports/sales | Obter relatórios de vendas |
GET | /wc/v3/reports/top_sellers | Obter mais vendidos |
POST | /wc/v3/webhooks | Criar um webhook |
Exemplos de código
Inicializar o conector WooCommerce
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
// Connect WooCommerce storeawait tajo.connectors.connect('woocommerce', { storeUrl: 'https://yourstore.com', consumerKey: process.env.WC_CONSUMER_KEY, consumerSecret: process.env.WC_CONSUMER_SECRET});Buscar e sincronizar clientes
// Fetch customers using WooCommerce REST APIconst WooCommerce = require('@woocommerce/woocommerce-rest-api').default;
const api = new WooCommerce({ url: 'https://yourstore.com', consumerKey: process.env.WC_CONSUMER_KEY, consumerSecret: process.env.WC_CONSUMER_SECRET, version: 'wc/v3'});
// List customers with paginationconst response = await api.get('customers', { per_page: 100, page: 1, orderby: 'registered_date', order: 'desc'});
const customers = response.data;// [{ id, email, first_name, last_name, billing, shipping, ... }]
// Pagination info from headersconst totalPages = response.headers['x-wp-totalpages'];const totalItems = response.headers['x-wp-total'];Tratar eventos de webhook
// WooCommerce webhook handlerapp.post('/webhooks/woocommerce', async (req, res) => { const topic = req.headers['x-wc-webhook-topic']; const signature = req.headers['x-wc-webhook-signature'];
// Verify webhook signature const expectedSignature = crypto .createHmac('sha256', WEBHOOK_SECRET) .update(JSON.stringify(req.body)) .digest('base64');
if (signature !== expectedSignature) { return res.status(401).send('Invalid signature'); }
// Forward to Tajo await tajo.connectors.handleWebhook('woocommerce', { topic, payload: req.body });
res.status(200).send('OK');});Operações em lote
// Batch create, update, and delete productsconst batchResponse = await api.post('products/batch', { create: [ { name: 'New Product', type: 'simple', regular_price: '19.99' } ], update: [ { id: 123, regular_price: '24.99' } ], delete: [456]});Limites de taxa
O WooCommerce em si não aplica limites de taxa na API, mas o servidor WordPress subjacente e o provedor de hospedagem podem impor limites:
| Fator | Limite típico | Detalhes |
|---|---|---|
| Hospedagem compartilhada | 50-100 req/min | Varia por provedor |
| Hospedagem WP gerenciada | 200-500 req/min | WP Engine, Kinsta, etc. |
| Self-hosted | Sem limite rígido | Limitado pelos recursos do servidor |
| Por página | 100 registros no máximo | Padrão é 10 |
| Operações em lote | 100 itens/lote | Criar, atualizar ou excluir |
Desempenho do servidor
Lojas grandes de WooCommerce podem ter respostas de API lentas. Use paginação, limite os campos com o parâmetro _fields e agende sincronizações em massa fora dos horários de pico.
Solução de problemas
| Problema | Causa | Solução |
|---|---|---|
401 Unauthorized | Chaves de API inválidas | Regenere Consumer Key/Secret nas configurações do WooCommerce |
403 Forbidden | Permissões insuficientes | Defina a chave de API com acesso Read/Write |
| Erros de certificado SSL | SSL inválido no site | Garanta um certificado SSL válido; defina verify_ssl: false apenas para testes |
| Webhooks não disparam | WordPress cron desabilitado | Habilite o WP-Cron ou configure cron no nível do servidor |
| Respostas lentas da API | Banco de dados grande | Otimize o banco de dados do WordPress, use o parâmetro _fields |
| Campos personalizados ausentes | Metadados não expostos | Use o campo meta_data para acessar metadados personalizados |
| Problemas de paginação | Tamanho de página padrão | Defina explicitamente o parâmetro per_page (máx. 100) |
Melhores práticas
- Use webhooks para sincronização em tempo real - Configure webhooks do WooCommerce em vez de fazer polling na API
- Verifique assinaturas de webhook - Sempre valide o cabeçalho
X-WC-Webhook-Signature - Pagine todas as requisições de listagem - Use os parâmetros
pageeper_page; verifique o cabeçalhoX-WP-TotalPages - Use o parâmetro
_fields- Solicite apenas os campos necessários para reduzir o tamanho da resposta e melhorar o desempenho - Operações em lote - Use endpoints de lote para operações em massa de criar/atualizar/excluir (até 100 itens)
- Agende sincronizações grandes - Execute sincronizações completas iniciais fora do horário de pico para evitar sobrecarga no servidor
- Habilite HTTPS - A API do WooCommerce requer HTTPS para autenticação OAuth
Segurança
- OAuth 1.0a - Autenticação segura via pares Consumer Key/Secret
- Assinaturas HMAC de webhook - Verificação de assinatura SHA-256 para webhooks recebidos
- HTTPS obrigatório - A API requer criptografia TLS para autenticação
- Escopo de permissões - As chaves de API podem ser definidas como Read, Write ou Read/Write
- Segurança do WordPress - Beneficia-se das atualizações de segurança do core do WordPress
- Considerações PCI - Dados de pagamento são tratados pelos gateways de pagamento do WooCommerce, não expostos via API