TikTok広告を運用するなかで、「実店舗での購買やCRMに記録されたコンバージョンが、TikTokの広告成果としてまったく計測されていない」と感じたことはないでしょうか。
TikTok広告を見たユーザーが、後日店舗で購入したケース。広告経由で資料請求があり、電話で成約に至ったケース。あるいは、営業担当による商談で受注したケースなど、オンラインの外で起きた成果はTikTok Pixelでは原理的に計測できません。
こうした課題を解決する手段として注目されているのが、TikTokの「Events API(オフラインコンバージョン)」です。サーバーサイドからコンバージョンデータを直接送信することで、Pixel計測では捉えられなかったオフラインの成果をTikTok広告の計測に取り込めるようになります。
本記事では、TROCCOの転送先カスタムコネクタ機能を活用し、DWH(BigQueryやSnowflakeなど)やGoogle Spreadsheetsに蓄積された実店舗の購買データを、TikTok Events API経由でオフラインコンバージョンとして連携する手順を解説します。
カスタムコネクタとは?

ETLツールでは一般的に、2つの異なるインターフェース間の接続を可能にする実装のことを、コネクタと呼びます。
TROCCOの転送先カスタムコネクタ機能は、DWHなどのデータソースから抽出したデータを、任意のREST APIを利用しデータ送信できる機能です。
TikTok Events APIのエンドポイントとリクエスト形式を設定することで、GUIベースでの連携が実現します。
TROCCOのカスタムコネクタの特徴
- OAuth認証(認可コード・クライアントクレデンシャルズ)やAPIキーの設定に対応
- ページネーションや任意のクエリパラメータに対応
- 通常のコネクタと同様にスケジュールによる定期実行が可能
詳細は下記の記事をご参照ください。
カスタムコネクタとは
※ カスタムコネクタはTROCCOのAdvancedプラン以上のプランでご利用いただける機能です。
全体構成・データ連携イメージ
本事例におけるデータの流れは以下のとおりです。

転送元には、POSシステムやCRMなどから集約された購買データが格納されています。購買日時、注文ID、購入金額、顧客のメールアドレスや電話番号といった情報が対象です。
オフラインコンバージョンと広告接触の紐づけには、TikTokがハッシュ化されたPII(メールアドレス・電話番号)を用いて、広告を閲覧・クリックしたユーザーとのマッチングを行います。実店舗やコールセンターなどオフラインで発生するコンバージョンでは、広告クリック時のクリックID(ttclid)を取得できないため、PIIがマッチングの主キーとなります。
なお、Web経由のEvents APIでは ttclid(クリックID)によるマッチングも利用可能ですが、オフラインでは取得できないためPIIが主な手段となります。
本連携はリアルタイム送信ではなく、バッチ処理による定期連携を前提としています。たとえば「毎日深夜に前日分の購買データを送信する」といった運用です。
この方法のメリットは3点あります。
- DWHを正としたデータ起点で連携できる
- GUIベースで設定でき、コード実装が不要
- バッチ処理(1リクエストあたり最大100件)による安定したデータ送信が可能
API実装のためにエンジニアリソースを確保する必要がなく、広告運用担当者やデータ担当者が主体となって導入を進められます。
【実践編】TikTok Events API連携カスタムコネクタを作成する手順
TikTok側の準備
Offline Event Setの作成
TikTok Events APIにオフラインコンバージョンを送信するには、まずイベントマネージャーでOffline Event Set(オフラインイベントセット)を作成する必要があります。

- TikTok Ads Manager → ツール(Tools) → イベントマネージャー(Events Manager)にアクセス
- 「データソースを連携」をクリック
- 「オフライン」を選択し、「次へ」をクリック

- オフラインイベントセット名を入力して「作成」をクリック

