Conector de Zapier
Conecta Zapier con Brevo a través de Tajo para enlazar miles de aplicaciones de terceros con tus flujos de automatización de marketing, habilitando flujos de datos sin código y triggers basados en eventos en todo tu stack tecnológico.
Resumen
| Propiedad | Valor |
|---|---|
| Plataforma | Zapier |
| Categoría | Automatización (Personalizada) |
| Complejidad de configuración | Fácil |
| Integración oficial | No |
| Datos sincronizados | Eventos, Contactos, Workflows, Triggers |
| Método de autenticación | API Key / OAuth 2.0 |
Funcionalidades
- Orquestación multi-app - Conecta más de 6.000 apps con Brevo a través de workflows de Zap
- Triggers por webhook - Recibe eventos en tiempo real desde cualquier app conectada a Zapier
- Sincronización de contactos - Envía y recibe contactos entre plataformas conectadas a Zapier y Brevo
- Reenvío de eventos - Enruta eventos de aplicaciones a través de Tajo hacia automatizaciones de Brevo
- Zaps multi-paso - Crea workflows complejos con filtros, formatters y delays
- App personalizada de Zapier - Usa la Zapier Platform CLI para construir integraciones a medida
Requisitos previos
Antes de empezar, asegúrate de tener:
- Una cuenta de Zapier (nivel Free o superior)
- Una cuenta de Brevo con acceso a la API
- Una cuenta de Tajo con permisos de conector
- Node.js 18+ instalado (para desarrollo de integraciones basadas en CLI)
Autenticación
Autenticación con API Key
# Set your Zapier Platform credentialsexport ZAPIER_DEPLOY_KEY=your_deploy_keyexport TAJO_API_KEY=your_tajo_api_keyexport BREVO_API_KEY=your_brevo_api_keyOAuth 2.0
Zapier admite OAuth 2.0 para conectar servicios de terceros dentro de los Zaps:
const authentication = { type: 'oauth2', oauth2Config: { authorizeUrl: { url: 'https://your-app.com/oauth/authorize', params: { client_id: '{{process.env.CLIENT_ID}}', state: '{{bundle.inputData.state}}', redirect_uri: '{{bundle.inputData.redirect_uri}}', response_type: 'code' } }, getAccessToken: { url: 'https://your-app.com/oauth/token', method: 'POST', body: { code: '{{bundle.inputData.code}}', client_id: '{{process.env.CLIENT_ID}}', client_secret: '{{process.env.CLIENT_SECRET}}', grant_type: 'authorization_code', redirect_uri: '{{bundle.inputData.redirect_uri}}' } }, refreshAccessToken: { url: 'https://your-app.com/oauth/token', method: 'POST', body: { refresh_token: '{{bundle.authData.refresh_token}}', client_id: '{{process.env.CLIENT_ID}}', client_secret: '{{process.env.CLIENT_SECRET}}', grant_type: 'refresh_token' } } }};Configuración
Configuración básica
connectors: zapier: enabled: true webhook_url: "https://hooks.zapier.com/hooks/catch/YOUR_HOOK_ID"
sync: contacts: true events: true workflows: true
triggers: - contact_created - order_placed - form_submitted
mapping: email: email first_name: FIRSTNAME last_name: LASTNAMEConfiguración de webhooks
Configura Tajo para enviar eventos a los webhooks de Zapier:
webhooks: zapier: url: "https://hooks.zapier.com/hooks/catch/YOUR_HOOK_ID" events: - contact.created - contact.updated - order.completed - cart.abandoned retry: max_attempts: 3 backoff: exponentialEndpoints de la API
| Endpoint | Método | Descripción |
|---|---|---|
https://hooks.zapier.com/hooks/catch/{id} | POST | Webhook catch hook |
https://nla.zapier.com/api/v1/dynamic/exposed/ | GET | Listar acciones expuestas |
https://nla.zapier.com/api/v1/dynamic/exposed/{action_id}/execute/ | POST | Ejecutar una acción |
https://zapier.com/api/platform/cli/apps | GET | Listar apps registradas |
https://zapier.com/api/platform/cli/push | POST | Desplegar integración |
Ejemplos de código
Inicializar el conector
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
// Connect Zapier via webhookawait tajo.connectors.connect('zapier', { webhookUrl: process.env.ZAPIER_WEBHOOK_URL, events: ['contact.created', 'order.completed']});Crear una integración personalizada de Zapier con la Platform CLI
const { version: platformVersion } = require('zapier-platform-core');
const App = { version: require('./package.json').version, platformVersion, authentication, triggers: { new_contact: { key: 'new_contact', noun: 'Contact', display: { label: 'New Contact in Tajo', description: 'Triggers when a new contact is synced.' }, operation: { perform: async (z, bundle) => { const response = await z.request({ url: 'https://api.tajo.io/v1/contacts', params: { since: bundle.meta.lastPoll } }); return response.data; } } } }, creates: { sync_contact: { key: 'sync_contact', noun: 'Contact', display: { label: 'Sync Contact to Brevo', description: 'Syncs a contact to Brevo via Tajo.' }, operation: { inputFields: [ { key: 'email', required: true, type: 'string' }, { key: 'firstName', type: 'string' }, { key: 'lastName', type: 'string' } ], perform: async (z, bundle) => { const response = await z.request({ method: 'POST', url: 'https://api.tajo.io/v1/contacts/sync', body: bundle.inputData }); return response.data; } } } }};
module.exports = App;Gestionar webhooks entrantes de Zapier
app.post('/webhooks/zapier', async (req, res) => { const { event, data } = req.body;
await tajo.connectors.handleWebhook('zapier', { topic: event, payload: data });
res.status(200).json({ status: 'received' });});Límites de velocidad
| Plan | Peticiones | Tasks/mes | Intervalo de polling |
|---|---|---|---|
| Free | 100/día | 100 | 15 min |
| Starter | 1.000/día | 750 | 15 min |
| Professional | 5.000/día | 2.000 | 2 min |
| Team | 10.000/día | 50.000 | 1 min |
Límites de tasks de Zapier
Cada paso de un Zap cuenta como una task. Los Zaps multi-paso consumen varias tasks por ejecución. Monitoriza tu uso de tasks en el panel de Zapier para evitar excesos.
Resolución de problemas
| Problema | Causa | Solución |
|---|---|---|
| Webhook no se dispara | Zap desactivado | Revisa el estado del Zap en el panel de Zapier |
| Los datos no se mapean | Nombre de campo distinto | Verifica que las claves de campo coincidan entre apps |
| Contactos duplicados | Sin deduplicación configurada | Activa la deduplicación por email en Tajo |
| Errores del Zap | Rate limit de la API superado | Añade pasos de delay o amplía tu plan de Zapier |
| Autenticación expirada | Token no refrescado | Vuelve a autenticar la conexión en Zapier |
Modo depuración
connectors: zapier: debug: true log_level: verbose log_webhooks: trueBuenas prácticas
- Usa webhooks en lugar de polling - Los webhooks proporcionan flujo de datos en tiempo real frente a los retrasos del polling
- Añade gestión de errores - Usa Paths de Zapier para gestionar los escenarios de éxito/fallo
- Deduplica los datos - Activa claves de deduplicación para evitar registros duplicados
- Monitoriza el uso de tasks - Configura alertas antes de alcanzar los límites de tasks
- Usa filtros con criterio - Filtra pronto en los Zaps para reducir el consumo innecesario de tasks
- Versiona tus integraciones CLI - Usa versionado semántico para las apps de Platform CLI
Seguridad
- Solo HTTPS - Todas las URLs de webhook deben usar HTTPS
- Rotación de API keys - Rota las claves periódicamente desde el panel de Zapier
- OAuth 2.0 - Usa OAuth para autenticar servicios de terceros
- Verificación de webhooks - Valida las firmas de webhook entrantes
- Permisos limitados - Concede el acceso mínimo necesario por Zap