配置

Facebookのデスクトップとモバイル(フィード、ストーリーズ、Marketplace)、およびInstagram (フィード、ストーリーズ、リール動画、プロフィールフィード、発見ホーム、プロフィールリール動画)があります。

配信の最適化

  • リーチの最適化 — このAPIへのアクセス権を持つすべての広告主が利用できます。デイリーユニークリーチが増えるように最適化を行い、広告マネージャのレポートにデフォルトの指標としてインプレッションを表示します。

Advantage+カタログ広告を作成する

この目的でAdvantage+カタログ広告を作成するには、ページでFacebook所在地を使用する必要があります。

要件

  • キャンペーンのobjectiveSTORE_VISITSに設定します。
  • キャンペーンのpromoted_objectを、対応する<PARENT_PAGE_ID>に設定します。
  • 広告セットのpromoted_objecttargetingに、<PAGE_SET_ID>place_page_set_idを含めます。
  • 広告セットのoptimization_goalREACHに設定します。
  • 広告セットのbilling_eventIMPRESSIONSに設定します。

ステップ1.PageSetを作成する

Facebookは、PageSetを使用して広告をターゲット設定し、また、広告の宣伝対象オブジェクトとして使用します。

PageSetを作成するには、次のようにします。

  1. 店舗所在地を収集します。これらは、各店舗の所在地と主要ビジネスの所在地に対応するFacebookページです。主要ビジネスはメインページとも呼ばれます。
  2. すべての店舗所在地を表す位置情報JSON構造を作成します。
  3. 位置情報JSON構造を含むPageSetを作成します。

すべての店舗所在地を収集する

<PARENT_PAGE_ID>は、すべての店舗所在地のメインページのページIDです。次のコードは、メインページに属するすべての店舗ページと店舗所在地を取得し、各所在地の��度と緯度を返します。

curl -X GET \
  -d 'fields="location{latitude,longitude},is_permanently_closed"' \
  -d 'limit=30000' \
  -d 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/<API_VERSION>/<PARENT_PAGE_ID>/locations

出力の例

{
    "data": [
        {
            "location": {
                "latitude": 29.173384,
                "longitude": 48.098807
            },
            "is_permanently_closed": false,
            "id": "1788030244802584"
        },
        {
            "location": {
                "latitude": 29.303635,
                "longitude": 47.937725
            },
            "is_permanently_closed": false,
            "id": "261533444245300"
        },
        {
            "location": {
                "latitude": 29.302303,
                "longitude": 47.933178
            },
            "is_permanently_closed": false,
            "id": "179435399132774"
        },
        {
            "location": {
                "latitude": 29.302591,
                "longitude": 47.931801
            },
            "is_permanently_closed": false,
            "id": "1790317704582144"
        }
    ],
    "paging": {
        "cursors": {
            "before": "MTc4ODAzMDI0NDgwMjU4NAZDZD",
            "after": "MTA4MTU4NjU5NjA5MDA4"
        }
    }
}

位置情報JSON構造を作成する

返された結果の各エントリを反復処理し、is_permanently_closedフィールドをチェックして各所在地の店舗が営業しているかどうかを確認します。

推定半径を取得するには、radiusパラメーターとdistance_unitパラメーターをそれぞれ取得する2つのGETリクエストを使用します。または、バッチAPI呼び出しで以下の値を生成することもできます。

個別のリクエスト

このリクエストでは、メインページから返されたJSON形式の結果に含まれる各店舗ページの緯度と経度を使用する必要があります。これにより、各店舗所在地の推定半径が返されます。

curl -X GET \
  -d 'type="adradiussuggestion"' \
  -d 'latitude=51.5152253' \
  -d 'longitude=-0.1423029' \
  -d 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v20.0/search/

バッチリクエスト

複数のリクエストを1つのリクエストにまとめることもできます。

