Facebookのデスクトップとモバイル(フィード、ストーリーズ、Marketplace)、およびInstagram (フィード、ストーリーズ、リール動画、プロフィールフィード、発見ホーム、プロフィールリール動画)があります。
この目的でAdvantage+カタログ広告を作成するには、ページでFacebook所在地を使用する必要があります。
objective
をSTORE_VISITS
に設定します。promoted_object
を、対応する<PARENT_PAGE_ID>
に設定します。promoted_object
とtargeting
に、<PAGE_SET_ID>
のplace_page_set_id
を含めます。optimization_goal
をREACH
に設定します。billing_event
をIMPRESSIONS
に設定します。PageSet
を作成するFacebookは、PageSet
を使用して広告をターゲット設定し、また、広告の宣伝対象オブジェクトとして使用します。
PageSet
を作成するには、次のようにします。
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" } } }
返された結果の各エントリを反復処理し、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&latitude=29.173384&longitude=48.098807\" }, { \"method\": \"GET\", \"relative_url\": \"/<API_VERSION>/search?type=adradiussuggestion&latitude=29.303635&longitude=47.937725\" } ]" \ "https://graph.facebook.com"
前の呼び出しで取得した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" } ]
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 }
progress
は0.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_unit
とvalue
も指定する必要があります。
{ "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_unit
はmile
かkilometer
で指定します。value
は、mile
の場合は0.7
から50
、kilometer
の場合は1
から80
の範囲で指定する必要があります。audience
のsize
パラメーターは、半径1
から80
キロメートル以内に存在するアカウントセンター内アカウントの数です。max_radius
を指定すると、実際に計算される半径は1
からmax_radius
までの範囲で変化します。metadata
のaudience
を指定する場合は、非同期エンドポイント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=<locations_json_structure.txt"
を使用してpages
属性に渡すことができます。
目的をSTORE_VISITS
に設定し、宣伝対象オブジェクトとしてメインページIDを使用して、広告キャンペーンを作成します。
広告キャンペーンのリファレンスをご覧ください。
広告を含める広告セットを作成します。広告セットのリファレンス、ターゲット設定仕様のリファレンス、ページの位置情報のリファレンスをご覧ください。
ローカルページと呼ばれる最も近いページの場所からの距離が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
(recent
、home
、travel_in
など)も選択できます。
この場合も、promoted_object
にplace_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
広告を閲覧している人の最寄りの店舗の広告が自動的に配信されます。
利用者の居場所に基づいて、クリエイティブを動的に挿入できます。テンプレートのプレースホルダーのセットを使用して、クリエイティブをカスタマイズします。配信時に、広告内のプレースホルダーは最も近いページの場所のデータに置き換えられます。
利用可能なプレースホルダー
{{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_voice
がDYNAMIC
に設定されている場合、広告投稿のページ名とプロフィール写真は、最も近いページの場所から取得されます。dynamic_ad_voice
がSTORY_OWNER
に設定されている場合、広告投稿のページ名とプロフィール写真は、メインページの場所から取得されます。利用者の居場所に基づいて、コールトゥアクションボタン(CTA)を動的に追加することもできます。
GET_DIRECTIONS
またはCALL_NOW
を使用する場合、CTAのvalue
フィールドは不要です。利用者は、自動的に最寄りの店舗に誘導されるか、最寄りの店舗の電話番号に電話するようすすめられます。 MESSAGE_PAGE
は、dynamic_ad_voice
がSTORY_OWNER
に設定されている場合にのみ使用できます。メッセージはメインページに配信されます。Like Page
ボタンが表示されます。詳しくは、広告クリエイティブのリファレンスをご覧ください。
dynamic_ad_voice のタイプ
| call_to_action のタイプ
|
---|---|
|
|
|
|
動的なページ名と都市を使用して広告クリエイティブを指定します。
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」に設定すると、販売店情報がリンク先として広告に表示されます。
次のようにして広告を作成します。
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により、来店数に関するデータを取得できます。通常のインサイト呼び出しで、cost_per_store_visit_action
およびstore_visit_actions
フィールドを追加で指定できます。インサイトのリファレンスをご覧ください。
フィールド | 説明 |
---|---|
point_estimate int32 | The point prediction of the value |