作成時に「自動トラッキング」の設定が表示されますが、検証段階ではオフのままで問題ありません。この設定は「今後作成されるキャンペーンを自動的にこのイベントセットに紐づける」ものであり、イベント送信の可否には影響しません。
権限について: Offline Event Setの作成には、イベントマネージャーのadministrator(管理者)またはoperator(運用者)ロールが必要です。権限が不足している場合は、ビジネスセンターのAdminにデータソースの作成と権限共有を依頼してください。
アクセストークンの発行
作成したOffline Event Setの設定タブを開き、「イベントAPIの設定」セクションにある「アクセストークンを作成」をクリックします。

トークンが生成されたら、Offline Event Set ID(画面上部に表示される ID:)とアクセストークンを控えます。

重要:トークンはページ更新で消えます。 画面にも「このトークンは、どこか安全な場所にコピー、保存しておいてください。TikTokが格納することはありません。」と表示されている通り、発行画面を閉じる前に必ずコピーしてください。
(検証時のみ)テストイベントコードの取得
イベントセットの「テストイベント」タブから test_event_code を取得できます。このコードをペイロードに含めて送信すると、本番データとしては処理されず、テストイベント画面でリアルタイムに着弾を確認できます。

テストイベントコードはセッションごとに変わるため、検証のたびに新しいコードを取得してください。
TROCCO側の設定
TikTok側の準備が完了したら、TROCCOで転送先カスタムコネクタを作成します。
APIドキュメントを確認しながら、各種設定をコネクタ情報・認証情報の設定を行います。
TikTok Events API公式ドキュメント: Events API 2.0 Overview
転送先カスタムコネクタの作成
- TROCCOにログイン
- 「カスタムコネクタ」→ 「新規追加」をクリック
- 「転送先で作成する」を選択

コネクタ情報・認証情報
コネクタ情報と認証情報を設定します。
| セクション | 項目 | 設定値 |
|---|---|---|
| コネクタ情報 | ベースURL | https://business-api.tiktok.com/open_api/v1.3 |
| 認証情報 | 認証種別 | APIキー |
| 認証情報 | 認証ヘッダ名 | Access-Token |
| 認証情報 | 認証スキーム | 空欄 |

認証スキームの下に「以下のHTTPヘッダがリクエストに付与されます。Access-Token: <接続情報で設定したAPIキー>」と表示されていることを確認してください。
注意: TikTok Marketing APIは一般的な Authorization: Bearer ではなく Access-Token: <token> ヘッダで認証します。認証ヘッダ名・認証スキームをデフォルトのまま残すと認証エラーになるため、上記の通り変更してください。
エンドポイント設定
「エンドポイントを追加」をクリックして、APIエンドポイントを追加します。

| 項目 | 設定値 |
|---|---|
| 操作種別 | 作成API |
| リクエストタイプ | 一括リクエスト |
| バッチサイズ | 100以下(TROCCOの上限。検証時は10〜50程度で挙動確認を推奨) |
| パス | /event/track/ |
| HTTPメソッド | POST |

TikTok Events APIは data 配列に複数イベントをまとめて送信できるため、リクエストタイプは「一括リクエスト」を選択します。API仕様上は1リクエストあたり最大1000件を受け付けますが、TROCCOのバッチサイズ上限は100のため、実効上限は100件/リクエストになります。
バージョン表記について: 製品名は「Events API 2.0」ですが、APIパスのバージョンは v1.3 です。混同しやすいですが同一のものを指しています。本手順ではベースURLに /v1.3 を含めているため、パスには /event/track/ のみを設定します。
リクエストテンプレート(Liquid形式)
エンドポイント設定画面で、リクエストテンプレートをLiquid形式で定義します。Liquidは変数の埋め込みやループ処理が可能なテンプレート言語で、TROCCOでは転送元のカラム値をAPIリクエストのペイロードに動的に展開する際に使用します。event_source と event_source_id は固定値、data 配列をTROCCOの rows でループ展開します。リクエストテンプレートの記法については、転送先カスタムコネクタの作成方法 – リクエストテンプレートを参照してください。