curl \
  -F "access_token=<ACCESS_TOKEN>" \
  -F "include_headers=false" \
  -F "batch=[
    {
      \"method\": \"GET\",
      \"relative_url\": \"/<API_VERSION>/search?type=adradiussuggestion&amp;latitude=29.173384&amp;longitude=48.098807\"
    },
    {
      \"method\": \"GET\",
      \"relative_url\": \"/<API_VERSION>/search?type=adradiussuggestion&amp;latitude=29.303635&amp;longitude=47.937725\"
    }
  ]" \
  "https://graph.facebook.com"
最終的な位置情報JSON構造

前の呼び出しで取得したradiusパラメーターとdistance_unitパラメーターを使用し、各所在地の<CHILD_LOCATION_ID>page_idとして使用して、最終的な位置情報JSON構造を作成します。

[
    {
      "page_id": 1788030244802584,
      "radius": 1,
      "distance_unit": "mile"
    },
    {
      "page_id": 261533444245300,
      "radius": 1,
      "distance_unit": "mile"
    }
]

位置情報JSON構造を使用してPagesetを作成する

現在、PageSetエンドポイントは許可リストに登録されているパートナーのみが利用できます。ご利用については、Facebook担当者にお問い合わせください。

これで、位置情報JSON構造に含まれている情報を使用して、PageSetを作成できます。

PageSetで使用できる場所の最大数は10,000です。

非同期リクエスト

非同期リクエストを実行してPageSetを作成できます。これにより、1,000を超える場所を含む大規模なPageSetsをタイムアウトなしで作成できます。50を超える場所を含むPagesetを作成する場合は、常に非同期リクエストを使用することをおすすめします。

リクエスト

curl -X POST \
  -d 'name=<AD_SET_NAME>' \
  -d 'parent_page=<PARENT_PAGE_ID>' \
  -d 'pages=[{"page_id":<CHILD_PAGE_ID>}]' \
  -d 'metadata={"audience":{"size":<AUDIENCE_SIZE>}}' \
  -d 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/<API_VERSION>/act_<AD_ACCOUNT_ID>/ad_place_page_sets_async/

注:同期リクエストでは/ad_place_page_setsを使用できます。ただし、50を超える場所については非同期リクエストを使用する必要があります。

パラメーターの形式は、同期リクエストで使用する形式と同じです。

PageSet内でmetadataフィールドを使って、広告を配信する場所ごとの固定半径を指定することも、特定のオーディエンスサイズにリーチすることもできます。後者を選択した場合、Facebookが場所ごとの半径を自動的に計算して、指定された数のアカウントセンター内アカウントにリーチします。

次の例では、metadataフィールドが希望するaudienceサイズに設定されています。半径のmetadataをご覧ください。これにより、ad_place_page_set_async_request IDが返されます。

{
  "id": "405738580111111"
}      

その後、ads_readアクセス許可を使用してそのIDをクエリし、PageSet IDを取得できます。

curl -i -X GET \
 "https://graph.facebook.com/<API_VERSION>/405738580111111?access_token=ACCESS_TOKEN"

出力の例

{
  "id": "405738580111111", 
  "place_page_set": {
    "id": "555555791481678",
    "name": "test_ad_set"
  },
  "progress": 1
}

progress0.0から1までの値です。1は、リクエストが完了してPageSetが作成されたことを意味します。

半径のmetadataを使用する

metadataフィールドは、場所に固定半径を使用するか、または指定されたオーディエンスサイズに基づいて場所ごとの半径を自動的に計算するかをFacebookに伝えます。

リクエスト

同期リクエストを使用して固定半径を指定するには、次のようにします。

curl -X POST \
  -d 'name=<PAGE_SET_NAME>' \
  -d 'parent_page=<PARENT_PAGE_ID>' \
  -d 'pages=[{"page_id":<CHILD_PAGE_ID>}]' \
  -d 'metadata={"fixed_radius":{"value":5,"distance_unit":"mile"}}' \
  -d 'access_token=ACCESS_TOKEN' \
  https://graph.facebook.com/<API_VERSION>/act_<AD_ACCOUNT_ID>/ad_place_page_sets/

この例では、PageSetに含まれるすべての場所の半径5マイル以内の人々に広告を配信するようFacebookに伝えています。

