Facebook Ads API v2.2 がリリースされた件


Graph API v2.2 と同時に Ads API v2.2 がリリースされた。これまで Ads API は事実上 Facebook とコネクションがないと開放して貰えなかったが、バージョニングが導入された 10 月 1 日の v2.1 以降は、申請なしでも 5 広告アカウント、申請すれば 25 広告アカウントまで利用できるようになった。(ただし、API へのアクセス制限はかなり強めに設定される)

adsapi_submission

v2.1 以降、まず Ads API アプリを Development Access で開発し、ある程度完成した時点で Basic Access に submission することになる。ある程度成功してきたら Standard Access に切り替わるイメージだろうか。ただし、Development Access ほどではないにせよ、Basic Access でも API 呼び出し制限はあるらしい。Standard Access でも UPPA 投稿などで API 制限が気になるレベルなので、Basic Access でどの程度の制限があるのか気になるところではある。

今まで Ads API はクローズドだったので blog のネタにしてこなかったが、Standard 以外は事実上開放されたのにともない、今後はたまにネタにしていこうと思う。

さて、そんな Ads API だが、Graph API v2.2 にあわせて Ads API も v2.2 にアップグレードされた。主な変更点は以下。

  • bid_typetargeting が広告セットのみ有効となった。
  • CPA またはアプリのインストールなどの場合、広告セット作成時に新フィールド promoted_object にコンバージョンピクセルの ID の指定が必須となった。これにより、同一サイトまたは決済フローで複数のコンバージョン測定が可能となった。
  • Reach and Frequency API のエンドポイント target_specstarget_spec にリネームされ、story_event_type フィールドが追加された。
  • カスタムオーディエンスで Facebook ID または App-based User ID を指定する際、App ID も必須となった。

インパクトが大きそうなのは 2 点。まず、ターゲティングを広告単位でできなくなったこと。広告ごとに個別のオーディエンスを設定できなくなったので、カスタムオーディエンスのみで広告を運用している場合、広告セットを大量に作成する必要がある。元々の仕様に戻ったといえば戻ったが、広告本体に個別のオーディエンスを設定する実装の場合は早急に対応する必要がある。

もう一点は、コンバージョン軸でコンバージョンピクセルの ID の指定が必須となった点。

adsapi_conversion_id

実装としては面倒だが、複数のコンバージョンタグを設置した完了ページがある場合、特定のタグのみコンバージョンさせるといった流れが可能となるので割と良アップだと思う。実際にシステムを作る場合、どこかしらでコンバージョンピクセル ID を取得する必要があるが、ID のチェックは Graph API 経由で可能となる。

curl https://graph.facebook.com/[CONVERSION_PIXEL_ID]?access_token=[USER_ACCES_TOKEN]

ID が存在すれば JSON で結果が返ってくる。

{
  "id":"[CONVERSION_PIXEL_ID]",
  "name":"conversion_registration",
  "tag":"registration",
  "status":"Active",
  "creator":"[AD_ACCOUNT] ([AD_ACCOUNT_NAME])",
  "js_pixel":"\u003C!-- Facebook Conversion Code for conversion_registration -->\n\u003Cscript>(function() {\n  var _fbq = window._fbq || (window._fbq = []);\n  if (!_fbq.loaded) {\n    var fbds = document.createElement('script');\n    fbds.async = true;\n    fbds.src = '\/\/connect.facebook.net\/en_US\/fbds.js';\n    var s = document.getElementsByTagName('script')[0];\n    s.parentNode.insertBefore(fbds, s);\n    _fbq.loaded = true;\n  }\n})();\nwindow._fbq = window._fbq || [];\nwindow._fbq.push(['track', '[CONVERSION_PIXEL_ID]', {'value':'1.00','currency':'JPY'}]);\n\u003C\/script>\n\u003Cnoscript>\u003Cimg height=\"1\" width=\"1\" alt=\"\" style=\"display:none\" src=\"https:\/\/www.facebook.com\/tr?ev=[CONVERSION_PIXEL_ID]&cd[value]=1.00&cd[currency]=JPY&noscript=1\" \/>\u003C\/noscript>"
}

JSON を確認して、tagcreator が想定通りであれば、問題ないと判断してもよい感じではある。

Ads API が Graph API と違うのは、API バージョンが上がった場合、旧バージョンのライフタイムが Graph API と同じ 2 年ではなく 90 日ということ。Graph API はある程度ゆるやかなスケジューリングで新バージョンに対応すれば良いが、Ads API は新バージョンが出たらこれまでのスケジュールをリスケしてでも対応させる必要がある。対象となる開発者のパイが小さいとはいえ、Ads API に手を出すとアップデートの泥沼にはまりかねないのが難点ではある。

また、Ads API は利用者が少ない分こなれていないので、普通に開発していてもバグに遭遇したり、ドキュメントに書かれていない仕様にぶつかることがある。Ads API に手を出すなら、Ads API のバグチケットは毎日確認しておいたほうがいいだろう。