Zapier コネクタ
Tajo を介して Zapier を Brevo に接続し、何千ものサードパーティアプリケーションをマーケティング自動化ワークフローにつなぎ、ノーコードのデータフローと技術スタック全体にわたるイベント駆動型トリガーを実現します。
概要
| プロパティ | 値 |
|---|---|
| プラットフォーム | Zapier |
| カテゴリ | 自動化(カスタム) |
| セットアップの複雑さ | 簡単 |
| 公式統合 | いいえ |
| 同期データ | イベント、連絡先、ワークフロー、トリガー |
| 認証方式 | API Key / OAuth 2.0 |
機能
- マルチアプリオーケストレーション - Zap ワークフロー経由で 6,000 以上のアプリを Brevo に接続
- Webhook トリガー - Zapier に接続された任意のアプリからリアルタイムイベントを受信
- 連絡先同期 - Zapier に接続されたプラットフォームと Brevo 間で連絡先をプッシュおよびプル
- イベント転送 - Tajo を介してアプリケーションイベントを Brevo 自動化にルーティング
- マルチステップ Zap - フィルタ、フォーマッタ、遅延を使用した複雑なワークフローを構築
- カスタム Zapier アプリ - Zapier Platform CLI を使用してカスタマイズされた統合を構築
前提条件
開始する前に、以下を準備してください。
- Zapier アカウント(無料ティア以上)
- API アクセス可能な Brevo アカウント
- コネクタ権限を持つ Tajo アカウント
- Node.js 18 以上がインストール済み(CLI ベースの統合開発用)
認証
API キー認証
# Zapier Platform の資格情報を設定export ZAPIER_DEPLOY_KEY=your_deploy_keyexport TAJO_API_KEY=your_tajo_api_keyexport BREVO_API_KEY=your_brevo_api_keyOAuth 2.0
Zapier は Zap 内でサードパーティサービスを接続するために OAuth 2.0 をサポートしています。
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' } } }};設定
基本セットアップ
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 設定
Tajo を設定して Zapier Webhook にイベントを送信します。
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 エンドポイント
| エンドポイント | メソッド | 説明 |
|---|---|---|
https://hooks.zapier.com/hooks/catch/{id} | POST | Webhook キャッチフック |
https://nla.zapier.com/api/v1/dynamic/exposed/ | GET | 公開アクションを一覧取得 |
https://nla.zapier.com/api/v1/dynamic/exposed/{action_id}/execute/ | POST | アクションを実行 |
https://zapier.com/api/platform/cli/apps | GET | 登録済みアプリを一覧取得 |
https://zapier.com/api/platform/cli/push | POST | 統合をデプロイ |
コード例
コネクタの初期化
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
// Webhook 経由で Zapier を接続await tajo.connectors.connect('zapier', { webhookUrl: process.env.ZAPIER_WEBHOOK_URL, events: ['contact.created', 'order.completed']});Platform CLI でカスタム Zapier 統合を構築
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;受信 Zapier Webhook の処理
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' });});レート制限
| プラン | リクエスト | タスク/月 | ポーリング間隔 |
|---|---|---|---|
| Free | 100/日 | 100 | 15 分 |
| Starter | 1,000/日 | 750 | 15 分 |
| Professional | 5,000/日 | 2,000 | 2 分 |
| Team | 10,000/日 | 50,000 | 1 分 |
Zapier タスク制限
各 Zap ステップがタスクとしてカウントされます。マルチステップ Zap は実行ごとに複数のタスクを消費します。超過を避けるため Zapier ダッシュボードでタスク使用量を監視してください。
トラブルシューティング
| 問題 | 原因 | 解決策 |
|---|---|---|
| Webhook が発火しない | Zap がオフになっている | Zapier ダッシュボードで Zap ステータスを確認 |
| データがマッピングされない | フィールド名の不一致 | アプリ間でフィールドキーが一致するか確認 |
| 重複した連絡先 | 重複排除が未設定 | Tajo でメールベースの重複排除を有効化 |
| Zap エラー | API レート制限に達した | 遅延ステップを追加するか Zapier プランをアップグレード |
| 認証の期限切れ | トークンが更新されていない | Zapier で接続を再認証 |
デバッグモード
connectors: zapier: debug: true log_level: verbose log_webhooks: trueベストプラクティス
- ポーリングよりも Webhook を使用する - Webhook はポーリング遅延に対してリアルタイムデータフローを提供
- エラー処理を追加する - Zapier Paths を使用して成功/失敗シナリオを処理
- データを重複排除する - 重複レコードを防ぐため重複排除キーを有効化
- タスク使用量を監視する - タスク制限に達する前にアラートを設定
- フィルタを賢く使用する - 不要なタスク消費を減らすため Zap の早い段階でフィルタ
- CLI 統合のバージョンを管理する - Platform CLI アプリにセマンティックバージョニングを使用
セキュリティ
- HTTPS のみ - すべての Webhook URL は HTTPS を使用する必要があります
- API キーのローテーション - Zapier ダッシュボードから定期的にキーをローテーション
- OAuth 2.0 - サードパーティサービス認証に OAuth を使用
- Webhook 検証 - 受信 Webhook 署名を検証
- スコープ付き権限 - Zap ごとに必要最小限のアクセスを付与