メインコンテンツへスキップ
2分で読めます

Zapier catch-hook

Zenovay イベントを Zapier がサポートする 5,000 以上のアプリ(Notion、Airtable、HubSpot、Linear、Trello、Gmail など)に接続します。

このレシピは Zapier の Webhooks by Zapier → Catch Hook トリガーを使用します。

アウトバウンド webhook は Zenovay の Pro+ 機能です。Zapier の Catch Hook トリガーは Zapier Free プラン以上で利用できます。Zapier Premium の webhook(Catch Raw Hook)は Zapier Starter プラン以上が必要です。


1. Catch Hook トリガーで Zap を作成する

  1. Zapier で Create Zap をクリックします。
  2. トリガーとして Webhooks by ZapierCatch Hook を選択します。
  3. 「Pick off a Child Key」の入力画面はスキップします(空欄のままにします。イベントペイロード全体が必要です)。
  4. Zapier が Custom Webhook URL を表示します(例:https://hooks.zapier.com/hooks/catch/12345678/abcdef/)。コピーしてください。

2. Zenovay に webhook を追加する

  1. app.zenovay.comSettings → Webhooks に移動します。
  2. この Zap にイベントを送信するウェブサイトを選択します。
  3. Add webhook をクリックします。
  4. 以下を入力します。
    • NameZapier — <Zap の内容>(例:Zapier — Notion に追加
    • URL:ステップ 1 の Zapier Catch Hook URL を貼り付けます
    • Events:Zap が反応すべきイベントを選択します
  5. Create webhook をクリックします。
  6. テストイベントを送信(紙飛行機アイコン)をクリックします。

3. Zapier でトリガーをテストする

  1. Zapier に戻り、Test trigger をクリックします。Zapier に Zenovay のテストイベントペイロードが表示されるはずです。
  2. Continue with selected record をクリックします。
  3. Zenovay ペイロードのフィールドを使って Zap の残りの部分(アクションステップ)を構築します。よく使われるフィールド:
    • event_type(例:traffic_spikegoal_completed
    • website_id
    • data.*(イベント固有のペイロード)
    • timestamp

4. よくある Zap のレシピ

この Zenovay イベントが発生したとき……Zapier でこのアクションを実行する
goal_completedAirtable に行を追加 / HubSpot CRM コンタクトを更新する
traffic_spikeオンコール担当者に Slack DM を送る
website_down緊急の Linear issue を作成 / Twilio で誰かに連絡する
error_spikeSentry アラートを開く(または PagerDuty でエスカレーションする)

5. Zenovay の署名を検証する(高度な設定)

Zapier の Catch Hook はネイティブで HMAC 署名を検証しません。署名検証が必要な本番環境の Zap(例:コンプライアンス要件)では、検証・転送を行う Cloudflare Worker を Zap の前に置きます。

import { createHmac } from 'crypto';

export default {
  async fetch(req) {
    const rawBody = await req.text();
    const signature = req.headers.get('x-zenovay-signature') || '';
    const provided = signature.replace(/^sha256=/, '');
    const expected = createHmac('sha256', YOUR_WEBHOOK_SECRET)
      .update(rawBody)
      .digest('hex');

    if (provided !== expected) return new Response('invalid signature', { status: 401 });

    // Forward to Zapier
    await fetch(ZAPIER_CATCH_HOOK_URL, {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: rawBody,
    });
    return new Response('ok');
  },
};

webhook シークレットSettings → Webhooks → webhook カードの目のアイコンをクリックすると確認できます。


トラブルシューティング

  • Zapier で「We didn't find a request」と表示される:Zapier で Test trigger をクリックした後に Zenovay でテストイベントを送信をクリックしてください。Zapier は約 10 分間リッスンします。
  • 同じデータで Zap が繰り返しトリガーされる:Zapier の Catch Hook は重複排除を行いません。べき等性が必要な場合は、Zenovay がペイロードで送信する idempotency_key でフィルタリングするか、アクションステップで既存レコードを確認する Filter by Zapier ステップを追加してください。
  • 長いフィールドが切り詰められる:Zapier はエディタ内のレスポンスサンプルを切り詰めますが、実行時にはフルペイロードが配信されます。

関連記事

このページは役に立ちましたか?