Zapier 経由で同意を Klaviyo に送信する方法
このページで学べること
Klaviyo に SMS の同意を送信するためのカスタム Zapier Webhook の作成方法をご確認ください。このガイドの手順は、メールの同意を送信する場合にも簡単に調整できます。
以下の手順は、ウェブフック(キャッチフックとも呼ばれます)を使用してPythonスクリプトのアクションをトリガーするZapを作成するのに役立ちます。このサンプルはSMSマーケティングの同意を更新します。リクエストにメールアドレスを含めても、プロファイルはメールマーケティングを購読しません。
この設定には、Zapierのウェブフックを含む有料のZapierプランが必要です。
外部連携について
この外部連携はKlaviyoで完全にはサポートされていませんが、必要に応じて回避策として使用できます。この外部連携は、サポートできる開発者がチーム内にいる場合にのみ使用することを推奨します。
このガイドでは、トリガーが検出されたときに Python スクリプトを実行する Zapier のコード アクションを使用します。このソリューションを使用すると、Klaviyo のエンドポイントで必要となるデータタイプにフィールドをマッピングできます。具体的には、プロファイルを購読エンドポイントと プロファイルの購読解除エンドポイントです。
始める前に
テスト受信者の国に対応する送信元番号を使用して、KlaviyoでSMSを設定します。自身で管理できる実在の携帯電話番号とメールアドレスを使用してください:コードアクションのテストにより、Klaviyoアカウント内の同意が変更されます。
lists:write、profiles:write、subscriptions:writeの権限を持つKlaviyoのプライベートAPIキーを用意してください。アカウントのAPIキーを管理する方法をご覧ください。
アカウントでSMSの年齢制限機能を使用している場合は、このサンプルを使用する前に購読リクエストを拡張してage_gated_date_of_birthを含めてください。以下の例では、生年月日の収集や送信は行いません。
Zapier Webhook を設定
Zapierの現在の設定手順については、ウェブフックトリガーとPythonコードアクションのガイドをご覧ください。
- Zapier アカウントにログインします。
- Zapier のメインページで、+作成を選択し、次にZapを選択します。
- 新しい Zap の名前を入力します(例:Klaviyo Webhook)。
- トリガーステップをクリックし、Zapierによるウェブフックを検索して選択してください。

- イベントのドロップダウンメニューから、Catch Hookを選択してください。

- [続行] をクリックします。このガイドで使用しているフラットなテストデータの場合は、子キーの選択解除を空白のままにし、続行をもう一度クリックしてください。
- [テスト] タブを選択します。
- Zapier が提供する Webhook URL をコピーし、リクエストの送信先として使用します。

- 同意を収集するアプリを設定し、同意の変更をこのウェブフックURLに送信するようにしてください。これには、以下で使用されている
email、phone_number、sms_consentフィールドが含まれます。そのアプリのドキュメントに従って、送信ウェブフックを設定してください。 - テストを行う前に、ウェブフックにテストデータを送信する必要があります。詳しくは、Zapierにテストデータを送信する方法のガイドをご覧ください。テストデータを送信する際は、+記号と国番号を含むE.164形式で電話番号をフォーマットするようにしてください。
- テストデータを Webhook に送信したら、[テスト トリガー]([テスト] タブ)をクリックします。

- リクエストが成功すると、成功メッセージが表示され、成功メッセージの下にテストデータが入力されます(以下の例のように):

- トリガーが機能したら、[選択したレコードで続行] をクリックしてください。
Zapier アクションを設定
- アクションステップを追加し、Code by Zapierを検索して選択してください。

- イベントのドロップダウンメニューから、Pythonを実行を選択してください。

- [続行] をクリックします。
フィールド マッピングを設定し、スクリプト ロジックを作成します
- 入力データで、
email、phone_number、sms_consentをテストデータ内の対応するフィールドにマッピングしてください。キーは表示されているとおりに正確に入力してください。サンプルデータ内のnameフィールドは、このスクリプトでは使用されません。

