sales-customerio について
Customer.ioに関する質問に答えるスキルです。開発者、プロダクト・グロースチーム、マーケター、アカウント管理者向けに、イベント起点のジャーニーやキャンペーン、データ機能、分析の手順と注意点を扱います。
主な機能
- 01ジャーニーとキャンペーンの案内
- 02トランザクションメッセージとセグメント
- 03マルチチャネル配信の概要
- 04Data PipelinesとCustom Objects
- 05設定手順とトラブルシューティング
活用シーン
- 01イベント起点のジャーニー設計
- 02API経由のトランザクション配信
- 03データドリブンなセグメント作成
- 04ジャーニーへのWebhook追加
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ sales-skills/ sales --skill sales-customerioインストール後、Claude Code で/sales-customerioを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/customerio-api-reference.mdlearnings.mdplatform-guide.md詳細
Customer.io プラットフォームのヘルプ
行動をトリガーとするジャーニーやキャンペーンから、トランザクションメッセージ、セグメンテーション、マルチチャネル配信(メール、SMS、プッシュ通知、アプリ内メッセージ、WhatsApp)、Data Pipelines、Custom Objects、Ad Audience Sync、分析まで、Customer.io プラットフォームに関する質問に対応します。Customer.io は、顧客ライフサイクル全体を通じたデータドリブンなイベントベースのメッセージングを実現する、顧客エンゲージメントおよびマーケティングオートメーションプラットフォームです。2012 年に Colin Nederkoorn と John Allison によって設立された Customer.io は、9,000 以上のブランドに利用され、ARR は 1 億ドルを超えています。プロダクト主導型企業向けのイベントドリブンな自動化を強みとしており、マーケティングメールを中心とする Mailchimp/SendGrid に対し、Customer.io はファーストパーティデータを軸に、行動をトリガーとするメッセージング(オンボーディング、アクティベーション、継続利用、再エンゲージメント)に優れています。
ステップ 1 — 背景情報を集める
references/learnings.md が存在する場合は、蓄積された知識を確認するため、まず読みます。
ユーザーに次のことを尋ねます。
-
Customer.io のどの分野についてサポートが必要ですか?
- A)Journeys — 複数チャネルの自動化に対応した、ドラッグ&ドロップ式のビジュアルなワークフロービルダー
- B)Campaigns — セグメント、イベント、または日付をトリガーとするメッセージング
- C)Transactional Messages — API をトリガーとするメール、プッシュ通知、SMS(パスワードのリセット、領収書など)
- D)Segmentation — データドリブンな(自動更新される)セグメント、または手動の(静的な)セグメント
- E)マルチチャネルメッセージング — メール、SMS、プッシュ通知、アプリ内メッセージ、WhatsApp
- F)Data Pipelines — データ取り込み API、リバース ETL、Segment との連携
- G)Custom Objects — 人物以外の関係性(アカウント、製品、サブスクリプションなど)のモデリング
- H)Ad Audience Sync — Google、Facebook、Instagram、YouTube とのオーディエンス同期
- I)Design Studio — 共同編集に対応したドラッグ&ドロップ式のメールエディター
- J)A/B テストとコホートテスト — コンテンツ、件名、ワークフローの分岐、送信時刻のテスト
- K)Broadcasts — セグメントに向けた単発または予約配信のメッセージ
- L)Webhooks — ジャーニーのステップ内で、任意の API とのデータの送受信
- M)Analytics — コンバージョン目標、コホート比較、AI を活用したインサイト
- N)API — Track API、App API、Transactional API、Data Pipelines API
- O)Integrations — Salesforce、Segment、Snowflake、BigQuery、Zapier など
- P)アカウント/請求 — プラン、料金、プロファイル上限
- Q)その他 — 詳細を記述
-
あなたの役割は何ですか?
- A)開発者/エンジニア
- B)プロダクト/グロース
- C)マーケティング/ライフサイクル
- D)管理者/アカウント所有者
- E)創業者/個人事業主
- F)その他
-
何を実現しようとしていますか?(具体的な目標や質問を記述してください)
ユーザーの依頼に、こうした背景情報のほとんどがすでに含まれている場合は、該当するステップに直接進んでください。 合理的な前提を明示したうえで、できる限りの回答を最初に提示し、最後に最も重要な確認事項を 1~2 点だけ尋ねます。必要な情報がすべて集まるまで回答を保留しないでください。
注:ユーザーに専門スキルが必要な場合は、そのスキルが適している理由を簡潔に説明し、案内してください。
ステップ 2 — 案内する、または直接回答する
依頼が専門スキルに該当する場合は、次のように案内します。
- 一般的なメールマーケティング戦略/ベストプラクティス →
/sales-email-marketing - Customer.io 固有ではない、プラットフォーム横断のメール配信到達性 →
/sales-deliverability - メールの開封/クリックトラッキング戦略 →
/sales-email-tracking - Zapier またはミドルウェアを使った Customer.io と他のツールの接続 →
/sales-integration - ファネル戦略/コンバージョン最適化 →
/sales-funnel
それ以外の場合は、以下のリファレンスに基づき、プラットフォームに関する知識から直接回答します。
ステップ 3 — Customer.io プラットフォームのリファレンス
詳細なモジュールのドキュメント、料金、連携、データモデルについては、references/platform-guide.md を読みます。
プラットフォームガイドの詳細を確認する必要はもうありません。ユーザーの具体的な状況に焦点を当ててください。
ステップ 4 — 実践的なガイダンス
ユーザーの具体的な質問に基づいて、次のように対応します。
-
イベント起点のキャンペーンを設定する:
- キャンペーンのトリガーとなるイベントを特定します(例:
trial_started、purchase_completed、feature_activated)。Track API または Data Pipelines を使って、アプリケーションでこのイベントが追跡されていることを確認してください。 - Customer.io で Journeys > Create Journey に移動し、「Event triggered」を選択します。
- トリガーイベント名を選択します。必要に応じて、イベントデータのフィルターを追加できます(例:
plan = "pro"の場合のみトリガー)。 - 必要に応じて遅延を追加します(例:最初のオンボーディングメールを送信する前に、登録から1時間待機する)。
- 最初のメッセージアクションを追加し、チャネル(メール、SMS、プッシュなど)を選択してメッセージを作成します。
- Liquid テンプレートを使ってパーソナライズします:
{{ customer.first_name }}、{{ event.plan_name }}、{{ customer.company }} - フォローアップ用の分岐ロジックを追加します。例:「ユーザーはオンボーディングのステップを完了したか?」に対する true/false の分岐。
- コンバージョン目標イベント(例:
onboarding_completed)と測定期間を設定し、キャンペーンの効果を測定します。 - 下書きモードでジャーニーをテストします。テスト用プロフィールを使い、Track API 経由でイベントを手動でトリガーしてください。
- 準備ができたら、ジャーニーを有効化します。
- キャンペーンのトリガーとなるイベントを特定します(例:
-
API 経由でトランザクションメールを送信する:
- Customer.io でトランザクションメッセージテンプレートを作成します:Transactional > Create Transactional Message > Email
- メールの内容を作成します。動的データには Liquid 変数を使用します(例:
{{ order_number }}、{{ reset_url }})。 - テンプレート設定からトランザクションメッセージ ID を控えます。
- Settings > API Credentials から App API キーを取得します(これは Bearer トークンであり、Track API の Site ID/キーのペアとは異なります)。
- API 経由で送信します:
POST https://api.customer.io/v1/send/email Authorization: Bearer YOUR_APP_API_KEY Content-Type: application/json { "transactional_message_id": "YOUR_TEMPLATE_ID", "to": "[email protected]", "identifiers": { "id": "user_123" }, "message_data": { "order_number": "ORD-456", "total": "$99.00" } } - 応答を処理します。成功(200)またはエラーコードを確認してください。
- Customer.io の Transactional Messages セクションで配信状況を監視します。開封、クリック、配信状況がキャンペーン分析と並んで表示されます。
- EU データレジデンシーの場合は、
https://api-eu.customer.io/v1/send/emailを使用します。
-
データドリブンなセグメントを作成する:
- Segments > Create Segment > Data-driven に移動します。
- ビジュアル条件ビルダーを使って条件を定義します。属性フィルター、イベントフィルター、エンゲージメントフィルターを組み合わせます。
- 属性フィルターの例:
planが"premium"と等しい、かつcreated_atが 2025-01-01 より後。 - イベントフィルターの例:過去7日間に
loginを3回以上実行した人物。 - エンゲージメントフィルターの例:過去30日間にいずれかのメールを開封した人物。
- 複雑なロジックには AND/OR グループを使用します。例:(plan = "premium" OR plan = "enterprise")AND(最終ログインが過去14日以内)。
- 保存する前にセグメントをプレビューし、一致するプロフィールを確認します。
- セグメントをジャーニーのトリガーとして使用します。セグメントの条件に一致すると自動的にジャーニーに入り、一致しなくなると退出します。
- Track API または Data Pipelines 経由で新しいデータが届くと、セグメントはリアルタイムで再評価されるため、手動で更新する必要はありません。
-
ジャーニーのワークフローに Webhook を追加する:
- ジャーニービルダーで既存のジャーニーを開くか、新しいジャーニーを作成します
- ワークフローの目的のステップに「Send Webhook」アクションを追加します
- Webhook を設定します:HTTP メソッド(GET、POST、PUT、PATCH、DELETE)、URL、ヘッダー、本文を設定します
- Webhook の本文で Liquid テンプレートを使用して、人物の属性やイベントデータを含めます:
{ "user_id": "{{ customer.id }}", "plan": "{{ customer.plan }}" } - 必要に応じて認証ヘッダーを追加します(例:
Authorization: Bearer YOUR_EXTERNAL_API_KEY) - 使用例:外部 CRM の更新、Slack 通知のトリガー、独自 API の呼び出しによるリソースのプロビジョニング、サードパーティ製ツールへのデータ同期
- Webhook のレスポンスを処理します。Webhook のレスポンスステータスコード(成功/失敗の経路)に基づいてジャーニーを分岐できます
- ジャーニーを有効にする前に、下書きモードで Webhook をテストします。外部エンドポイントが想定どおりのペイロードを受信することを確認します
-
データ取り込み用の Data Pipelines を設定する:
- Data Pipelines > Sources > Add Source に移動します
- ソースの種類を選択します。JavaScript SDK(ブラウザー)、サーバーサイド SDK(Node、Python、Ruby、Go、Java、PHP)、または HTTP API から選びます
- ソースの書き込みキーをコピーします。これは Customer.io に流入するデータの認証に使用します
- アプリケーションに SDK をインストールします(例:Node.js の場合は
npm install @customerio/cdp-analytics-node) - 書き込みキーを使って初期化し、データを送信します:
analytics.identify("user_123", { name: "Jane", plan: "premium" })— 人物を作成/更新しますanalytics.track("user_123", "Feature Activated", { feature: "reports" })— イベントを追跡します
- Data Pipelines API は Segment のトラッキング仕様と互換性があります。Segment から移行する場合、コードの変更は最小限で済みます
- リバース ETL(Snowflake/BigQuery)の場合:Data Pipelines > Sources > Add Source > Warehouse に移動し、ウェアハウスの認証情報を接続して、同期スケジュールを設定します
- Customer.io Journeys の外部にデータをルーティングするため、送信先を追加します。たとえば、イベントデータを Amplitude、Mixpanel、または Webhook エンドポイントに送信します
- Data Pipelines のダッシュボードでソースの健全性を監視し、イベント量、エラー、レイテンシを追跡します
注意点
調査に基づくベストエフォートの情報です。詳細は Customer.io の最新ドキュメントで確認してください。
-
Essentials プランは月額 $100 からで、小規模な送信者には割高です。 Mailchimp(最大 500 件の連絡先まで無料)や SendGrid(1 日 100 通まで無料)とは異なり、Customer.io に無料プランはなく、5,000 プロファイルで月額 $100 が最低料金です。創業間もないスタートアップや、数千件未満の連絡先を扱う小規模な送信者の場合は、Customer.io のイベント駆動型自動化が、よりシンプルなツールと比べて費用に見合うかを検討してください。大規模になると、プロファイルあたり $0.009 の超過料金もすぐに積み上がります。
-
Essentials プランで利用できるカスタムオブジェクトタイプは 2 種類のみです。 アカウント、製品、サブスクリプション、注文など、人物以外のエンティティを 2 種類より多くモデル化する必要がある場合は、Premium(月額 $1,000、年払い)にアップグレードする必要があります。Essentials を契約する前に、データモデルを慎重に計画してください。アカウントともう 1 種類のオブジェクトタイプが必要なら、すでに上限に達しています。
-
API トリガーのブロードキャストは、10 秒あたり 1 リクエストに制限されています。 Track API(100 リクエスト/秒)や Transactional API(100 リクエスト/秒)と比べて大幅に低速です。高頻度またはリアルタイムのユースケースでは、API トリガーのブロードキャストを使用しないでください。多くの人に緊急の単発メッセージをすばやく送信する必要がある場合は、個別送信に Transactional API を使用するか、直前に API 経由でトリガーするのではなく、ブロードキャストを事前にスケジュールしてください。
-
アプリ内メッセージには、アプリへの Customer.io SDK の統合が必要です。 クライアント側のコードなしで利用できるメールや SMS とは異なり、アプリ内メッセージを使うには、Customer.io JavaScript SDK(ウェブ)またはモバイル SDK(iOS/Android/React Native/Flutter)をアプリにインストールし、初期化する必要があります。つまり、SDK の統合、メッセージのレンダリング処理、ユーザーセッションの管理にエンジニアリング作業が発生します。この作業のための開発時間を確保してください。すぐに使えるチャネルではありません。
-
SMS には Twilio アカウントが別途必要で、Twilio の料金も別途発生します。 Customer.io は SMS インフラを直接提供せず、内部で Twilio を利用します。Twilio アカウントを作成して電話番号を購入し、Twilio の認証情報を Customer.io に接続する必要があります。SMS の料金は Customer.io ではなく Twilio から、Twilio のメッセージ単価に基づいて請求されます。そのため請求が複雑になり、メッセージングの総費用が 2 社に分かれます。
- 継続的な改善:ここに記載されていないことが分かった場合は、今日の日付を添えて
references/learnings.mdに追記してください。
ステップ 5 — 関連スキル
/sales-email-marketing— メールマーケティングの戦略とベストプラクティス(プラットフォームに依存しません)/sales-deliverability— クロスプラットフォームのメール到達性 — SPF/DKIM/DMARC、ウォームアップ、受信トレイへの振り分け/sales-email-tracking— メールの開封・クリック計測の戦略/sales-integration— Zapier、Webhook、または API を使って Customer.io を他のツールに接続/sales-funnel— ファネル戦略とコンバージョン最適化/sales-do— どのスキルを使えばよいか分かりませんか?ルーターがあらゆる営業目標に適したスキルを選びます。インストール:npx skills add sales-skills/sales --skill sales-do
例
例 1:サインアップをトリガーにしたオンボーディングのステップメールを作成する
ユーザーの発言:「誰かが自社の SaaS 製品にサインアップしたときに、オンボーディングメールを 5 通送信したいです。重要なアクティベーション手順を完了したかどうかによって、異なる経路に分岐させたいです。」 スキルの動作:
- Track API または Data Pipelines を通じて、ユーザーが
signed_upイベント(または同等のイベント)をトラッキングしていることを確認します。トラッキングしていない場合は、イベントの計測方法を案内します signed_upイベントをトリガーとする新しいジャーニーを作成します- 遅延を設定した 5 ステップのメールシーケンスを設計します。ウェルカムメール(即時)、スタートガイド(1 日目)、主要機能の紹介(3 日目)、アクティベーションを促すメール(5 日目)、状況確認メール(7 日目)
- ステップ 3 の後に分岐ロジックを追加します。ユーザーが
activatedイベントを実行したかを確認し、実行している場合はアクティベーションを促すメールをスキップして、代わりに「よくできました」というメールを送信します。実行していない場合は、アクティベーションを促すメールを送信します activatedをコンバージョン目標として、14 日間の計測期間を設定します- Liquid テンプレートを使って、
{{ customer.first_name }}、{{ customer.company }}、{{ customer.plan }}をパーソナライズに使用します - 有効化する前に、ドラフトモードでテストプロファイルを使ってジャーニーをテストします 結果:ユーザーがアクティベーションを完了したかどうかに応じて内容が変わり、効果を測定するためのコンバージョントラッキングも備えた、行動に基づくオンボーディングシーケンスが完成します
例 2:注文確認のトランザクションメールを設定する
ユーザーの発言:「購入直後に、明細項目を含む注文確認メールをバックエンド API から送信する必要があります。」 スキルの動作:
- Customer.io で、注文データ用の Liquid テンプレート(
{{ order_number }}、{% for item in message_data.items %}でループ処理する{{ items }}、{{ total }})を使ったトランザクションメッセージテンプレートを作成します - Settings > API Credentials から App API キーを取得する方法を案内します
- API 呼び出しの構成を示します。
transactional_message_id、to、identifiers、および注文の詳細を含むmessage_dataを指定して、POST https://api.customer.io/v1/send/emailを実行します - トランザクションメールの送信とプロフィールを関連付けて分析に利用できるよう、
identifiersにユーザーのidを含めることを推奨します - 配信失敗を監視するため、Webhook を設定するか、Transactional Messages ダッシュボードを確認するよう案内します
- 注意:EU インフラストラクチャを利用している場合は、
api-eu.customer.ioに切り替えます 結果:バックエンドからトリガーされ、明細項目を動的に表示できる、本番環境で利用可能な注文確認のトランザクションメールが完成します
例 3:価値の高い顧客セグメントを Google Ads に同期して広告配信の対象から除外する
ユーザーの発言:「すでに有料顧客であるユーザーに、獲得広告を表示しないようにしたいです。Customer.io から Google Ads に有料顧客のセグメントを同期できますか?」 スキルの動作:
- 有料顧客を特定するデータ駆動型セグメント(例:
planが"free"ではなく、かつsubscription_statusが"active")があることを確認します - 広告オーディエンス同期の設定手順を案内します。Integrations > Ad Audiences > Google Ads に移動します
- OAuth 経由で Google Ads アカウントを接続します
- 有料顧客のセグメントを Google Ads の顧客リストにマッピングします
- セグメントへの追加・削除に応じてオーディエンスが自動的に同期されることを説明します。有料顧客になったユーザーは追加され、解約した顧客は削除されます
- 同期したリストを使って Google Ads に除外オーディエンスを作成し、獲得キャンペーンから既存顧客を除外することを推奨します 結果:サブスクリプションの状態が変わるたびにオーディエンスが最新の状態に保たれ、有料顧客を自動的に除外して獲得広告費を最適化できます
トラブルシューティング
イベントによってキャンペーンやジャーニーがトリガーされない
症状:Track API または Data Pipelines を通じてイベントを追跡していますが、イベントをトリガーとするキャンペーンやジャーニーが実行されません。
原因:最もよくある原因は、イベントを追跡する前に Customer.io にユーザーが存在していないことです。Track API では、イベントをユーザーに関連付ける前に、ユーザーを特定する必要があります(PUT /customers/{id})。もう一つよくある原因は、コード内のイベント名と、ジャーニーのトリガーとして設定されているイベント名が一致していないことです(イベント名では大文字と小文字が区別されます)。最後に、ジャーニーがアクティブな状態であることを確認してください。下書きまたは一時停止中のジャーニーはトリガーされません。
解決策:Customer.io でプロフィールを確認し(People > ID またはメールアドレスで検索)、ユーザーが存在することを確認してください。連携コードで、track の前に identify を呼び出すようにしてください。コード内のイベント名とジャーニーのトリガー設定のイベント名が、大文字と小文字も含めて完全に一致していることを再確認してください。Journeys リストで、ジャーニーのステータスが「Active」になっていることを確認してください。Activity Log を使って、Customer.io がイベントを受信しているか確認してください。イベントが表示されない場合は、連携コードまたは API 認証に問題があります。
ジャーニーで設定されているのに SMS メッセージが送信されない
症状:ジャーニーのメールステップは正しく動作しますが、SMS ステップがスキップされるか、ジャーニーの分析にエラーが表示されます。
原因:Customer.io で SMS を利用するには、有効な電話番号が設定された Twilio アカウントを接続する必要があります。Twilio の認証情報が設定されていない、期限切れになっている、または Twilio アカウントの残高が不足している場合、SMS ステップはエラーが表示されないまま失敗するか、スキップされます。また、ユーザーには有効な電話番号属性(通常は phone、または設定でマッピングされたカスタム属性)が必要で、SMS の配信登録を解除していないことも必要です。
解決策:Settings > Workspace Settings > SMS に移動し、Twilio Account SID、Auth Token、電話番号が正しく設定されていることを確認してください。テスト SMS を送信して、Twilio 接続をテストしてください。ユーザーのプロフィールを確認し、想定される属性フィールドに有効な電話番号が登録されていることを確認してください。ユーザーの SMS 配信登録ステータスが解除済みでないことを確認してください。Twilio アカウントのダッシュボードで、エラー、残高不足、または電話番号のコンプライアンスに関する問題がないか確認してください。
Data Pipelines のイベントがソースのダッシュボードには表示されるが、ユーザープロフィールには表示されない
症状:Data Pipelines のソースでイベントが受信されている(イベント数が増加している)にもかかわらず、Customer.io の個々のユーザープロフィールを見ると、イベントが表示されません。
原因:Data Pipelines では、track イベントをプロフィールに関連付ける前に、ユーザーに対して identify の呼び出しが必要です。一度も特定されていない userId を指定して track の呼び出しを送信すると、イベントはパイプラインで受信されても、ユーザープロフィールに関連付けられない場合があります。もう一つの原因として、Customer.io Journeys 向けの Data Pipelines の宛先が有効になっていない、または正しく設定されていないことが考えられます。
解決策:analytics.track() の呼び出しの前または同時に、analytics.identify("user_id", { traits }) を呼び出していることを確認してください。Data Pipelines > Destinations を確認し、Customer.io Journeys が宛先として登録され、有効になっていることを確認してください。宛先のイベント配信ログでエラーを確認してください。データウェアハウスからのリバース ETL を使用している場合は、同期マッピングに ID データとイベントデータの両方が含まれていることを確認し、同期スケジュールを確認して、最近実行されていることを確かめてください。