出力の例

{
  "id": "1618547271777777"
}

注:metadataフィールドは、fixed_radiusまたはaudienceのいずれかに設定する必要があります。

fixed_radiusを使用する場合は、distance_unitvalueも指定する必要があります。

{
  "fixed_radius": {
     "distance_unit": "<distance_unit>",
     "value": <distance>
  }
}

audienceを使用する場合は、sizeを指定する必要がありますが、max_radiusの指定は任意です

注:これはad_place_page_sets_asyncが指定されている場合のみ機能します

 {
  "audience": {
     "size": <audience_size>,
     "max_radius": { // optional
       "distance_unit": "<distance_unit>",
       "value": <distance>
     }
  }
}

metadataのベストプラクティス

  • locationsも指定する必要がありますが、その中で半径を指定しないでください。また、locationsパラメーターを使用して半径を指定する場合は、metadataでも半径を指定しないでください。
  • distance_unitmilekilometerで指定します。valueは、mileの場合は0.7から50kilometerの場合は1から80の範囲で指定する必要があります。
  • audiencesizeパラメーターは、半径1から80キロメートル以内に存在するアカウントセンター内アカウントの数です。max_radiusを指定すると、実際に計算される半径は1からmax_radiusまでの範囲で変化します。
  • metadataaudienceを指定する場合は、非同期エンドポイントad_account_ID/ad_place_page_set_asyncを使用してリクエストを実行する必要があります。

同期リクエスト

同期リクエストを使用してPageSetを作成することもできます。

curl -X POST \
  -d "name=<PAGESET_NAME>" \
  -d "parent_page=<PARENT_PAGE_ID>" \
  -d "pages=<LOCATIONS_JSON_STRUCTURE>" \
  -d "access_token=<ACCESS_TOKEN>" \
 https://graph.facebook.com/<API_VERSION>/act_<AD_ACCOUNT_ID>/ad_place_page_sets

これにより、後で使用するPageSet IDが返されます。

出力の例

{
  "id": <PAGE_SET_ID>
}

cURL呼び出しで返されるページの数が多すぎる場合は、位置情報JSON構造を格納したテキストファイルを作成し、-F "pages=&lt;locations_json_structure.txt"を使用してpages属性に渡すことができます。

ステップ2: キャンペーンを作成する

目的をSTORE_VISITSに設定し、宣伝対象オブジェクトとしてメインページIDを使用して、広告キャンペーンを作成します。

広告キャンペーンのリファレンスをご覧ください。

ステップ3: 広告セットを作成する

広告を含める広告セットを作成します。広告セットのリファレンスターゲット設定仕様のリファレンスページの位置情報のリファレンスをご覧ください。

ローカルページと呼ばれる最も近いページの場所からの距離が50マイル(約80km)を超える場所をターゲットとする広告は、配信時にFacebookによって無効にされます。

curl \
  -F 'name=Store Visits Ad Set' \
  -F 'promoted_object={"place_page_set_id":"<PAGE_SET_ID>"}' \
  -F 'optimization_goal=REACH' \
  -F 'billing_event=IMPRESSIONS' \
  -F 'is_autobid=true' \
  -F 'daily_budget=1000' \
  -F 'campaign_id=<CAMPAIGN_ID>' \
  -F "targeting={
    'age_min' : <MIN_AGE>,
    'age_max' : <MAX_AGE>,
    'place_page_set_ids': ['<PAGE_SET_ID>'],
    'device_platforms': ['mobile','desktop'],
    'facebook_positions': ['feed']
   }" \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/<API_VERSION>/act_<AD_ACCOUNT_ID>/adsets

地理的地域によるターゲット設定

「来店数の増加」キャンペーンでは、geo_locationsでターゲットを設定することもできます。

注: この目的を設定する場合、広告セットのターゲット設定ではgeo_locationsまたはplace_page_set_idsのみを使用できます。

高度なターゲット設定と配置では、すべてのタイプのgeo_locationによるターゲット設定(国、都市、郵便番号によるターゲット設定など)がサポートされます。location_types (recenthometravel_inなど)も選択できます。

