このドキュメントでは、デスクトップやモバイルアプリのインストールおよびエンゲージメントを促進するためにデザインされた、さまざまな広告ユニットについて説明します。
この広告ユニットを使用して、写真、動画、カルーセル、またはプレイアブルクリエイティブを使って、提供しているデスクトップアプリまたはモバイルアプリに、インストールやエンゲージメントを目的とした大勢の人が訪れるようにします。
概念的には、次の広告を利用できます。
写真 | 動画 | カルーセル | プレイアブル | |
---|---|---|---|---|
モバイルインストール広告 | ✓ | ✓ | ✓ | ✓ |
モバイルエンゲージメント広告 | ✓ | ✓ | ✓ | |
デスクトップインストール広告 | ✓ | ✓ | ✓ | |
デスクトップエンゲージメント広告 | ✓ | ✓ | ✓ | |
バーチャルグッズのデスクトップアプリ広告 | ✓ | ✓ | ✓ |
バーチャルグッズのデスクトップアプリ広告はデスクトップエンゲージメントのサブセットであり、バーチャルグッズオファーを使用してプレイヤーを再エンゲージメントし、アプリに戻ってくるように誘導できます。例えば、アプリのフィードでアイテムの割引やアプリ内通貨セットを提供して、過去のプレイヤーに再度アプローチできます。決済を承認するようアプリを設定する手順については、ここをご覧ください。
モバイルインストール画像ユニットの例
バーチャルグッズ用のデスクトップアプリ広告の例
広告を作成する際は、次の前提条件に留意してください。
user_os
フィールドの使用が必須となります。配置ではdevice_platforms
フィールドの値が['mobile
']になっている必要があり、Facebookでモバイルデバイスをターゲット設定するために、仕様のほかのフィールドを使用することを強くおすすめします。オプションで、特定のプラットフォームだけを対象にする場合、publisher_platforms
を指定します。-device_platforms
はdesktop
でなければなりません。オプションで、Facebookのデスクトップフィードと右側の列の両方を表示させない場合は、facebook_positions
を指定します。GET_OFFER
を使用する際は、価格を割引価格にしなければなりません。詳しくは、バーチャルグッズをご覧ください。以下の追加のコールトゥアクションは、投稿のcall_to_action
フィールド内または広告クリエイティブのobject_story_spec
内のアプリ広告で利用可能です。モバイルアプリのディープリンクをapp_link
フィールドで指定することも、デスクトップアプリのバーチャルグッズオブジェクトをproduct_link
フィールドで指定することもできます。
キー | 値 | 必須 |
---|---|---|
型 | モバイルのコールトゥアクションの型(インストールまたはエンゲージメントに関わらず): | はい |
値 | 次のもののJSONディクショナリー: | はい
|
value.link | App Store、Google Playストア、FacebookキャンバスアプリのURLを参照します。例: https://itunes.apple.com/us/app/facebook/id284882215 | はい |
value.app_link | モバイルアプリだけのディープリンクのリンク先を定義する(例: | 必須(モバイルのインストールまたはエンゲージメント広告のみ) |
value.product_link | 商品のOpen Graphバーチャルグッズオブジェクトを指し示すURLを定義します。設定の詳細については、こちらをご覧ください。 | 必須(デスクトップバーチャルグッズのみ) |
value.link_title | 広告イメージの下に表示されるリンクの名前をカスタマイズできます。 | いいえ |
写真を使ったデスクトップまたはモバイルのアプリ広告を作成するには、最初に広告クリエイティブのobject_story_spec: {'link_data': ...}
フィールドを使って写真のあるリンクページ投稿を作成します。
例:
curl -X POST \ -F 'name="Sample Creative"' \ -F 'object_story_spec={ "page_id": "<PAGE_ID>", "link_data": { "call_to_action": { "type": "INSTALL_MOBILE_APP", "value": { "link": "<APP_STORE_URL>" } }, "image_hash": "<IMAGE_HASH>", "link": "<APP_STORE_URL>", "message": "Try it out" } }' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v24.0
/act_<AD_ACCOUNT_ID>/adcreatives
または、ページのフィードエンドポイントによりページ投稿を作成し、クリエイティブでその投稿IDを使用します。ほかの例については、以下のサンプルセクションをご覧ください。
モバイルアプリインストール広告またはエンゲージメント広告を、カルーセル広告フォーマットを使って作成するには、「カルーセル広告のドキュメント」の指示に従ってください。ただし、各child_attachments
のlink
フィールドは例外で、App Storeリンクを指定します。
各child_attachment
には、同じApp Storeリンクを指定する必要があることに注意してください。call_to_action:{'value':{'link':... }}}
で再度リンクを指定する必要はありません
curl -X POST \ -F 'name="Carousel app ad"' \ -F 'object_story_spec={ "page_id": "<PAGE_ID>", "link_data": { "message": "My message", "link": "http://www.example.com/appstoreurl", "caption": "WWW.ITUNES.COM", "name": "The link name", "description": "The link description", "child_attachments": [ { "link": "http://www.example.com/appstoreurl", "image_hash": "<IMAGE_HASH>", "call_to_action": { "type": "USE_MOBILE_APP", "value": { "app_link": "<DEEP_LINK>" } } }, { "link": "http://www.example.com/appstoreurl", "image_hash": "<IMAGE_HASH>", "call_to_action": { "type": "USE_MOBILE_APP", "value": { "app_link": "<DEEP_LINK>" } } }, { "link": "http://www.example.com/appstoreurl", "image_hash": "<IMAGE_HASH>", "call_to_action": { "type": "USE_MOBILE_APP", "value": { "app_link": "<DEEP_LINK>" } } }, { "link": "http://www.example.com/appstoreurl", "image_hash": "<IMAGE_HASH>", "call_to_action": { "type": "USE_MOBILE_APP", "value": { "app_link": "<DEEP_LINK>" } } } ], "multi_share_optimized": true } }' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v24.0
/act_<AD_ACCOUNT_ID>/adcreatives
動画を使ってアプリ広告を作成するにはまず、動画を広告アカウントの動画ライブラリにアップロードします。その後、動画IDを広告クリエイティブのobject_story_spec: {'video_data':...}
フィールドで使用します。
例:
curl \ -F 'name=Sample Creative' \ -F 'object_story_spec={ "page_id": "<PAGE_ID>", "video_data": { "call_to_action": {"type":"INSTALL_MOBILE_APP","value":{"link":"<APP_STORE_URL>"}}, "image_url": "<THUMBNAIL_URL>", "video_id": "<VIDEO_ID>" } }' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v24.0
/act_<AD_ACCOUNT_ID>/adcreatives
または、ページの動画エンドポイントによりページ投稿を作成し、クリエイティブでその動画IDを使用します。ほかの例については、以下のサンプルセクションをご覧ください。
ページ投稿の詳細の取得については、リンクページ投稿のドキュメントまたは動画ページ投稿のドキュメントを参照してください。
ページの/promotable_posts
エッジからすべてのページ投稿をリスト表示できます。
curl https://graph.facebook.com/v24.0
/<PAGE_ID>/promotable_posts
広告クリエイティブの詳細を取得する場合は、広告クリエイティブのドキュメントを参照してください。
ADVERTISE
タスクを実行できるユーザーがリクエストしたページアクセストークン"call_to_action={'type':'LEARN_MORE', 'value':{'link':'https://itunes.apple.com/us/app/facebook/id284882215', 'app_link':'facebook://path/to/page'}}"
アプリリンクを指定する前に、次のような呼び出しをして、そのアプリリンクがスクレイピングされていることを検証する必要があります。
https://graph.facebook.com/v24.0
/?type=og&scrape=true&id=<APP_LINK>
インサイトは、アプリIDを含む宣伝されるオブジェクトのある広告にのみ適用されます。アプリIDを取得するために、アプリをFacebookに登録します。
Metaは、アプリをインストールした人の利用者データについて、毎日集約したインサイトを提供します。これを取得するには、アプリアクセストークンとクエリを使用する必要があります。
https://graph.facebook.com/v24.0
/<APP_ID>/insights/application_mobile_app_installs?&access_token=<ACCESS_TOKEN
追加のURLパラメーターbreakdown
に、次の値のいずれかを指定して、統計の内訳を取得することもできます。現在のところ、内訳を組み合わせることはできません。
名前 | 説明 |
---|---|
| オーディエンスの年齢と性別ごとに統計の内訳を確認します。 |
| オーディエンスの国ごとに統計の内訳を確認します。 |
| オーディエンスのロケールごとに統計の内訳を確認します。 |
例:
https://graph.facebook.com/v24.0
/<APP_ID>/insights/application_mobile_app_installs?breakdown=gender_age&access_token=<ACCESS_TOKEN> https://graph.facebook.com/v24.0
/<APP_ID>/insights/application_mobile_app_installs?breakdown=country&access_token=<ACCESS_TOKEN> https://graph.facebook.com/v24.0
/<APP_ID>/insights/application_mobile_app_installs?breakdown=locale&access_token=<ACCESS_TOKEN>
ステップ1. 画像を使用するページ投稿を作成します。ページ投稿を作成するには、PAGE_ACCESS_TOKEN
とページAPIセッションを使用してください。
curl \ -F 'message=Sign up today' \ -F 'picture=<IMAGE_URL>' \ -F 'link=<LINK>' \ -F 'published=1' \ -F 'call_to_action={"type":"SIGN_UP","value":{"link":"<LINK>"}}' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v24.0
/<PAGE_ID>/feed
ステップ2.広告クリエイティブを作成します({STORY_ID}
の形式は'{PAGE_ID}_{POST_ID}'
です)。
curl -X POST \ -F 'object_story_id="<PAGE_ID>_<POST_ID>"' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v24.0
/act_<AD_ACCOUNT_ID>/adcreatives
ステップ3.広告のクリエイティブを使用します。
curl -X POST \ -F 'name="My AdGroup with Redownload"' \ -F 'adset_id="<AD_SET_ID>"' \ -F 'creative={ "creative_id": "<CREATIVE_ID>" }' \ -F 'redownload=1' \ -F 'status="PAUSED"' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v24.0
/act_<AD_ACCOUNT_ID>/ads
ステップ1.画像を使用するページ投稿を作成します。ページ投稿を作成するには、PAGE_ACCESS_TOKEN
とページAPIセッションを使用してください。
url -X POST \ -F 'message="This is a test message"' \ -F 'call_to_action={ "type": "BUY_NOW", "value": { "link": "<APP_STORE_URL>", "app_link": "<DEEP_LINK>" } }' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v24.0
/<PAGE_ID>/feed
ステップ2.広告クリエイティブを作成します。
curl -X POST \
-F 'object_story_id="<PAGE_ID>_<POST_ID>"' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v24.0/act_<AD_ACCOUNT_ID>/adcreatives
'use strict';
const bizSdk = require('facebook-nodejs-business-sdk');
const AdAccount = bizSdk.AdAccount;
const AdCreative = bizSdk.AdCreative;
const access_token = '<ACCESS_TOKEN>';
const app_secret = '<APP_SECRET>';
const app_id = '<APP_ID>';
const id = '<AD_ACCOUNT_ID>';
const api = bizSdk.FacebookAdsApi.init(access_token);
const showDebugingInfo = true; // Setting this to true shows more debugging info.
if (showDebugingInfo) {
api.setDebug(true);
}
const logApiCallResult = (apiCallName, data) => {
console.log(apiCallName);
if (showDebugingInfo) {
console.log('Data:' + JSON.stringify(data));
}
};
let fields, params;
fields = [
];
params = {
'object_story_id' : '<pageID>_<postID>',
};
const adcreatives = (new AdAccount(id)).createAdCreative(
fields,
params
);
logApiCallResult('adcreatives api call complete.', adcreatives);
require __DIR__ . '/vendor/autoload.php';
use FacebookAds\Object\AdAccount;
use FacebookAds\Object\AdCreative;
use FacebookAds\Api;
use FacebookAds\Logger\CurlLogger;
$access_token = '<ACCESS_TOKEN>';
$app_secret = '<APP_SECRET>';
$app_id = '<APP_ID>';
$id = '<AD_ACCOUNT_ID>';
$api = Api::init($app_id, $app_secret, $access_token);
$api->setLogger(new CurlLogger());
$fields = array(
);
$params = array(
'object_story_id' => '<pageID>_<postID>',
);
echo json_encode((new AdAccount($id))->createAdCreative(
$fields,
$params
)->exportAllData(), JSON_PRETTY_PRINT);
from facebook_business.adobjects.adaccount import AdAccount
from facebook_business.adobjects.adcreative import AdCreative
from facebook_business.api import FacebookAdsApi
access_token = '<ACCESS_TOKEN>'
app_secret = '<APP_SECRET>'
app_id = '<APP_ID>'
id = '<AD_ACCOUNT_ID>'
FacebookAdsApi.init(access_token=access_token)
fields = [
]
params = {
'object_story_id': '<pageID>_<postID>',
}
print AdAccount(id).create_ad_creative(
fields=fields,
params=params,
)
import com.facebook.ads.sdk.*;
import java.io.File;
import java.util.Arrays;
public class SAMPLE_CODE_EXAMPLE {
public static void main (String args[]) throws APIException {
String access_token = \"<ACCESS_TOKEN>\";
String app_secret = \"<APP_SECRET>\";
String app_id = \"<APP_ID>\";
String id = \"<AD_ACCOUNT_ID>\";
APIContext context = new APIContext(access_token).enableDebug(true);
new AdAccount(id, context).createAdCreative()
.setObjectStoryId(\"<pageID>_<postID>\")
.execute();
}
}
require 'facebook_ads'
access_token = '<ACCESS_TOKEN>'
app_secret = '<APP_SECRET>'
app_id = '<APP_ID>'
id = '<AD_ACCOUNT_ID>'
FacebookAds.configure do |config|
config.access_token = access_token
config.app_secret = app_secret
end
ad_account = FacebookAds::AdAccount.get(id)
adcreatives = ad_account.adcreatives.create({
object_story_id: '<pageID>_<postID>',
})
ステップ3.広告セットでの入札、クリックの最適化、インプレッションに対する支払いを設定します。
ステップ4.広告のクリエイティブを使用します。
ステップ1.画像を使用するページ投稿を作成します。ページ投稿を作成するには、PAGE_ACCESS_TOKEN
とページAPIセッションを使用してください。
ステップ2.広告クリエイティブを作成します。
curl -X POST \
-F 'object_story_id="<PAGE_ID>_<POST_ID>"' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v24.0/act_<AD_ACCOUNT_ID>/adcreatives
'use strict';
const bizSdk = require('facebook-nodejs-business-sdk');
const AdAccount = bizSdk.AdAccount;
const AdCreative = bizSdk.AdCreative;
const access_token = '<ACCESS_TOKEN>';
const app_secret = '<APP_SECRET>';
const app_id = '<APP_ID>';
const id = '<AD_ACCOUNT_ID>';
const api = bizSdk.FacebookAdsApi.init(access_token);
const showDebugingInfo = true; // Setting this to true shows more debugging info.
if (showDebugingInfo) {
api.setDebug(true);
}
const logApiCallResult = (apiCallName, data) => {
console.log(apiCallName);
if (showDebugingInfo) {
console.log('Data:' + JSON.stringify(data));
}
};
let fields, params;
fields = [
];
params = {
'object_story_id' : '<pageID>_<postID>',
};
const adcreatives = (new AdAccount(id)).createAdCreative(
fields,
params
);
logApiCallResult('adcreatives api call complete.', adcreatives);
require __DIR__ . '/vendor/autoload.php';
use FacebookAds\Object\AdAccount;
use FacebookAds\Object\AdCreative;
use FacebookAds\Api;
use FacebookAds\Logger\CurlLogger;
$access_token = '<ACCESS_TOKEN>';
$app_secret = '<APP_SECRET>';
$app_id = '<APP_ID>';
$id = '<AD_ACCOUNT_ID>';
$api = Api::init($app_id, $app_secret, $access_token);
$api->setLogger(new CurlLogger());
$fields = array(
);
$params = array(
'object_story_id' => '<pageID>_<postID>',
);
echo json_encode((new AdAccount($id))->createAdCreative(
$fields,
$params
)->exportAllData(), JSON_PRETTY_PRINT);
from facebook_business.adobjects.adaccount import AdAccount
from facebook_business.adobjects.adcreative import AdCreative
from facebook_business.api import FacebookAdsApi
access_token = '<ACCESS_TOKEN>'
app_secret = '<APP_SECRET>'
app_id = '<APP_ID>'
id = '<AD_ACCOUNT_ID>'
FacebookAdsApi.init(access_token=access_token)
fields = [
]
params = {
'object_story_id': '<pageID>_<postID>',
}
print AdAccount(id).create_ad_creative(
fields=fields,
params=params,
)
import com.facebook.ads.sdk.*;
import java.io.File;
import java.util.Arrays;
public class SAMPLE_CODE_EXAMPLE {
public static void main (String args[]) throws APIException {
String access_token = \"<ACCESS_TOKEN>\";
String app_secret = \"<APP_SECRET>\";
String app_id = \"<APP_ID>\";
String id = \"<AD_ACCOUNT_ID>\";
APIContext context = new APIContext(access_token).enableDebug(true);
new AdAccount(id, context).createAdCreative()
.setObjectStoryId(\"<pageID>_<postID>\")
.execute();
}
}
require 'facebook_ads'
access_token = '<ACCESS_TOKEN>'
app_secret = '<APP_SECRET>'
app_id = '<APP_ID>'
id = '<AD_ACCOUNT_ID>'
FacebookAds.configure do |config|
config.access_token = access_token
config.app_secret = app_secret
end
ad_account = FacebookAds::AdAccount.get(id)
adcreatives = ad_account.adcreatives.create({
object_story_id: '<pageID>_<postID>',
})
ステップ3.広告セットでの入札、アプリイベントの最適化、インプレッションに対する支払いを設定します。
広告セットのpromoted_object
をcustom_event_type
を含めるように設定して最適化することも必要です。詳細は「広告セットのドキュメント」を参照してください。
curl -X POST \
-F 'name="A CPA Ad Set optimized for App Events"' \
-F 'campaign_id="<AD_CAMPAIGN_ID>"' \
-F 'daily_budget=300' \
-F 'start_time="2025年10月23日T10:10:40-0700"' \
-F 'end_time="2025年10月30日T10:10:40-0700"' \
-F 'billing_event="IMPRESSIONS"' \
-F 'optimization_goal="OFFSITE_CONVERSIONS"' \
-F 'bid_amount=100' \
-F 'status="PAUSED"' \
-F 'promoted_object={
"application_id": "<APP_ID>",
"object_store_url": "<APP_STORE_URL>",
"custom_event_type": "PURCHASE"
}' \
-F 'targeting={
"facebook_positions": [
"feed"
],
"geo_locations": {
"countries": [
"US"
]
},
"user_os": [
"iOS"
]
}' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v24.0/act_<AD_ACCOUNT_ID>/adsets
'use strict';
const bizSdk = require('facebook-nodejs-business-sdk');
const AdAccount = bizSdk.AdAccount;
const AdSet = bizSdk.AdSet;
const access_token = '<ACCESS_TOKEN>';
const app_secret = '<APP_SECRET>';
const app_id = '<APP_ID>';
const id = '<AD_ACCOUNT_ID>';
const api = bizSdk.FacebookAdsApi.init(access_token);
const showDebugingInfo = true; // Setting this to true shows more debugging info.
if (showDebugingInfo) {
api.setDebug(true);
}
const logApiCallResult = (apiCallName, data) => {
console.log(apiCallName);
if (showDebugingInfo) {
console.log('Data:' + JSON.stringify(data));
}
};
let fields, params;
fields = [
];
params = {
'name' : 'A CPA Ad Set optimized for App Events',
'campaign_id' : '<adCampaignAppInstallsID>',
'daily_budget' : '300',
'start_time' : '2024年08月05日T17:55:15-0700',
'end_time' : '2024年08月12日T17:55:15-0700',
'billing_event' : 'IMPRESSIONS',
'optimization_goal' : 'OFFSITE_CONVERSIONS',
'bid_amount' : '100',
'status' : 'PAUSED',
'promoted_object' : {'application_id':'<appID>','object_store_url':'<appLink>','custom_event_type':'PURCHASE'},
'targeting' : {'facebook_positions':['feed'],'geo_locations':{'countries':['US']},'user_os':['iOS']},
};
const adsets = (new AdAccount(id)).createAdSet(
fields,
params
);
logApiCallResult('adsets api call complete.', adsets);
require __DIR__ . '/vendor/autoload.php';
use FacebookAds\Object\AdAccount;
use FacebookAds\Object\AdSet;
use FacebookAds\Api;
use FacebookAds\Logger\CurlLogger;
$access_token = '<ACCESS_TOKEN>';
$app_secret = '<APP_SECRET>';
$app_id = '<APP_ID>';
$id = '<AD_ACCOUNT_ID>';
$api = Api::init($app_id, $app_secret, $access_token);
$api->setLogger(new CurlLogger());
$fields = array(
);
$params = array(
'name' => 'A CPA Ad Set optimized for App Events',
'campaign_id' => '<adCampaignAppInstallsID>',
'daily_budget' => '300',
'start_time' => '2024年08月05日T17:55:15-0700',
'end_time' => '2024年08月12日T17:55:15-0700',
'billing_event' => 'IMPRESSIONS',
'optimization_goal' => 'OFFSITE_CONVERSIONS',
'bid_amount' => '100',
'status' => 'PAUSED',
'promoted_object' => array('application_id' => '<appID>','object_store_url' => '<appLink>','custom_event_type' => 'PURCHASE'),
'targeting' => array('facebook_positions' => array('feed'),'geo_locations' => array('countries' => array('US')),'user_os' => array('iOS')),
);
echo json_encode((new AdAccount($id))->createAdSet(
$fields,
$params
)->exportAllData(), JSON_PRETTY_PRINT);
from facebook_business.adobjects.adaccount import AdAccount
from facebook_business.adobjects.adset import AdSet
from facebook_business.api import FacebookAdsApi
access_token = '<ACCESS_TOKEN>'
app_secret = '<APP_SECRET>'
app_id = '<APP_ID>'
id = '<AD_ACCOUNT_ID>'
FacebookAdsApi.init(access_token=access_token)
fields = [
]
params = {
'name': 'A CPA Ad Set optimized for App Events',
'campaign_id': '<adCampaignAppInstallsID>',
'daily_budget': '300',
'start_time': '2024年08月05日T17:55:15-0700',
'end_time': '2024年08月12日T17:55:15-0700',
'billing_event': 'IMPRESSIONS',
'optimization_goal': 'OFFSITE_CONVERSIONS',
'bid_amount': '100',
'status': 'PAUSED',
'promoted_object': {'application_id':'<appID>','object_store_url':'<appLink>','custom_event_type':'PURCHASE'},
'targeting': {'facebook_positions':['feed'],'geo_locations':{'countries':['US']},'user_os':['iOS']},
}
print AdAccount(id).create_ad_set(
fields=fields,
params=params,
)
import com.facebook.ads.sdk.*;
import java.io.File;
import java.util.Arrays;
public class SAMPLE_CODE_EXAMPLE {
public static void main (String args[]) throws APIException {
String access_token = \"<ACCESS_TOKEN>\";
String app_secret = \"<APP_SECRET>\";
String app_id = \"<APP_ID>\";
String id = \"<AD_ACCOUNT_ID>\";
APIContext context = new APIContext(access_token).enableDebug(true);
new AdAccount(id, context).createAdSet()
.setName(\"A CPA Ad Set optimized for App Events\")
.setCampaignId(\"<adCampaignAppInstallsID>\")
.setDailyBudget(300L)
.setStartTime(\"2024年08月05日T17:55:15-0700\")
.setEndTime(\"2024年08月12日T17:55:15-0700\")
.setBillingEvent(AdSet.EnumBillingEvent.VALUE_IMPRESSIONS)
.setOptimizationGoal(AdSet.EnumOptimizationGoal.VALUE_OFFSITE_CONVERSIONS)
.setBidAmount(100L)
.setStatus(AdSet.EnumStatus.VALUE_PAUSED)
.setPromotedObject(\"{\\"application_id\\":\\"<appID>\\",\\"object_store_url\\":\\"<appLink>\\",\\"custom_event_type\\":\\"PURCHASE\\"}\")
.setTargeting(
new Targeting()
.setFieldFacebookPositions(Arrays.asList(\"feed\"))
.setFieldGeoLocations(
new TargetingGeoLocation()
.setFieldCountries(Arrays.asList(\"US\"))
)
.setFieldUserOs(Arrays.asList(\"iOS\"))
)
.execute();
}
}
require 'facebook_ads'
access_token = '<ACCESS_TOKEN>'
app_secret = '<APP_SECRET>'
app_id = '<APP_ID>'
id = '<AD_ACCOUNT_ID>'
FacebookAds.configure do |config|
config.access_token = access_token
config.app_secret = app_secret
end
ad_account = FacebookAds::AdAccount.get(id)
adsets = ad_account.adsets.create({
name: 'A CPA Ad Set optimized for App Events',
campaign_id: '<adCampaignAppInstallsID>',
daily_budget: '300',
start_time: '2024年08月05日T17:55:15-0700',
end_time: '2024年08月12日T17:55:15-0700',
billing_event: 'IMPRESSIONS',
optimization_goal: 'OFFSITE_CONVERSIONS',
bid_amount: '100',
status: 'PAUSED',
promoted_object: {'application_id':'<appID>','object_store_url':'<appLink>','custom_event_type':'PURCHASE'},
targeting: {'facebook_positions':['feed'],'geo_locations':{'countries':['US']},'user_os':['iOS']},
})
ステップ4.広告のクリエイティブを使用します。
ページ投稿を作成するには、PAGE_ACCESS_TOKEN
とページAPIセッションを使用してください。
curl \ -F 'name=My Video' \ -F 'message=Check out this app!' \ -F 'thumbnail=<APP_STORE_URL>' \ -F 'published=0' \ -F 'call_to_action={"type":"INSTALL_MOBILE_APP","value":{"link":"<APP_STORE_URL>"}}' \ -F 'source=@<VIDEO_PATH>' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v24.0
/<PAGE_ID>/videos
curl \ -F 'name=My Video' \ -F 'message=Check out this app!' \ -F 'thumbnail=<APP_STORE_URL>' \ -F 'published=0' \ -F 'call_to_action={ "type": "LEARN_MORE", "value": {"link":"<APP_STORE_URL>","app_link":"<APP_DEEP_LINK>"} }' \ -F 'source=@<VIDEO_PATH>' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v24.0
/<PAGE_ID>/videos
curl \ -F 'name=My Video' \ -F 'message=Check out this app!' \ -F 'thumbnail=<THUMBNAIL_PATH>' \ -F 'published=0' \ -F 'call_to_action={"type":"PLAY_GAME","value":{"link":"<THUMBNAIL_PATH>"}}' \ -F 'source=@<VIDEO_PATH>' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v24.0
/<PAGE_ID>/videos
curl \ -F 'message=Buy coins now!' \ -F 'picture=<IMAGE_URL>' \ -F 'link=<LINK>' \ -F 'published=1' \ -F 'call_to_action={"type":"BUY_NOW","value":{"link":"<LINK>","product_link":"<PRODUCT_LINK>"}}' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v24.0
/<PAGE_ID>/feed
curl \ -F 'name=My Video' \ -F 'message=Buy coins now!' \ -F 'thumbnail=<THUMBNAIL_PATH>' \ -F 'published=0' \ -F 'call_to_action={ "type": "BUY_NOW", "value": {"link":"<THUMBNAIL_PATH>","product_link":"<THUMBNAIL_PATH>"} }' \ -F 'source=@<VIDEO_PATH>' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v24.0
/<PAGE_ID>/videos
認知度アップの目的でユニバーサルリンク処理を設定するために、creative.template_url_spec
にアプリIDを含めることができます。設定しない場合、広告はユーザーをウェブサイトに誘導します。
curl \ -F 'name=Advantage+ Catalog Ads Template Creative Sample' \ -F 'template_url_spec={ "config": { "app_id": "1596400373958175" } }' \ -F 'access_token=<CCESS_TOKEN>' \ https://graph.facebook.com/v24.0
/act_<AD_ACCOUNT_ID>/adcreatives
広告セットでアプリを選択した場合、ウェブフォールバックが追加されると、object_story_spec
に以下の変更が適用されます。
curl -X POST \ -F 'name="Traffic app fallback web sample"' \ -F 'object_story_spec={ "page_id": "<PAGE_ID>", "template_data": { "call_to_action": { "type": "INSTALL_MOBILE_APP", "value": { "link": "https://www.example.com" "app_link": "<DEEPLINK_URL> "object_store_urls": [ <STORE_URL_OF_APP> ] } }, "message": "Test {{product.name | titleize}}", "link": "https://www.example.com"", "name": "Headline {{product.price}}", "description": "Description {{product.description}}" } }' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v24.0
/act_<AD_ACCOUNT_ID>/adcreatives
フォールバック先をストアにする必要がある場合は、link
フィールドにストアのURLを指定します。フォールバック先をウェブサイトにする必要がある場合は、object_store_urls
フィールドにアプリのアプリストアURLを値として1つだけ含むリストを指定し、link
フィールドにウェブサイトフォールバックURLを指定します。
Advantage+ カタログ広告により、モバイルアプリのインストールを促進できます。これにより、利用者の行動に基づいて、モバイルインストール広告で利用者をリターゲットできます。
ステップ1.商品カタログのキャンペーンを作成します。
curl -X POST \
-F 'name="App Installs Campaign with Dynamic Product Ads"' \
-F 'objective="OUTCOME_APP_PROMOTION"' \
-F 'status="PAUSED"' \
-F 'special_ad_categories=[]' \
-F 'is_adset_budget_sharing_enabled=0' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v24.0/act_<AD_ACCOUNT_ID>/campaigns
'use strict';
const bizSdk = require('facebook-nodejs-business-sdk');
const AdAccount = bizSdk.AdAccount;
const Campaign = bizSdk.Campaign;
const access_token = '<ACCESS_TOKEN>';
const app_secret = '<APP_SECRET>';
const app_id = '<APP_ID>';
const id = '<AD_ACCOUNT_ID>';
const api = bizSdk.FacebookAdsApi.init(access_token);
const showDebugingInfo = true; // Setting this to true shows more debugging info.
if (showDebugingInfo) {
api.setDebug(true);
}
const logApiCallResult = (apiCallName, data) => {
console.log(apiCallName);
if (showDebugingInfo) {
console.log('Data:' + JSON.stringify(data));
}
};
let fields, params;
fields = [
];
params = {
'name' : 'App Installs Campaign with Dynamic Product Ads',
'objective' : 'OUTCOME_APP_PROMOTION',
'status' : 'PAUSED',
'special_ad_categories' : [],
};
const campaigns = (new AdAccount(id)).createCampaign(
fields,
params
);
logApiCallResult('campaigns api call complete.', campaigns);
require __DIR__ . '/vendor/autoload.php';
use FacebookAds\Object\AdAccount;
use FacebookAds\Object\Campaign;
use FacebookAds\Api;
use FacebookAds\Logger\CurlLogger;
$access_token = '<ACCESS_TOKEN>';
$app_secret = '<APP_SECRET>';
$app_id = '<APP_ID>';
$id = '<AD_ACCOUNT_ID>';
$api = Api::init($app_id, $app_secret, $access_token);
$api->setLogger(new CurlLogger());
$fields = array(
);
$params = array(
'name' => 'App Installs Campaign with Dynamic Product Ads',
'objective' => 'OUTCOME_APP_PROMOTION',
'status' => 'PAUSED',
'special_ad_categories' => array(),
);
echo json_encode((new AdAccount($id))->createCampaign(
$fields,
$params
)->exportAllData(), JSON_PRETTY_PRINT);
from facebook_business.adobjects.adaccount import AdAccount
from facebook_business.adobjects.campaign import Campaign
from facebook_business.api import FacebookAdsApi
access_token = '<ACCESS_TOKEN>'
app_secret = '<APP_SECRET>'
app_id = '<APP_ID>'
id = '<AD_ACCOUNT_ID>'
FacebookAdsApi.init(access_token=access_token)
fields = [
]
params = {
'name': 'App Installs Campaign with Dynamic Product Ads',
'objective': 'OUTCOME_APP_PROMOTION',
'status': 'PAUSED',
'special_ad_categories': [],
}
print AdAccount(id).create_campaign(
fields=fields,
params=params,
)
import com.facebook.ads.sdk.*;
import java.io.File;
import java.util.Arrays;
public class SAMPLE_CODE_EXAMPLE {
public static void main (String args[]) throws APIException {
String access_token = \"<ACCESS_TOKEN>\";
String app_secret = \"<APP_SECRET>\";
String app_id = \"<APP_ID>\";
String id = \"<AD_ACCOUNT_ID>\";
APIContext context = new APIContext(access_token).enableDebug(true);
new AdAccount(id, context).createCampaign()
.setName(\"App Installs Campaign with Dynamic Product Ads\")
.setObjective(Campaign.EnumObjective.VALUE_OUTCOME_APP_PROMOTION)
.setStatus(Campaign.EnumStatus.VALUE_PAUSED)
.setParam(\"special_ad_categories\", \"[]\")
.execute();
}
}
require 'facebook_ads'
access_token = '<ACCESS_TOKEN>'
app_secret = '<APP_SECRET>'
app_id = '<APP_ID>'
id = '<AD_ACCOUNT_ID>'
FacebookAds.configure do |config|
config.access_token = access_token
config.app_secret = app_secret
end
ad_account = FacebookAds::AdAccount.get(id)
campaigns = ad_account.campaigns.create({
name: 'App Installs Campaign with Dynamic Product Ads',
objective: 'OUTCOME_APP_PROMOTION',
status: 'PAUSED',
special_ad_categories: [],
})
ステップ2.上記の商品カタログの下にある、特定の商品セットの広告セットを作成します。
ステップ3.テンプレートを使用してAdvantage+ カタログ広告クリエイティブを作成します。
curl -X POST \
-F 'name="Advantage+ catalog ads template creative sample"' \
-F 'object_story_spec={
"page_id": "<PAGE_ID>",
"template_data": {
"call_to_action": {
"type": "INSTALL_MOBILE_APP",
"value": {
"link": "http://www.example.com/appstoreurl"
}
},
"message": "Test {{product.name | titleize}}",
"link": "http://www.example.com/appstoreurl",
"name": "Headline {{product.price}}",
"description": "Description {{product.description}}"
}
}' \
-F 'product_set_id="<PRODUCT_SET_ID>"' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v24.0
/act_<AD_ACCOUNT_ID>/adcreatives
ステップ4.広告で上記の広告クリエイティブを使用します。
curl \ -X POST \ -F "name=<name>" \ -F "source=<>" \ -F "access_token=<access_token>" \ "https://graph.facebook.com/<API_VERSION>/act_<account_id>/adplayables"
name
: 名前によりこの広告アセットを同じ広告アカウントのほかのプレイアブル広告と区別します。例: {ad_name}
-> {playable_asset_name}
source
: 自分のローカルマシン上のファイルの絶対パスaccess_token
: グラフAPIエクスプローラで生成できますプレイアブルHTML5ファイルには2つのメタデータタグを追加できます。これによって、Metaは広告の中のプレイアブルをアプリにアトリビューションできます。
... <head> ... <meta name="ref-application-id" content="<YOUR_APP_ID>"> <meta name="ref-asset-id" content="<YOUR_ASSET_ID>"> ... </head> ...
curl \ -F 'name=Sample Creative' \ -F 'object_story_spec={ "page_id": "<PAGE_ID>", "video_data": { "call_to_action": {"type":"INSTALL_MOBILE_APP","value":{"application":<APP_ID>,"link":"<APP_STORE_URL>"}}, "image_url": "<THUMBNAIL_URL>", "link_description": "try it out", "video_id": "<VIDEO_ID>" } }' \ -F 'playable_asset_id=<PLAYABLE_ASSET_ID>' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/<API_VERSION>/act_<AD_ACCOUNT_ID>/adcreatives
curl \ -F 'name=My Ad' \ -F 'status=ACTIVE' \ -F 'adset_id=<AD_SET_ID>' \ -F 'creative={"creative_id":"<CREATIVE_ID>"}' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/<API_VERSION>/act_<AD_ACCOUNT_ID>/ads