Upgrade to Pro — share decks privately, control downloads, hide ads and more …

一休のAMPトラッキングの取り組み

 一休のAMPトラッキングの取り組み

一休で最近試しているAMPのあれこれ
という内容で話したトラッキングの10分程度のセッション

Avatar for yakisoba

yakisoba

July 26, 2019

More Decks by yakisoba

Other Decks in Programming

Transcript

  1. 検索から訪れる主な経路 AMP cache Origin AMP Origin AMP SXG cache ...

    Other Provider cache ... AMP cache WEB Page Origin AMP Search
  2. 基本導線 AMP cache / Origin AMP 例)観光AMP Google検索など検索エン ジンからのLP、また広告掲 載しているAMPページへの

    直LP。 Origin AMP 例)観光AMP 観光ページを回遊する場合 はAMPページを行き来す ることになる。 WEB Page 例)施設ページ 既存の施設WEBページ
  3. Rollupプロパティの構成 AMP/nonAMP cidで結合 nonAMP 既存ページ /sd/00000007/ 施設ページ /sd/tokyo/ エリアページ AMP

    AMPページ /sd/0000007/amp/ 施設AMPページ /kankou/kyoto/ 観光AMPページ CustomDimensionの紐づけ設定 参照除外リストの確認
  4. amp-analytics config属性にAPIのエンド ポイントを設定する origin end point 独自の加工をするためgtmAPI をproxyしたエンドポイントを用意 gtm.json fetch

    gtmAPIからJSONを取得 api response (CORS) cookieにcidあれば使う、無ければ任 意のドメイン上にcidを生成する collect トラッキング情報を送信する ClientID用のAPI
  5. Proxy gtm.json ' GoogleTagManagerよりamp.jsonを取得 Private Function GetAmpAnalyticsJson(cid As String) As

    Object   ' gtm api のエンドポイント  Dim url As String = "/amp.json?gtm.url=www.ikyu.com/kankou/kyoto/"  ' gtm.jsonを取得  Dim jsonStr = "{var: .... }"  ' _ga が既にあればそれを使用、  ' なければAMPで発行されたAMP_ECID_GOOGLEを使用  ' Client IDがある時は変数をその IDに置換する  If Not String.IsNullOrEmpty(cid) Then jsonStr = Replace(jsonStr, "CLIENT_ID(AMP_ECID_GOOGLE,,_ga)", "${clientId}")  End If  ' 修正したしたgtm.jsonをデシリアライズ  Dim obj_data = JavaScriptSerializer.Deserialize(Of AmpJsonModel)(jsonStr)  ' extraUrlParamsを使う加工など   obj_data.extraUrlParams.Add("cm", "organic")  Return obj_data End Function
  6. <amp-analytics> Adobe AnalyticsやAlexa Internetといった 各種ベンダに対応した AMPの トラッキング用コンポーネントです <script async custom-element="amp-analytics"

    src="https://cdn.ampproject.org/v0/amp-analytics-0.1.js"> </script> . . . <amp-analytics config="APIエンドポイント" data-credentials="include"> </amp-analytics>
  7. extraUrlParams リクエストに含まれる追加の パラメータを指定することができます ''' 広告時のみExtraUrlParamsを適用させる Private Sub AdsGtmParamEdit(obj_data As AmpJsonModel)

    If Me.HasAdParams Then Me.DocumentReferrer = Me._params("referrer") If Me._params("ikCo") <> String.Empty Then obj_data.extraUrlParams.Add("cm", "cpc") obj_data.extraUrlParams.Add("cs", Me._params("ikCo")) obj_data.extraUrlParams.Add("dr", Me.DocumentReferrer) End If End If End Sub
  8. extraUrlParams 実際に広告のoriginAMPにLPした際の レスポンス例です こうすることで次のページに情報が 引き継がれるので不自然な directを回避できる { "requests": { ...

    }, "triggers": { ...}, "vars": { "clientId": "180725546.1562807215" }, "transport": { "beacon": false, "xhrpost": false, "image": true }, "linkers": {}, "optout": "_gaUserPrefs.ioo", "extraUrlParams": { "cm": "cpc", "cs": "google", "dr": "https://www.google.com/" } }
  9. AMPをトラッキングする際のポイント • プロパティ間の紐付き設定の確認 • extraUrlParamsの活用 • AMPリッチーカードは流入に大きな影響がでるので慎重に • Safariの流入確認もお忘れなく •

    SignedExchangeの導入(Originドメインでの配信) ◦ Safari ITP対策として準備しておくと良いかも(7/25時点safariのSXGは未対応) • 同様の方法でもYahoo検索のAMPはcidは繋がらない(7/25時点) ◦ amp-linkerなどでの対応検討中