この場合も、promoted_objectplace_page_set_idを指定する必要があります。このPageSetは、明示的な場所のセットを含まないページセットでなければなりません。そのようなPageSetを作成するには、位置情報JSON構造を使用してPageSetを作成するをご覧ください。ただし、この場合はpagesパラメーターを渡しません。

まず、PageSetを作成します。これは、後ほど宣伝対象オブジェクトで指定します。

curl -X POST \
  -d "name=My geo targeting page set" \
  -d "parent_page=<PARENT_PAGE_ID>" \
  -d "access_token=<ACCESS_TOKEN>" \
  https://graph.facebook.com/<API_VERSION>/act_<AD_ACCOUNT_ID>/ad_place_page_sets/

注: 通常のようにpagesパラメーターを指定する必要はありません。

次に、「来店数の増加」を目的とし、geo_locationsをターゲットとする広告セットを作成します。

curl \
  -F 'name=Store Traffic Ad Set' \
  -F 'promoted_object={"place_page_set_id":"<PAGE_SET_ID>"}' \
  -F 'optimization_goal=REACH' \
  -F 'billing_event=IMPRESSIONS' \
  -F 'is_autobid=true' \
  -F 'daily_budget=1000' \
  -F 'campaign_id=<CAMPAIGN_ID>' \
  -F "targeting={
    'geo_locations': {"countries":["US"],"location_types": ["home"]}, 
    'device_platforms': ['mobile','desktop'],
    'facebook_positions': ['feed']
  }" \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/<API_VERSION>/act_<AD_ACCOUNT_ID>/adsets

広告を閲覧している人の最寄りの店舗の広告が自動的に配信されます。

ステップ4: 広告クリエイティブを指定する

利用者の居場所に基づいて、クリエイティブを動的に挿入できます。テンプレートのプレースホルダーのセットを使用して、クリエイティブをカスタマイズします。配信時に、広告内のプレースホルダーは最も近いページの場所のデータに置き換えられます。

利用可能なプレースホルダー

  • {{page.hours.today}}
  • {{page.location.city}}
  • {{page.location.region}}
  • {{page.location.postcode}}
  • {{page.location.street_address}}
  • {{page.name}}
  • {{page.phone_number}}

dynamic_ad_voiceフィールドを使用すると、広告の音声をコントロールできます。

  • dynamic_ad_voiceDYNAMICに設定されている場合、広告投稿のページ名とプロフィール写真は、最も近いページの場所から取得されます。
  • dynamic_ad_voiceSTORY_OWNERに設定されている場合、広告投稿のページ名とプロフィール写真は、メインページの場所から取得されます。

コールトゥアクション

利用者の居場所に基づいて、コールトゥアクションボタン(CTA)を動的に追加することもできます。

  • GET_DIRECTIONSまたはCALL_NOWを使用する場合、CTAのvalueフィールドは不要です。利用者は、自動的に最寄りの店舗に誘導されるか、最寄りの店舗の電話番号に電話するようすすめられます。
  • MESSAGE_PAGEは、dynamic_ad_voiceSTORY_OWNERに設定されている場合にのみ使用できます。メッセージはメインページに配信されます。
  • これは任意のフィールドです。個別の広告で指定されていない場合は、Like Pageボタンが表示されます。

詳しくは、広告クリエイティブのリファレンスをご覧ください。

dynamic_ad_voiceのタイプ call_to_actionのタイプ

DYNAMIC

CALL_NOW


GET_DIRECTIONS

STORY_OWNER

CALL_NOW


GET_DIRECTIONS


LEARN_MORE


MESSAGE_PAGE


ORDER_NOW


SHOP_NOW

動的なページ名と都市を使用して広告クリエイティブを指定します。

