Zapier Connector
Verbinde Zapier über Tajo mit Brevo, um Tausende von Drittanbieter-Anwendungen mit deinen Marketing-Automation-Workflows zu verknüpfen und No-Code-Datenflüsse sowie eventgetriebene Trigger über deinen gesamten Tech-Stack hinweg zu ermöglichen.
Überblick
| Eigenschaft | Wert |
|---|---|
| Plattform | Zapier |
| Kategorie | Automation (Custom) |
| Einrichtungsaufwand | Einfach |
| Offizielle Integration | Nein |
| Synchronisierte Daten | Events, Kontakte, Workflows, Trigger |
| Authentifizierung | API Key / OAuth 2.0 |
Funktionen
- Multi-App-Orchestrierung - Verbinde 6.000+ Apps über Zap-Workflows mit Brevo
- Webhook-Trigger - Empfange Echtzeit-Events aus jeder mit Zapier verbundenen App
- Kontakt-Synchronisation - Pushe und ziehe Kontakte zwischen Zapier-verbundenen Plattformen und Brevo
- Event-Forwarding - Leite Application-Events über Tajo in Brevo-Automationen weiter
- Multi-Step-Zaps - Baue komplexe Workflows mit Filtern, Formattern und Verzögerungen
- Custom Zapier App - Nutze die Zapier Platform CLI, um maßgeschneiderte Integrationen zu bauen
Voraussetzungen
Bevor du beginnst, stelle sicher, dass du Folgendes hast:
- Ein Zapier-Konto (Free-Tier oder höher)
- Ein Brevo-Konto mit API-Zugriff
- Ein Tajo-Konto mit Connector-Berechtigungen
- Node.js 18+ installiert (für die CLI-basierte Integrationsentwicklung)
Authentifizierung
API-Schlüssel-Authentifizierung
# 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 unterstützt OAuth 2.0 zur Verbindung von Drittanbieter-Services innerhalb von 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' } } }};Konfiguration
Grundeinrichtung
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: LASTNAMEWebhook-Konfiguration
Konfiguriere Tajo so, dass Events an Zapier-Webhooks gesendet werden:
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: exponentialAPI-Endpoints
| Endpoint | Methode | Beschreibung |
|---|---|---|
https://hooks.zapier.com/hooks/catch/{id} | POST | Webhook-Catch-Hook |
https://nla.zapier.com/api/v1/dynamic/exposed/ | GET | Exposed Actions auflisten |
https://nla.zapier.com/api/v1/dynamic/exposed/{action_id}/execute/ | POST | Action ausführen |
https://zapier.com/api/platform/cli/apps | GET | Registrierte Apps auflisten |
https://zapier.com/api/platform/cli/push | POST | Integration deployen |
Code-Beispiele
Connector initialisieren
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']});Custom Zapier-Integration mit der Platform CLI bauen
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;Eingehende Zapier-Webhooks verarbeiten
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' });});Rate Limits
| Tarif | Anfragen | Tasks/Monat | Polling-Intervall |
|---|---|---|---|
| Free | 100/Tag | 100 | 15 Min. |
| Starter | 1.000/Tag | 750 | 15 Min. |
| Professional | 5.000/Tag | 2.000 | 2 Min. |
| Team | 10.000/Tag | 50.000 | 1 Min. |
Zapier-Task-Limits
Jeder Zap-Step zählt als Task. Multi-Step-Zaps verbrauchen mehrere Tasks pro Ausführung. Überwache deine Task-Nutzung im Zapier-Dashboard, um Overages zu vermeiden.
Fehlerbehebung
| Problem | Ursache | Lösung |
|---|---|---|
| Webhook feuert nicht | Zap ausgeschaltet | Zap-Status im Zapier-Dashboard prüfen |
| Daten mappen nicht | Feldnamen stimmen nicht überein | Feldnamen zwischen Apps abgleichen |
| Duplizierte Kontakte | Keine Dedup konfiguriert | E-Mail-basierte Deduplizierung in Tajo aktivieren |
| Zap-Fehler | API-Rate-Limit erreicht | Delay-Steps hinzufügen oder Zapier-Tarif upgraden |
| Auth abgelaufen | Token nicht aktualisiert | Verbindung in Zapier erneut authentifizieren |
Debug-Modus
connectors: zapier: debug: true log_level: verbose log_webhooks: trueBest Practices
- Webhooks statt Polling - Webhooks bieten Echtzeit-Datenfluss statt Polling-Verzögerungen
- Fehlerbehandlung hinzufügen - Nutze Zapier Paths, um Erfolgs-/Fehler-Szenarien zu behandeln
- Daten deduplizieren - Aktiviere Deduplizierungs-Schlüssel, um duplizierte Datensätze zu vermeiden
- Task-Nutzung überwachen - Richte Alerts ein, bevor Task-Limits erreicht werden
- Filter sinnvoll einsetzen - Filtere früh in Zaps, um unnötigen Task-Verbrauch zu reduzieren
- CLI-Integrationen versionieren - Nutze Semantic Versioning für Platform-CLI-Apps
Sicherheit
- Nur HTTPS - Alle Webhook-URLs müssen HTTPS nutzen
- API-Schlüssel-Rotation - Rotiere Schlüssel regelmäßig über das Zapier-Dashboard
- OAuth 2.0 - Nutze OAuth für die Authentifizierung von Drittanbieter-Services
- Webhook-Verifizierung - Validiere eingehende Webhook-Signaturen
- Gescopte Berechtigungen - Gewähre pro Zap nur minimal erforderlichen Zugriff