はじめに
googleが提供しているオフラインコンバージョンのトラッキングの仕組みと実装について記載。
オフラインコンバージョンとは何か?
オフラインコンバージョンとは、ウェブサイトコンバージョンと対になる概念でオンライン広告によって影響を受けた顧客が店舗での購入や電話での注文など、インターネット外で起こした行動のこと。
とはいえ、googleが自動で収集できるのはwebサイト上のクリックイベントなので、オフラインでのコンバージョン(面談や成約など)は、こちらでフラグを記録して、googleに教える必要がある。
GCLID(Google Click Identifierの略)とは媒体側が各広告クリックに対して発行した固有のID。GCLIDを引き継いでコンバージョンの情報と紐付けてあげれば、「どのクリックに由来してコンバージョンが発生したのか」を広告管理画面でも認識できる。
自動タグ設定をオンにする
公式説明はこちら
https://support.google.com/google-ads/answer/3095550?hl=ja
GCLIDは、自動タグ設定をオンにすることで自動付与される。
ユーザーが広告をクリックすると、自動タグ設定によりその広告の URL にGCLIDと呼ばれるパラメータが追加されます。たとえば、
www.example.com
の広告をユーザーがクリックすると、最終ページ URL はwww.example.com/?gclid=123xyz
のようになります。自動タグ設定が有効で、Google アナリティクス タグがウェブサイトに実装されている場合、サイトのドメインの新しい Google アナリティクス Cookie に、GCLID が保存されます
このような感じで、Google AdsのAccount設定画面→自動タグ(Auto-tagging)にチェックを入れて保存する。
GCLIDの設定
ウェブサイトに訪問したユーザーからのGCLIDをキャプチャして、それを後でフォーム送信の際に使用する場合の流れは下記。
ユーザーがGoogle広告をクリックする:
ユーザーがGoogle広告をクリック。この広告のURLにはGCLIDがパラメータとして含まれている。
ユーザーがランディングページにリダイレクトされる:
ユーザーは広告のリンクをクリックした後、GCLIDを含むURLを持つウェブサイトのランディングページにリダイレクトされる。
PHPがGCLIDを読み取り、クッキーにセットする:
ランディングページが読み込まれると、PHPスクリプトがURLからGCLIDを読み取る。その後、setcookie()
関数を使用してGCLIDの値をクッキーに保存する。
ユーザーがフォームを入力する:
ユーザーはウェブサイト上のフォームに情報を入力する。
フォーム送信時にGCLIDが含まれる:
フォームには<input type="hidden">
タグが含まれており、この隠しフィールドは名前がgclid_field
。フォームが送信されるとき、PHPはクッキーからGCLIDの値を取得し、この隠しフィールドのvalue
属性にセットする。
フォームデータがサーバーに送信される:
ユーザーがフォームを送信すると、入力されたデータと一緒にGCLIDもサーバーに送信される。
サーバーがフォームデータとGCLIDを処理する:
サーバーは受け取ったフォームデータを処理し、GCLIDを使用してユーザーのセッションや行動を追跡するなど、必要に応じてさまざまな処理を行う。
ユーザーがサイトに訪れた際にURLパラメータとしてgclid
が存在するかをチェックし、存在すればその値をクッキーにセットする。これにより、ユーザーがフォームを送信する際にgclid
の値を含めることができる。
<?php
if (isset($_GET['gclid'])) {
setcookie("gclid", $_GET['gclid'], time() + 3600); // 1時間の有効期限を設定
}
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<!-- headの中身をここに追加 -->
</head>
<body>
<main>
<form id="contact_form" name="contact_form" class="h-adr" action="sms.php" method="post">
<!-- GCLIDの隠し項目を追加 -->
<input type="hidden" id="gclid_field" name="gclid_field" value="<?php echo isset($_COOKIE['gclid']) ? $_COOKIE['gclid'] : '---'; ?>">
<!-- 他のフォーム要素 -->
<input type="hidden" name="csrf_token" value="<?php echo $csrf_token; ?>">
</form>
</main>
</body>
</html>
フォーム送信時にPOSTデータとしてgclid_field
が存在するかをチェックし、存在する場合はその値を$data配列に追加。
// send.php
// GCLIDが含まれていれば、postデータに追加
if (isset($_POST['gclid_field'])) {
$data['gclid_field'] = $_POST['gclid_field'];
}
上記のように設定することで、ユーザーがフォーム入力した際に管理者メールにもGCLIDが送られるようになる。
Google DriveにGCLIDを記録するGAS作成
CRMツールとしては、SalesForceをはじめとして、kintoneやHubSpotなどさまざまなサードパーティのツールが存在するが、高機能有料なので、特に小規模事業者やスタートアップ初期の場合は無料のGoogle DriveをCRMツール代わりとして使用している場合も多いだろう。
メールに付与されるGCLIDをGoogle Driveに自動転記するには、フォームの送信をトリガーとして使用し、GASがフォームから送られたデータをGoogle Sheetsに書き込むという形で行う。
サンプルコードは下記
// スプレッドシートのIDを設定します
const SHEET_ID = 'YOUR_SPREADSHEET_ID_HERE';
const SHEET_NAME = 'Sheet1'; // スプレッドシートのシート名
/**
* doPost関数は、WebアプリケーションのURLにPOSTリクエストが送信されたときに実行されます。
* @param {Object} e - POSTリクエストのデータ
*/
function doPost(e) {
// スプレッドシートを開く
const sheet = SpreadsheetApp.openById(SHEET_ID).getSheetByName(SHEET_NAME);
// POSTリクエストからデータを取得する
const postData = e.parameter;
const gclid = postData.gclid_field || 'N/A'; // gclid_fieldがない場合は'N/A'を使用
// 現在の日時を取得する
const timestamp = new Date();
// スプレッドシートに行を追加する
sheet.appendRow([timestamp, gclid]);
// 結果を返す
return ContentService.createTextOutput('Success');
}
このようにすることで、Google Drive上で下記のようにGCLIDが記録される。
Timestamp | GCLID | 名前 | メールアドレス | 電話番号 | その他の情報… |
2024-01-01 12:00:00 | 123abc456def | 山田 太郎 | yamada@example.com | 09012345678 | … |
2024-01-01 12:05:00 | 789ghi012jkl | 佐藤 花子 | sato@example.com | 08098765432 | … |
… | … | … | … | … | … |
- Timestamp: フォームが送信された日時。
- GCLID: Google広告からのクリックを識別するためのGoogle Click Identifier。
- 名前: フォームに入力されたユーザーの名前。
- メールアドレス: フォームに入力されたユーザーのメールアドレス。
- 電話番号: フォームに入力されたユーザーの電話番号。
- その他の情報…: その他、フォームに含まれる可能性のある情報(職種、興味があるサービス、コメントなど)。
オフラインCVの設定と記録
Google Drive上で、蓄積されるリードに対して、その後のオフラインフォローによるCVを記載していくことになる。
まずオフラインCVを決める(面談CV、成約CVなど)。そして、オフラインCVをカラムに追加して、CVを達成したら、達成した日時共に記録する。
気をつけなければならないのは、CV日時の記載方法。最終的にオフラインCVのデータをGoogleに読み込ませるので、読み込ませるときの特定の日時フォーマットに合わせておいたほうが、表記直しの手間が省ける。
よくこの日時フォーマットのエラーで作成したオフラインCVがgoogleで読み込まれなくてエラーになることがある。
Google広告でオフラインコンバージョンをアップロードする場合、コンバージョン発生日時は、ISO 8601拡張形式のタイムゾーン情報を含む形式で提供する必要がある。
2024-01-01 12:00:00+0900
のような形式。これは、2024年1月1日の正午(日本時間)を意味し、タイムゾーンのオフセット+0900
によって日本時間であることが明確になる。
2024-01-01
:日付部分(年-月-日)。12:00:00
:時間部分(時:分:秒)。日本の場合は日本時間で良い。標準時刻を記載する必要はない+0900
:タイムゾーンのオフセット(この場合、UTC+9時間を意味する)。
CV日時のタイムスタンプ形式に関する公式説明はこちら
https://support.google.com/searchads/answer/2411961?sjid=852151253426925496-AP#timestamp
Google Driveでのカスタム日時フォーマットの設定(CV日時用)
というわけで、CV日時の欄に記入したら自動的にタイムゾーン情報を含む日時形式に変換されるように設定する。
google driveのシートで、「数値」>「カスタム日付と時刻」を選択。
下記のようにカスタムフォーマットを入力する(無駄にGUIになっていて、設定が少々ややこしい)
カスタム日時フォーマットを適応したいセルを選択して、先ほど作成したカスタムフォーマットを選択する。
すると、CVした日時を記入すると(日付と分まで記載する必要ある)、自動的にタイムゾーンが付与されて記入される。
google広告とリンクするためのオフラインCVシートを作成
A列:Google Click ID(gclid)
B列:Conversion Name(CV名)
C列:Conversion Time(CV日時)
を記載する。
公式に書かれているテンプレート(google spreadsheet)はこちら
timezoneに関してはこのシートを使う場合には、A6の部分に記載しておけば、各Conversion timeのセルには設ける必要はない
このオフラインCVは後で、google広告管理画面でリンクするので、自社のCRMとして記載しているスプレッドシートとは別シートでこの項目だけ抽出したものを作成しておくのが良いかもしれない。
オフラインCVのアップロード
公式説明はこちら
https://support.google.com/google-ads/answer/7014069?hl=ja
Google 広告管理画面でファイルを手動アップロードまたはリンクするか、CRM 統合を使用するか、Google Ads API を通じてデータを自動送信できる。
今回はgoogleスプレッドシートとのリンクの場合を記載。
google広告管理画面→目標→コンバージョン→アップロード
プラスボタンをクリック→google スプレッドシートを選択
googleスプレッドシートをリンクしますと表示されるので、先ほど作成したオフラインCVのアップロード用のgoogleスプレッドシートをリンクすれば、あとは自動的に読み取ってくれる。
終わりに
オフラインCVをアップロードして、単に分析するために使うか、さらにオフラインCVの最適化をターゲットとして入札戦略を最適化するために使うこともできる。
ではでは🎵
Google広告の予算と目標CPAの段階的調整 に関する記事はこちら
コメント