이 문서에서는 데스크톱과 모바일 앱에서 설치와 참여를 유도하기 위한 다양한 광고 유닛을 설명합니다.
이 광고 유닛은 설치 또는 참여를 목적으로 사진, 동영상, 슬라이드 또는 앱 데모 크리에이티브를 이용하여 데스크톱이나 모바일 앱으로 사용자를 모으는 데 사용합니다.
개념적으로 이 광고 유닛은 다음과 같은 광고에 허용됩니다.
사진 | 동영상 | 슬라이드 | 앱 데모 | |
---|---|---|---|---|
모바일 설치 광고 | ✓ | ✓ | ✓ | ✓ |
모바일 참여 광고 | ✓ | ✓ | ✓ | |
데스크톱 설치 광고 | ✓ | ✓ | ✓ | |
데스크톱 참여 광고 | ✓ | ✓ | ✓ | |
가상 상품을 위한 데스크톱 앱 광고 | ✓ | ✓ | ✓ |
가상 상품을 위한 데스크톱 앱 광고는 데스크톱 참여의 하위 세트입니다. 이제 가상 상품 쿠폰을 이용하여 사용자가 앱으로 돌아와 다시 참여하게 할 수 있습니다. 예를 들어 이전에 결제했던 사용자를 다시 참여시키기 위한 피드에서 앱 내 통화로 앱의 아이템이나 아이템 세트에 할인을 제공할 수 있습니다. 앱에서 결제를 허용하도록 설정하는 방법은 여기를 참조하세요.
참고를 위해 다음과 같은 모바일 설치 이미지 유닛의 예시를 제공합니다.
다음은 가상 상품의 데스크톱 앱 광고 이미지입니다.
광고를 만들 때는 다음 요구 사항에 유의하세요.
user_os
필드를 사용해야 합니다. 노출 위치는 값이 ['mobile
']인 device_platforms
필드가 있어야 하며, Facebook에서 모바일 기기를 타게팅하기 위한 다른 타게팅 사양 필드를 사용하는 것이 좋습니다. 특정 플랫폼에만 광고하려면 publisher_platforms
를 선택적으로 지정할 수 있습니다.device_platforms
는 desktop
이어야 합니다. Facebook 데스크톱 피드와 오른쪽 열에 모두 광고하고 싶지 않다면 facebook_positions
를 선택적으로 지정할 수 있습니다.GET_OFFER
를 사용하면 가격을 할인해야 합니다. 자세한 내용은 가상 상품을 참조하세요.다음의 추가적인 행동 유도는 앱 광고에서 post의 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 | 제품의 오픈 그래프 가상 상품 개체를 가리키는 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/v21.0
/act_<AD_ACCOUNT_ID>/adcreatives
또는 페이지의 피드 엔드포인트에서 페이지 게시물을 생성하고 크리에이티브에서 게시물 ID를 사용할 수도 있습니다. 더 많은 예시는 아래의 예시 섹션을 참조하세요.
슬라이드 광고 형식으로 모바일 앱 설치 또는 참여 광고를 만들려면 슬라이드 광고 문서의 지침을 따라야 합니다. 예외적으로 각 child_attachments
의 link
필드에는 앱 스토어 링크를 지정합니다.
각 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/v21.0
/act_<AD_ACCOUNT_ID>/adcreatives
동영상으로 앱 광고를 만들려면 먼저 동영상을 광고 계정 동영상 라이브러리에 업로드해야 합니다. 그런 다음 광고 크리에이티브의 object_story_spec: {'video_data':...}
필드에서 동영상 ID를 사용합니다.
예:
use FacebookAds\Object\AdCreative;
use FacebookAds\Object\AdCreativeVideoData;
use FacebookAds\Object\Fields\AdCreativeVideoDataFields;
use FacebookAds\Object\AdCreativeObjectStorySpec;
use FacebookAds\Object\Fields\AdCreativeObjectStorySpecFields;
use FacebookAds\Object\Fields\AdCreativeFields;
$video_data = new AdCreativeVideoData();
$video_data->setData(array(
AdCreativeVideoDataFields::IMAGE_URL => '<THUMBNAIL_URL>',
AdCreativeVideoDataFields::VIDEO_ID => <VIDEO_ID>,
AdCreativeVideoDataFields::CALL_TO_ACTION => array(
'type' => 'INSTALL_MOBILE_APP',
'value' => array(
'link' => '<APP_STORE_URL>',
),
),
));
$object_story_spec = new AdCreativeObjectStorySpec();
$object_story_spec->setData(array(
AdCreativeObjectStorySpecFields::PAGE_ID => <PAGE_ID>,
AdCreativeObjectStorySpecFields::VIDEO_DATA => $video_data,
));
$creative = new AdCreative(null, 'act_<AD_ACCOUNT_ID>');
$creative->setData(array(
AdCreativeFields::NAME => 'Sample Creative',
AdCreativeFields::OBJECT_STORY_SPEC => $object_story_spec,
));
$creative->create();
from facebookads.adobjects.adcreative import AdCreative
from facebookads.adobjects.adcreativeobjectstoryspec \
import AdCreativeObjectStorySpec
from facebookads.adobjects.adcreativevideodata \
import AdCreativeVideoData
video_data = AdCreativeVideoData()
video_data[AdCreativeVideoData.Field.description] = 'try it out'
video_data[AdCreativeVideoData.Field.video_id] = <VIDEO_ID>
video_data[AdCreativeVideoData.Field.image_url] = '<THUMBNAIL_URL>'
video_data[AdCreativeVideoData.Field.call_to_action] = {
'type': 'INSTALL_MOBILE_APP',
'value': {
'link': '<APP_STORE_URL>',
'link_title': 'Facebook',
},
}
object_story_spec = AdCreativeObjectStorySpec()
object_story_spec[AdCreativeObjectStorySpec.Field.page_id] = <PAGE_ID>
object_story_spec[AdCreativeObjectStorySpec.Field.video_data] = video_data
creative = AdCreative(parent_id='act_<AD_ACCOUNT_ID>')
creative[AdCreative.Field.name] = 'Sample Creative'
creative[AdCreative.Field.object_story_spec] = object_story_spec
creative.remote_create()
AdCreative adCreative = new AdAccount(act_<AD_ACCOUNT_ID>, context).createAdCreative()
.setName("Sample Creative")
.setObjectStorySpec(
new AdCreativeObjectStorySpec()
.setFieldPageId(<PAGE_ID>)
.setFieldVideoData(
new AdCreativeVideoData()
.setFieldCallToAction(
new AdCreativeLinkDataCallToAction()
.setFieldType(AdCreativeLinkDataCallToAction.EnumType.VALUE_INSTALL_MOBILE_APP)
.setFieldValue(
new AdCreativeLinkDataCallToActionValue()
.setFieldLink(<APP_STORE_URL>)
)
)
.setFieldLinkDescription("try it out")
.setFieldImageUrl(<THUMBNAIL_URL>)
.setFieldVideoId(<VIDEO_ID>)
)
)
.execute();
String ad_creative_id = adCreative.getId();
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/v2.11/act_<AD_ACCOUNT_ID>/adcreatives
또는 페이지의 동영상 엔드포인트에서 페이지 게시물을 생성하고 크리에이티브에서 동영상 ID를 사용할 수도 있습니다. 더 많은 예시는 아래의 예시 섹션을 참조하세요.
페이지 게시물에 대한 상세한 정보를 검색하려면 링크 페이지 게시물 문서 또는 동영상 페이지 게시물 문서를 참조하세요.
페이지의 /promotable_posts
에지의 모든 페이지 게시물을 리스트로 작성할 수 있습니다.
curl https://graph.facebook.com/{API_VERSION}/{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/{API_VERSION}/?type=og&scrape=true&id={APP_LINK}
Meta는 앱을 설치한 사용자의 인구 통계학적 특성에 대한 인사이트를 매일 집계하여 제공할 것입니다. 이 정보를 검색하려면 앱 액세스 토큰과 쿼리를 사용해야 합니다.
https://graph.facebook.com/{API_VERSION}/{APP_ID}/insights/application_mobile_app_installs?&access_token={ACCESS_TOKEN}
추가 URL 매개변수 breakdown
을 다음 값 중 하나와 동일하게 지정하면 통계를 분석할 수도 있습니다. 현재는 분석 데이터를 결합할 수 없습니다.
이름 | 설명 |
---|---|
| 타겟 나이와 성별에 대한 통계 분석 |
| 타겟 국가에 대한 통계 분석 |
| 타겟 로캘에 대한 통계 분석 |
예:
https://graph.facebook.com/{API_VERSION}/{APP_ID}/insights/application_mobile_app_installs?breakdown=gender_age&access_token={ACCESS_TOKEN} https://graph.facebook.com/{API_VERSION}/{APP_ID}/insights/application_mobile_app_installs?breakdown=country&access_token={ACCESS_TOKEN} https://graph.facebook.com/{API_VERSION}/{APP_ID}/insights/application_mobile_app_installs?breakdown=locale&access_token={ACCESS_TOKEN}
1단계. 이미지로 페이지 게시물을 만듭니다. PAGE_ACCESS_TOKEN
과 페이지 API 세션을 사용하여 페이지 게시물을 생성해야 한다는 점에 유의하세요.
use FacebookAds\Api;
use FacebookAds\Http\RequestInterface;
$params = array(
'message' => 'Sign up today',
'picture' => '<IMAGE_URL>',
'link' => '<LINK>',
'published' => 1,
'call_to_action' => array(
'type' => 'SIGN_UP',
'value' => array(
'link' => '<LINK>',
),
),
);
$data = Api::instance()->call(
'/'.<PAGE_ID>.'/feed',
RequestInterface::METHOD_POST,
$params)->getContent();
from facebookads import FacebookAdsApi
params = {
'massage': 'Sign up today.',
'picture': '<IMAGE_URL>',
'link': '<LINK>',
'published': 1,
'call_to_action': {
'type': 'SIGN_UP',
'value': {
'link': '<LINK>',
},
},
}
data = FacebookAdsApi.get_default_api().\
call('POST', (<PAGE_ID>, 'feed'), params=params)
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/v2.11/<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/v21.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/v21.0/act_<AD_ACCOUNT_ID>/ads
1단계. 이미지로 페이지 게시물을 만듭니다. PAGE_ACCESS_TOKEN
과 페이지 API 세션을 사용하여 페이지 게시물을 생성해야 한다는 점에 유의하세요.
curl -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/v21.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/v21.0/act_<AD_ACCOUNT_ID>/adcreatives
3단계. 광고 세트에서 입찰을 설정하고 클릭에 최적화한 다음 노출에 대한 비용을 지불합니다.
use FacebookAds\Object\AdSet;
use FacebookAds\Object\Fields\AdSetFields;
use FacebookAds\Object\Values\AdSetBillingEventValues;
use FacebookAds\Object\Values\AdSetOptimizationGoalValues;
use FacebookAds\Object\Fields\TargetingFields;
use FacebookAds\Object\Targeting;
$adset = new AdSet(null, 'act_<AD_ACCOUNT_ID>');
$adset->setData(array(
AdSetFields::NAME => 'LifetimeBudgetSet',
AdsetFields::LIFETIME_BUDGET => 100000,
AdSetFields::BID_AMOUNT => 500,
AdSetFields::BILLING_EVENT => AdSetBillingEventValues::IMPRESSIONS,
AdSetFields::OPTIMIZATION_GOAL => AdSetOptimizationGoalValues::LINK_CLICKS,
AdSetFields::PROMOTED_OBJECT => array(
'application_id' => <APP_ID>,
'object_store_url' => '<APP_STORE_URL>',
),
AdSetFields::TARGETING => (new Targeting())->setData(array(
TargetingFields::GEO_LOCATIONS => array(
'countries' => array('US'),
),
TargetingFields::USER_OS => array(
'IOS',
),
TargetingFields::PUBLISHER_PLATFORMS => array(
'facebook',
'audience_network',
),
TargetingFields::FACEBOOK_POSITIONS => array('feed'),
)),
AdSetFields::CAMPAIGN_ID => <CAMPAIGN_ID>,
AdSetFields::END_TIME =>
(new \DateTime("+1 week"))->format(\DateTime::ISO8601),
));
$adset->create(array(
AdSet::STATUS_PARAM_NAME => AdSet::STATUS_PAUSED,
));
import time
from facebookads.adobjects.adset import AdSet
adset = AdSet(parent_id='act_<AD_ACCOUNT_ID>')
adset.update({
AdSet.Field.name: 'LifetimeBudgetSet',
AdSet.Field.campaign_id: <CAMPAIGN_ID>,
AdSet.Field.lifetime_budget: 10000,
AdSet.Field.start_time: int(time.time()),
AdSet.Field.end_time: int(time.time() + 100000),
AdSet.Field.optimization_goal: AdSet.OptimizationGoal.link_clicks,
AdSet.Field.billing_event: AdSet.BillingEvent.impressions,
AdSet.Field.bid_amount: 500,
AdSet.Field.promoted_object: {
'application_id': <APP_ID>,
'object_store_url': '<APP_STORE_URL>',
},
AdSet.Field.targeting: {
'geo_locations': {
'countries': ['US'],
},
'user_os': ['iOS'],
Targeting.Field.publisher_platforms: ['facebook', 'audience_network'],
Targeting.Field.facebook_positions: ['feed'],
},
})
adset.remote_create(params={
'status': AdSet.Status.paused,
})
curl \
-F 'name=LifetimeBudgetSet' \
-F 'lifetime_budget=100000' \
-F 'bid_amount=500' \
-F 'billing_event=IMPRESSIONS' \
-F 'optimization_goal=LINK_CLICKS' \
-F 'promoted_object={"application_id":"<APP_ID>","object_store_url":"<APP_STORE_URL>"}' \
-F 'targeting={
"facebook_positions": ["feed"],
"geo_locations": {"countries":["US"]},
"publisher_platforms": ["facebook","audience_network"],
"user_os": ["IOS"]
}' \
-F 'campaign_id=<CAMPAIGN_ID>' \
-F 'end_time=2018-02-06T04:45:30+0000' \
-F 'status=PAUSED' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/act_<AD_ACCOUNT_ID>/adsets
4단계. 광고에 크리에이티브를 사용합니다.
use FacebookAds\Object\Ad;
use FacebookAds\Object\Fields\AdFields;
$data = array(
AdFields::NAME => 'My Ad',
AdFields::ADSET_ID => <AD_SET_ID>,
AdFields::CREATIVE => array(
'creative_id' => <CREATIVE_ID>,
),
);
$ad = new Ad(null, 'act_<AD_ACCOUNT_ID>');
$ad->setData($data);
$ad->create(array(
'redownload' => 1,
));
from facebookads.adobjects.ad import Ad
ad = Ad(parent_id='act_<AD_ACCOUNT_ID>')
ad[Ad.Field.name] = 'My Ad'
ad[Ad.Field.adset_id] = <AD_SET_ID>
ad[Ad.Field.creative] = {'creative_id': <CREATIVE_ID>}
ad[Ad.Field.redownload] = True
ad.remote_create(params={
'status': Ad.Status.paused,
})
Ad ad = new AdAccount(act_<AD_ACCOUNT_ID>, context).createAd()
.setName("My Ad")
.setAdsetId(<AD_SET_ID>)
.setCreative(
new AdCreative()
.setFieldId(<CREATIVE_ID>)
)
.setRedownload(true)
.execute();
String ad_id = ad.getId();
curl \
-F 'name=My Ad' \
-F 'adset_id=<AD_SET_ID>' \
-F 'creative={"creative_id":"<CREATIVE_ID>"}' \
-F 'redownload=1' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/act_<AD_ACCOUNT_ID>/ads
1단계. 이미지로 페이지 게시물을 만듭니다. PAGE_ACCESS_TOKEN
과 페이지 API 세션을 사용하여 페이지 게시물을 생성해야 한다는 점에 유의하세요.
use FacebookAds\Api;
use FacebookAds\Http\RequestInterface;
$params = array(
'message' => 'Check out this App today. Available on iTunes.',
'published' => 1,
'link' => '<APP_STORE_URL>',
'picture' => '<IMAGE_URL>',
'call_to_action' => array(
'type' => 'LEARN_MORE',
'value' => array(
'link' => '<APP_STORE_URL>',
'app_link' => '<APP_DEEP_LINK>',
),
),
);
$data = Api::instance()->call(
'/'.<PAGE_ID>.'/feed',
RequestInterface::METHOD_POST,
$params)->getContent();
from facebookads import FacebookAdsApi
params = {
'massage': 'Check out this App today. Available on iTunes.',
'picture': '<IMAGE_URL>',
'link': '<APP_STORE_URL>',
'published': 1,
'call_to_action': {
'type': 'LEARN_MORE',
'value': {
'link': '<APP_STORE_URL>',
'app_link': '<APP_DEEP_LINK>',
},
},
}
path = "/{}/feed".format(<PAGE_ID>)
data = FacebookAdsApi.get_default_api().call('POST', (path,), params=params)
curl \
-F 'message=Check out this App today. Available on iTunes.' \
-F 'published=1' \
-F 'link=<APP_STORE_URL>' \
-F 'picture=<IMAGE_URL>' \
-F 'call_to_action={
"type": "LEARN_MORE",
"value": {"link":"<APP_STORE_URL>","app_link":"<APP_DEEP_LINK>"}
}' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/<PAGE_ID>/feed
2단계. 광고 크리에이티브를 만듭니다.
curl -X POST \
-F 'object_story_id="<PAGE_ID>_<POST_ID>"' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0/act_<AD_ACCOUNT_ID>/adcreatives
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="2024-11-28T12:12:29-0800"' \
-F 'end_time="2024-12-05T12:12:29-0800"' \
-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/v21.0/act_<AD_ACCOUNT_ID>/adsets
4단계. 광고에 크리에이티브를 사용합니다.
use FacebookAds\Object\Ad;
use FacebookAds\Object\Fields\AdFields;
$data = array(
AdFields::NAME => 'My Ad',
AdFields::ADSET_ID => <AD_SET_ID>,
AdFields::CREATIVE => array(
'creative_id' => <CREATIVE_ID>,
),
);
$ad = new Ad(null, 'act_<AD_ACCOUNT_ID>');
$ad->setData($data);
$ad->create(array(
'redownload' => 1,
));
from facebookads.adobjects.ad import Ad
ad = Ad(parent_id='act_<AD_ACCOUNT_ID>')
ad[Ad.Field.name] = 'My Ad'
ad[Ad.Field.adset_id] = <AD_SET_ID>
ad[Ad.Field.creative] = {'creative_id': <CREATIVE_ID>}
ad[Ad.Field.redownload] = True
ad.remote_create(params={
'status': Ad.Status.paused,
})
Ad ad = new AdAccount(act_<AD_ACCOUNT_ID>, context).createAd()
.setName("My Ad")
.setAdsetId(<AD_SET_ID>)
.setCreative(
new AdCreative()
.setFieldId(<CREATIVE_ID>)
)
.setRedownload(true)
.execute();
String ad_id = ad.getId();
curl \
-F 'name=My Ad' \
-F 'adset_id=<AD_SET_ID>' \
-F 'creative={"creative_id":"<CREATIVE_ID>"}' \
-F 'redownload=1' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/act_<AD_ACCOUNT_ID>/ads
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/v21.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/v21.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/v21.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/v21.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/v21.0
/<PAGE_ID>/videos
어드밴티지+ 카탈로그 광고는 사용자가 모바일 앱을 설치하도록 유도할 수 있습니다. 어드밴티지+ 카탈로그 광고를 사용하면 사용자 행동에 따라 모바일 설치 광고로 사용자를 리타게팅할 수 있습니다.
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 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0/act_<AD_ACCOUNT_ID>/campaigns
2단계. 상기 제품 카탈로그 아래의 특정 제품 세트를 위한 광고 세트를 만듭니다.
use FacebookAds\Object\AdSet;
use FacebookAds\Object\Fields\AdSetFields;
use FacebookAds\Object\Fields\TargetingFields;
use FacebookAds\Object\Values\AdSetBillingEventValues;
use FacebookAds\Object\Values\AdSetOptimizationGoalValues;
$adset = new AdSet(null, 'act_<AD_ACCOUNT_ID>');
$adset->setData(array(
AdSetFields::NAME => 'Mobile App Installs Ad Set with Dynamic Product Ads',
AdSetFields::BID_AMOUNT => 3000,
AdSetFields::BILLING_EVENT => AdSetBillingEventValues::IMPRESSIONS,
AdSetFields::OPTIMIZATION_GOAL => AdSetOptimizationGoalValues::APP_INSTALLS,
AdSetFields::DAILY_BUDGET => 15000,
AdSetFields::CAMPAIGN_ID => <CAMPAIGN_ID>,
AdSetFields::TARGETING => array(
TargetingFields::GEO_LOCATIONS => array(
'countries' => array('US'),
),
TargetingFields::PUBLISHER_PLATFORMS => array(
'facebook',
'audience_network',
),
TargetingFields::DEVICE_PLATFORMS => array('mobile'),
TargetingFields::USER_OS => array(
'IOS',
),
TargetingFields::DYNAMIC_AUDIENCE_IDS => array(<PRODUCT_AUDIENCE_ID>),
),
AdSetFields::PROMOTED_OBJECT => array(
'product_set_id' => <PRODUCT_SET_ID>,
'application_id' => <APP_ID>,
'object_store_url' => '<APP_STORE_URL>',
),
));
$adset->create(array(
AdSet::STATUS_PARAM_NAME => AdSet::STATUS_PAUSED,
));
from facebookads.adobjects.adset import AdSet
from facebookads.adobjects.targeting import Targeting
adset = AdSet(parent_id='act_<AD_ACCOUNT_ID>')
adset.update({
AdSet.Field.name: 'Mobile App Installs Ad Set with Dynamic Product Ads',
AdSet.Field.promoted_object: {
'product_set_id': product_set_id,
'application_id': <APP_ID>,
'object_store_url': '<APP_STORE_URL>',
},
AdSet.Field.campaign_id: <CAMPAIGN_ID>,
AdSet.Field.daily_budget: 15000,
AdSet.Field.optimization_goal: AdSet.OptimizationGoal.app_installs,
AdSet.Field.billing_event: AdSet.BillingEvent.impressions,
AdSet.Field.bid_amount: 3000,
AdSet.Field.targeting: {
Targeting.Field.geo_locations: {
'countries': ['US'],
},
Targeting.Field.publisher_platforms: ['facebook', 'audience_network'],
Targeting.Field.device_platforms: ['mobile'],
Targeting.Field.user_os: [
'IOS',
],
Targeting.Field.dynamic_audience_ids: [
<PRODUCT_AUDIENCE_ID>,
],
},
})
adset.remote_create(params={
'status': AdSet.Status.paused,
})
curl \
-F 'name=Mobile App Installs Ad Set with Dynamic Product Ads' \
-F 'bid_amount=3000' \
-F 'billing_event=IMPRESSIONS' \
-F 'optimization_goal=APP_INSTALLS' \
-F 'daily_budget=15000' \
-F 'campaign_id=<CAMPAIGN_ID>' \
-F 'targeting={
"geo_locations": {"countries":["US"]},
"publisher_platforms": ["facebook","audience_network"],
"device_platforms": ["mobile"],
"user_os": ["IOS"],
"dynamic_audience_ids": ["<PRODUCT_AUDIENCE_ID>"]
}' \
-F 'promoted_object={
"product_set_id": "<PRODUCT_SET_ID>",
"application_id": "<APP_ID>",
"object_store_url": "<APP_STORE_URL>"
}' \
-F 'status=PAUSED' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.8/act_<AD_ACCOUNT_ID>/adsets
3단계. 템플릿을 사용해 어드밴티지+ 카탈로그 광고 크리에이티브를 만듭니다.
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/v21.0
/act_<AD_ACCOUNT_ID>/adcreatives
4단계. 광고에 상기 광고 크리에이티브를 사용합니다.
use FacebookAds\Object\Ad;
use FacebookAds\Object\Fields\AdFields;
$data = array(
AdFields::NAME => 'My Ad',
AdFields::ADSET_ID => <AD_SET_ID>,
AdFields::CREATIVE => array(
'creative_id' => <CREATIVE_ID>,
),
);
$ad = new Ad(null, 'act_<AD_ACCOUNT_ID>');
$ad->setData($data);
$ad->create(array(
'redownload' => 1,
));
from facebookads.adobjects.ad import Ad
ad = Ad(parent_id='act_<AD_ACCOUNT_ID>')
ad[Ad.Field.name] = 'My Ad'
ad[Ad.Field.adset_id] = <AD_SET_ID>
ad[Ad.Field.creative] = {'creative_id': <CREATIVE_ID>}
ad[Ad.Field.redownload] = True
ad.remote_create(params={
'status': Ad.Status.paused,
})
Ad ad = new AdAccount(act_<AD_ACCOUNT_ID>, context).createAd()
.setName("My Ad")
.setAdsetId(<AD_SET_ID>)
.setCreative(
new AdCreative()
.setFieldId(<CREATIVE_ID>)
)
.setRedownload(true)
.execute();
String ad_id = ad.getId();
curl \
-F 'name=My Ad' \
-F 'adset_id=<AD_SET_ID>' \
-F 'creative={"creative_id":"<CREATIVE_ID>"}' \
-F 'redownload=1' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/act_<AD_ACCOUNT_ID>/ads
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 탐색기로 생성할 수 있습니다.앱 데모 HTML 5 파일로 메타데이터 태그 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