リクエストテンプレートの記載例
{
"event_source": "offline",
"event_source_id": "<Offline Event Set ID>",
"test_event_code": "<テストイベントコード>",
"data": [
{% for row in rows %}
{
"event": "{{ row.event_name }}",
"event_time": {{ row.event_time }},
"event_id": "{{ row.order_id }}",
"user": {
"email": "{{ row.email }}",
"phone": "{{ row.phone }}"
},
"properties": {
"currency": "{{ row.currency }}",
"value": {{ row.value }},
"order_id": "{{ row.order_id }}",
"contents": [
{
"content_id": "{{ row.content_id }}",
"content_type": "product",
"content_name": "{{ row.content_name }}",
"price": {{ row.price }},
"quantity": {{ row.quantity }}
}
]
}
}{% unless forloop.last %},{% endunless %}
{% endfor %}
]
}
test_event_code は検証時のみ含めます。本番運用時はこの行を削除してください。
リクエストボディの展開テスト
テンプレートプレビュー機能を利用すると、サンプルデータを用いて、Liquid形式で記載したリクエストテンプレートが実際にどのように展開されるのか、確認することができます。
サンプルデータに値を設定し、「プレビュー生成」ボタンをクリックし、プレビュー結果を表示し、想定どおりのリクエストボディになっているか確認します。


テンプレート記述のポイント
- 文字列値はクォートで囲む(
"{{ row.xxx }}")。数値(event_time/value/price/quantity)はクォートなし {% unless forloop.last %},{% endunless %}でJSON配列の末尾カンマを防止
注意:イベント名は最新の標準名を使用してください。 TikTokはイベント名のリネームを行っており、旧名称を送ると「無効なイベント名フォーマット」で却下されます。たとえば購入イベントは旧名称の CompletePayment ではなく、新名称の Purchase を使用してください。オフラインで利用可能な主なイベントコードは以下のとおりです。
Purchase / Contact / Subscribe / AddPaymentInfo / AddToCart / AddToWishlist / CompleteRegistration / Download / InitiateCheckout / Search / ViewContent
注意:PII(メールアドレス・電話番号)はSHA-256ハッシュ+正規化が必須です。 user オブジェクトに含めるメールアドレスは小文字化+前後空白除去、電話番号はE.164形式(例:+819012345678)にしてから、それぞれSHA-256でハッシュ化して送信します。ハッシュ化は、TROCCOの転送設定STEP2のテンプレートETLにあるカラムハッシュ化機能で行えます。詳細は後述のSTEP2を参照してください。
HTTPヘッダ
HTTPヘッダに Content-Type: application/json を追加します。Access-Token は認証情報側で付与されるため、HTTPヘッダに重複して追加する必要はありません。
| ヘッダ名 | 表示名 | デフォルト値 | 編集可能 | 必須 |
| Content-Type | Content-Type | application/json | ✓ |

設定が完了したら「保存」をクリックします。

その他の詳細についてはヘルプドキュメントを参照してください。 転送先カスタムコネクタの作成方法
エンドポイントとカスタムコネクタを保存すると、詳細画面で設定内容を確認できます。

接続設定の作成
カスタムコネクタの詳細画面右上の編集ボタンをクリックし、エンドポイントの編集アイコンをクリックして再度編集画面を開きます。
- 「接続情報を追加」ボタンをクリック
- 新規タブで接続情報の作成画面が表示
- カスタムコネクタで先ほど作成したカスタムコネクタを選択
- 任意の名前を入力

- 「APIキーや認証トークン」にイベントマネージャーで発行したアクセストークンを入力
- 「保存」をクリック

これにより、アクセストークンが安全に管理されます。
接続確認
先ほど作成した接続情報を利用して接続確認を行います。この接続確認は実際にAPIリクエストを送信するため、データが登録される可能性があります。

「接続を確認」ボタンをクリックし、「エンドポイントへのリクエストに成功しました。」と表示されれば成功です。

TikTokのイベントマネージャーのテストイベント画面でも、イベントが着弾していることを確認します。