curl \
  -F 'dynamic_ad_voice=DYNAMIC' \
  -F 'object_story_spec={ 
    "page_id": "<PARENT_PAGE_ID>", 
    "template_data": { 
      "description": "Ad Description", 
      "link": "<URL>", 
      "message": "Ad Message for {{page.location.city}}", 
      "name": "{{page.name}}", 
      "picture": "<IMAGE_URL>" 
    } 
  }' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/<API_VERSION>/act_<AD_ACCOUNT_ID>/adcreatives

地図カードを使用した広告クリエイティブ

地図カードを使用するには、広告クリエイティブのchild_attachmentsフィールドの添付ファイルとして、place_data構造を追加します。

次の例では、child_attachments配列の2つ目のアイテムが地図(Facebookの販売店情報リンク付き)です。地図カードに加えて、1つ以上のアイテムを指定する必要があります

curl \
  -F 'dynamic_ad_voice=DYNAMIC' \
  -F 'object_story_spec={ 
    "page_id": "<PARENT_PAGE_ID>", 
    "template_data": { 
      "description": "Ad Description", 
      "link": "<URL>", 
      "message": "Ad Message for {{page.location.city}}", 
      "name": "{{page.name}}", 
      "child_attachments":[
        {
          "description": "Come visit us!",
          "link": "http://yourweburl.com",
          "name": "{{page.location.street_address}} - {{page.location.city}}",
          "call_to_action": {
            "type":"GET_DIRECTIONS"
          },
        },
        {
          "link": "https://fb.com/store_locator",
          "name": "Check out our stores.",
          "place_data": {
            "type":"DYNAMIC"
          },
        }
      ]
    } 
  }' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/<API_VERSION>/act_<AD_ACCOUNT_ID>/adcreatives

販売店情報、リンク先

広告を作成する際に、linkを「https://fb.com/store_locator」に設定すると、販売店情報がリンク先として広告に表示されます。

ステップ5: 広告を作成する

次のようにして広告を作成します。

curl \
  -F 'name=My Ad' \
  -F 'adset_id=<AD_SET_ID>' \
  -F 'creative={"creative_id":"<CREATIVE_ID>"}' \
  -F 'status=PAUSED' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/<API_VERSION>/act_<AD_ACCOUNT_ID>/ads

「来店数の増加」を目的とする広告を作成するには、ページと広告アカウントが来店数の測定について承認を受ける必要があります。承認を受けていない場合、Reach estimate isn't available because 'store_visits' isn't a valid action typeのようなエラーが表示されます。

来店数の測定

来店数は、位置情報サービスをオンにしている利用者のデータに基づく推定指標です。この指標により、最終的に来店数の測定と「来店数の増加」目的のための最適化が可能になります。来店数の測定は、「来店数の増加」を目的とするキャンペーンでのみ利用できます。

来店数は、「来店数の増加」を目的とする広告のクリック数とビュー数に基づいています。これは、広告主の各店舗の広告を表示またはクリックしたアカウントセンターのアカウント保持者のうち、店舗を訪れた人の数の推定値です。アトリビューションウィンドウの設定が可能です。1日、7日、28日のクリック数またはビュー数に基づいて設定のカスタマイズを選択できます。設定をカスタマイズしない場合、広告アカウントのデフォルトのアトリビューションが適用されます。インサイトAPI、アトリビューションウィンドウをご覧ください。

これらの機能は次のアイテムのレポートに関連しています。

  • 来店数 — 広告の結果として発生したと推定される来店の数。
  • 来店あたりのコスト — 広告の結果として発生したと推定される来店あたりの平均コスト。

広告マネージャを使用する

ENGAGEMENT: ACTIONSの下の列をご覧ください。これらの列は、来店数および来店あたりのコストのレポートインターフェイスに表示されます。

注: 来店数のデータは、Metaチームによりキャンペーンのために測定可能と確認された店舗についてのみ利用可能です。

インサイトAPIを使用する

インサイトAPIにより、来店数に関するデータを取得できます。通常のインサイト呼び出しで、cost_per_store_visit_actionおよびstore_visit_actionsフィールドを追加で指定できます。インサイトのリファレンスをご覧ください。

パラメーター

フィールド説明
point_estimate
int32

The point prediction of the value