入力データ | テストデータをマッピング済み |
| 1. メール:<Test email> |
| 1. 電話番号:<Test phone number> |
| 1. Sms_consent: true |
| 1. 名前:<Test name> |
trueは、明示的にSMSマーケティングにオプトインした場合にのみ送信してください。falseは、SMSの購読解除リクエストの場合にのみ送信してください。これはアカウント全体でSMSマーケティングの同意を取り消し、選択したリストからプロファイルを削除します。同意の値が空、または不明な場合はfalseを使用しないでください。
- 次のようなスクリプトをコード ボックスに追加します:
import requests
sms_consent = str(input_data.get("sms_consent", "")).strip().lower()
if sms_consent not in ("true", "false"):
raise ValueError("sms_consent must be true or false")
# Configure the SMS marketing subscribe or unsubscribe request.
if sms_consent == "true":
url = "https://a.klaviyo.com/api/profile-subscription-bulk-create-jobs/"
payload = {
"data": {
"type": "profile-subscription-bulk-create-job",
"attributes": {
"profiles": {
"data": [{
"type": "profile",
"attributes": {
"email": input_data["email"],
"phone_number": input_data["phone_number"],
"subscriptions": {
"sms": {"marketing": {"consent": "SUBSCRIBED"}}
}
}
}]
}
},
"relationships": {
"list": {"data": {"type": "list", "id": "LIST_ID"}}
}
}
}
else:
url = "https://a.klaviyo.com/api/profile-subscription-bulk-delete-jobs/"
payload = {
"data": {
"type": "profile-subscription-bulk-delete-job",
"attributes": {
"profiles": {
"data": [{
"type": "profile",
"attributes": {
"email": input_data["email"],
"phone_number": input_data["phone_number"],
"subscriptions": {
"sms": {"marketing": {"consent": "UNSUBSCRIBED"}}
}
}
}]
}
},
"relationships": {
"list": {"data": {"type": "list", "id": "LIST_ID"}}
}
}
}
headers = {
"accept": "application/json",
"revision": "2026-07-15",
"content-type": "application/json",
"Authorization": "Klaviyo-API-Key your-private-api-key"
}
response = requests.post(url, json=payload, headers=headers, timeout=10)
response.raise_for_status()
# Zapier requires an output object.
output = {
"status_code": response.status_code,
"response text": response.text
}your-private-api-keyをKlaviyoのプライベートAPIキーに置き換えてください。
非公開 API キーはパスワードのように扱ってください。安全な場所に保管し、決して公開しないでください。
- 両方の箇所で
LIST_IDをKlaviyoリストIDに置き換えてください。Klaviyoでオーディエンス > リストとセグメントに移動し、リストを開いて、設定 > 詳細を選択してリストIDをコピーします。 - そのリストの設定> 同意> オプトインプロセスを確認してください。確認なしで購読するには、シングルオプトインを選択し、保存をクリックしてください。ダブルオプトインを使用する場合は、購読を確認する前に、テスト番号に送信されたSMSの確認を完了してください。
- [続行] をクリックし、次に [ステップをテスト] をクリックします。
- 出力に
status_code202が表示されていることを確認してください。これはKlaviyoが処理のリクエストを受け付けたことを意味します。これにより、同意の更新が完了したことが確認されるわけではありません。レスポンス本文は空であることが想定されます。

- Klaviyoで、テスト用プロファイルが選択したリストに追加されていることを確認してから、プロファイルを開き、SMSマーケティングを購読していることを確認してください。確認メッセージが送信されている場合は、先にその確認を完了してください。

- 同じテスト用プロファイルで購読解除パスをテストします。
sms_consentをfalseに設定して新しいウェブフックリクエストを送信し、Zapierでその新しいトリガーレコードを選択して、コードステップをもう一度テストしてください。Klaviyoで、プロファイルがSMSマーケティングを購読解除しており、選択したリストから削除されていることを確認してください。 - 両方のテストが成功したら、公開をクリックしてZapを公開してください。テストが成功しない場合は、よくある問題に関するトラブルシューティングのヒントをご覧ください。
メール同意の例に合わせて調整する
このZapのメール専用バージョンの場合:
- ソースから
email_consentの入力をマッピングし、その後スクリプト全体でsms_consentをemail_consentに置き換えてください。明示的なメールマーケティングのオプトインにはtrueを使用し、メールの購読解除リクエストにはfalseを使用してください。 - 両方のリクエストペイロードで、
subscriptionsの下にあるsmsキーをemailに置き換えてください。受信者のemailフィールドは保持し、両方のペイロードからphone_numberフィールドを削除してください。 - Zapのメール版を公開する前に、メール同意の両方のパスをテストしてください。プロファイルでメール同意を確認し、購読テスト中に送信されたメールのオプトイン確認があれば完了してください。
トラブルシューティングのヒント
以下は、Zapier Webhook の設定中によく発生する問題です。他の問題が発生した場合は、Klaviyo コミュニティに連絡して、追加のガイダンスを受けることができます。
文字列リテラルのスキャン中に EOL
このエラーが表示される場合、いずれかの変数の周りに引用符が不足しています。リスト ID とプライベート API キーが両側を引用符で囲まれていることを確認してください。
SyntaxError: invalid syntax
このエラーが表示された場合は、コードの改行、インデント、引用符、角かっこがサンプルと一致しているか確認してください。特に、urlとpayloadの代入は別々の行にする必要があります。#で始まる行は有効なPythonコメントのため、削除する必要はありません。
その他のリソース
- アカウントの API キーを管理する方法
Klaviyo アカウントの API キーにアクセスして管理する方法をご確認ください。
- Zapier にテストデータを送信する方法
Klaviyo にメールと SMS の同意を送信する Webhook を作成する際に、POST リクエストを介して Zapier にテストデータを送信する方法を説明します。