注意: TikTok Events APIはパラメータエラー時もHTTP 200を返し、body内の code フィールドでエラーを示します。code が0であれば成功です。TROCCOはHTTPステータスで成否判定するため、body内エラーを見逃す可能性があります。詳しくは「運用上の注意点」を参照してください。
転送設定の作成と実行
STEP1: 転送元・転送先の設定
- 「データ転送」→「転送設定」→「新規転送設定作成」を選択
- 転送元:Google Spreadsheets、転送先:カスタムコネクタを選択

転送元のGoogle Spreadsheetsには、以下のようなカラム構成で購買データを用意しておきます。

| カラム名 | 内容 | 例 |
|---|---|---|
| event_name | イベント名 | Purchase |
| event_time | 購買日時(UNIX秒) | 1780315200 |
| order_id | 注文ID | POS-20260601-0012 |
| メールアドレス(平文) | user001@example.com | |
| phone | 電話番号(E.164形式) | +819012340001 |
| currency | 通貨コード | JPY |
| value | 購入金額 | 12800 |
| content_id | 商品ID | JKT-001 |
| content_name | 商品名 | ウールジャケット |
| price | 単価 | 12800 |
| quantity | 数量 | 1 |
event_time はUNIX秒(10桁)で用意します。ミリ秒や日付文字列(20260601 等)ではなく、UNIX秒に変換してください。
email と phone は平文のまま入力します。ハッシュ化はTROCCOのSTEP2(テンプレートETL)で行います。
転送元のGoogle Spreadsheetsの設定で、接続情報・シートのURL・シート名を指定し、カラム設定を行います。


転送先の設定で、作成したカスタムコネクタ・接続情報・作成エンドポイントを選択します。

転送元や転送先の設定項目についての詳細は、ヘルプドキュメントを参照して設定してください。
転送元 – Google Spreadsheets
転送先 – カスタムコネクタ

STEP2: データプレビュー・詳細設定(テンプレートETL)
STEP2の詳細設定画面では、カラム定義の確認と、テンプレートETLによるデータ変換を行います。

スキーマ・データのプレビューで、転送元のデータが正しく読み込まれていることを確認します。この段階では email と phone は平文のままです。

次に、テンプレートETLの「カラムハッシュ化」セクションで、email と phone のカラムを対象に追加します。

「プレビューを再読み込み」をクリックすると、email と phone がSHA-256ハッシュ値に変換されていることを確認できます。

これにより、転送元のデータにハッシュ関数を書く必要がなく、TROCCO上の設定だけでPIIのハッシュ化が完結します。
メールアドレスの正規化(小文字化・空白除去)が必要な場合は、テンプレートETLの文字列変換機能で行うか、転送元のスプレッドシートで事前に処理しておいてください。
テンプレートETLの詳細については、ヘルプドキュメントを参照してください。 テンプレートETL
問題がなければ「確認画面へ」をクリックし、STEP3で「保存して適用」をクリックして転送設定を保存します。

ジョブの実行
作成した転送設定の画面の右上にある「実行」ボタンを押します。


ジョブが正常終了するとステータスが「SUCCESS」に変更になります。

TikTokのイベントマネージャーのテストイベント画面でも、転送設定から送信されたイベントの着弾を確認できます。

