Zapier Connector

Connect Zapier to Brevo through Tajo to bridge thousands of third-party applications with your marketing automation workflows, enabling no-code data flows and event-driven triggers across your entire tech stack.

Overview

PropertyValue
PlatformZapier
CategoryAutomation (Custom)
Setup ComplexityEasy
Official IntegrationNo
Data SyncedEvents, Contacts, Workflows, Triggers
Auth MethodAPI Key / OAuth 2.0

Features

  • Multi-app orchestration - Connect 6,000+ apps to Brevo via Zap workflows
  • Webhook triggers - Receive real-time events from any Zapier-connected app
  • Contact sync - Push and pull contacts between Zapier-connected platforms and Brevo
  • Event forwarding - Route application events through Tajo into Brevo automations
  • Multi-step Zaps - Build complex workflows with filters, formatters, and delays
  • Custom Zapier app - Use the Zapier Platform CLI to build tailored integrations

Prerequisites

Before you begin, ensure you have:

  1. A Zapier account (Free tier or above)
  2. A Brevo account with API access
  3. A Tajo account with connector permissions
  4. Node.js 18+ installed (for CLI-based integration development)

Authentication

API Key Authentication

Terminal window
# Set your Zapier Platform credentials
export ZAPIER_DEPLOY_KEY=your_deploy_key
export TAJO_API_KEY=your_tajo_api_key
export BREVO_API_KEY=your_brevo_api_key

OAuth 2.0

Zapier supports OAuth 2.0 for connecting third-party services within 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'
}
}
}
};

Configuration

Basic Setup

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: LASTNAME

Webhook Configuration

Configure Tajo to send events to Zapier webhooks:

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: exponential

API Endpoints

EndpointMethodDescription
https://hooks.zapier.com/hooks/catch/{id}POSTWebhook catch hook
https://nla.zapier.com/api/v1/dynamic/exposed/GETList exposed actions
https://nla.zapier.com/api/v1/dynamic/exposed/{action_id}/execute/POSTExecute an action
https://zapier.com/api/platform/cli/appsGETList registered apps
https://zapier.com/api/platform/cli/pushPOSTDeploy integration

Code Examples

Initialize Connector

import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({
apiKey: process.env.TAJO_API_KEY,
brevoApiKey: process.env.BREVO_API_KEY
});
// Connect Zapier via webhook
await tajo.connectors.connect('zapier', {
webhookUrl: process.env.ZAPIER_WEBHOOK_URL,
events: ['contact.created', 'order.completed']
});

Build a Custom Zapier Integration with 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;

Handle Incoming Zapier Webhooks

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

PlanRequestsTasks/MonthPolling Interval
Free100/day10015 min
Starter1,000/day75015 min
Professional5,000/day2,0002 min
Team10,000/day50,0001 min

Zapier Task Limits

Each Zap step counts as a task. Multi-step Zaps consume multiple tasks per execution. Monitor your task usage in the Zapier dashboard to avoid overages.

Troubleshooting

IssueCauseSolution
Webhook not firingZap turned offCheck Zap status in Zapier dashboard
Data not mappingField name mismatchVerify field keys match between apps
Duplicate contactsNo dedup configuredEnable email-based deduplication in Tajo
Zap errorsAPI rate limit hitAdd delay steps or upgrade Zapier plan
Auth expiredToken not refreshedRe-authenticate the connection in Zapier

Debug Mode

connectors:
zapier:
debug: true
log_level: verbose
log_webhooks: true

Best Practices

  1. Use webhooks over polling - Webhooks provide real-time data flow vs. polling delays
  2. Add error handling - Use Zapier Paths to handle success/failure scenarios
  3. Deduplicate data - Enable deduplication keys to prevent duplicate records
  4. Monitor task usage - Set up alerts before reaching task limits
  5. Use filters wisely - Filter early in Zaps to reduce unnecessary task consumption
  6. Version your CLI integrations - Use semantic versioning for Platform CLI apps

Security

  • HTTPS only - All webhook URLs must use HTTPS
  • API key rotation - Rotate keys periodically via Zapier dashboard
  • OAuth 2.0 - Use OAuth for third-party service authentication
  • Webhook verification - Validate incoming webhook signatures
  • Scoped permissions - Grant minimum required access per Zap

Open-Source Implementation Map

No official open-source repository was found in the current Tajo connector catalog for Zapier. Keep this page focused on the verified public API contract and vendor documentation until an official schema, SDK, MCP server, or public integration repository is available.

Tajo Revamp Checklist

  • Verify authentication and scope requirements against the vendor documentation before each connector release.
  • Document primary sync objects, external IDs, pagination strategy, and rate limits explicitly.
  • Add smoke tests from public API examples rather than undocumented behavior.
  • Capture webhook signature verification and replay protection when the vendor supports webhooks.
  • Record gaps where no official public repository or schema exists so future maintainers know what still needs source-backed validation.

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

auto-detect
AI Assistant

Hi! Ask me anything about the docs.