TikTok Events APIへのオフラインコンバージョンデータの送信が完了しました。スケジュール実行を設定することで、日次・週次での定期連携も可能です。
送信したイベントの活用方法
送信されたオフラインコンバージョンデータは、TikTok広告の計測やオーディエンス構築に活用できます。
オフラインコンバージョン計測
送信したイベントは、イベントセットの自動トラッキング、またはキャンペーン作成時にコンバージョンイベントとしてイベントセットを選択することでキャンペーンに紐づきます。TikTokがハッシュ化されたPIIを用いて、広告を閲覧・クリックしたユーザーとのマッチングを行い、オフラインでの購買が広告成果として計測されるようになります。
アトリビューションウィンドウは、クリックスルーが最大28日間、ビュースルーが最大7日間から選択可能です。
キャンペーンへの紐づけや最適化設定の詳細については、TikTok公式ヘルプを参照してください。 オフラインコンバージョンについて
オフラインアクティビティオーディエンス
アップロードしたオフラインイベントデータを基に、カスタムオーディエンスを作成することも可能です。実店舗で購入したユーザーに対するリターゲティングや、類似オーディエンスの拡張に活用できます。
運用上の注意点
レスポンスbodyのエラー検知
前述のとおり、TROCCOのカスタムコネクタはHTTPステータスコードで転送の成否を判定します。TikTok Events APIが「HTTP 200 + body内の code が0以外」というエラーを返した場合、TROCCOはこれを成功と判定してしまいます。
この制約を踏まえ、本番運用では以下のような補完的な確認を行ってください。
- イベントマネージャーで定期的にイベントの受信状況を確認する
- 送信件数とイベントマネージャー上の受信件数を突き合わせる
- 初回送信時はテストイベントコード付きで動作確認を行ってから本番に切り替える
event_timeの制約
TikTokのオフラインコンバージョンのアトリビューション対象は、過去28日以内のイベントです。これを超えたイベントは送信しても計測対象外となるため、転送元データの期間に注意してください。
テスト時の推奨事項
本番運用を開始する前に、少量データ(数件〜数十件)で一通りの動作確認を行ってください。転送元にGoogle Spreadsheetsを利用すると、カラム設計を柔軟に変更しながら検証できます。
TikTok Events API オフラインコンバージョン連携を活用したカスタムコネクタのユースケース
実店舗購買データのオフラインコンバージョン連携
本記事で解説したユースケースです。POSシステムに記録された実店舗の購買データをDWHに集約し、TikTok広告のオフラインコンバージョンとして連携します。TikTok広告が実店舗の売上にどれだけ貢献しているかを計測できるようになります。
CRM/SFAデータとの連携
BtoBビジネスにおいて、広告経由で獲得したリードがその後どの段階まで進んだか(商談化、受注等)をTikTokに還元できます。ファネルの下流で発生するコンバージョンを計測に取り込むことで、広告投資のROIをより正確に評価できます。
他媒体への横展開
TROCCOでは、Google広告のオフラインコンバージョンやFacebook広告(Meta)のコンバージョンAPIについては公式コネクタが提供されています。これらの媒体への連携が必要な場合は、カスタムコネクタを自作する必要はなく、公式コネクタをそのまま利用できます。
一方、TikTokのように公式コネクタが未提供の媒体に対しては、本記事で解説したカスタムコネクタによる連携が有効です。転送先カスタムコネクタ機能は任意のREST APIに対応しているため、コンバージョンAPIを提供している他の広告媒体にも同様のアプローチで対応できます。
Yahoo!広告 検索広告のコンバージョンAPIについても、カスタムコネクタでの連携事例を公開しています。あわせてご参照ください。
Yahoo!広告 検索広告コンバージョン API 後付けコンバージョン計測・オフラインCV連携の実践ガイド|転送先カスタムコネクタ作成事例
まとめ
TikTok広告の成果計測において、オンライン(Pixel)だけでは捉えきれないオフラインのコンバージョンは少なくありません。Events APIを活用することで、実店舗での購買や電話での成約といったオフラインの成果を、TikTok広告の計測に取り込めるようになります。
TROCCOの転送先カスタムコネクタ機能を使えば、APIの仕様を把握した担当者が一度コネクタを作成しておくことで、以降の転送設定や定期実行はGUIの操作だけで完結します。API実装を個別に内製する必要がなく、コネクタの再利用によって運用・保守の負担も抑えられます。
公式コネクタ同等の性能・セキュリティに加え、ワークフロー/通知も利用可能です。
無料トライアルで、その使いやすさをお試しください。
※ 転送先カスタムコネクタ機能のご利用にはAdvancedプラン以上のご契約が必要です。







