Facebook sắp xếp quảng cáo theo cấu trúc có 3 cấp độ: chiến dịch, nhóm quảng cáo và quảng cáo. Trong API, nhà phát triển có quyền truy cập vào cấp độ thứ tư là nội dung.
Các đối tượng này chứa mục tiêu quảng cáo của bạn và một hoặc nhiều nhóm quảng cáo. Nhờ vậy, bạn có thể tối ưu hóa và đo lường kết quả cho từng mục tiêu quảng cáo.
Nhóm quảng cáo có một hoặc nhiều quảng cáo. Bạn xác định ngân sách và lịch chạy cho từng nhóm quảng cáo. Hãy tạo một nhóm quảng cáo cho từng đối tượng mục tiêu với giá thầu của bạn; các quảng cáo trong nhóm này nhắm mục tiêu đến cùng một đối tượng với giá thầu giống nhau. Nhờ vậy, bạn có thể kiểm soát số tiền mình chi tiêu cho từng đối tượng, xác định thời điểm đối tượng sẽ nhìn thấy quảng cáo của bạn và cung cấp số liệu cho từng đối tượng.
Chứa nội dung quảng cáo. Hãy tạo nhiều quảng cáo trong từng nhóm quảng cáo để tối ưu hóa hoạt động phân phối quảng cáo dựa trên các hình ảnh, liên kết, video, văn bản hoặc vị trí quảng cáo khác nhau.
Chỉ chứa các thành phần hình ảnh của quảng cáo và bạn không thể thay đổi những thành phần này sau khi tạo. Mỗi tài khoản quảng cáo có một thư viện nội dung nhằm lưu trữ nội dung để sử dụng lại trong quảng cáo.
Mục tiêu | Lịch chạy | Ngân sách | Đặt giá thầu | Nhắm mục tiêu | Nội dung | |
---|---|---|---|---|---|---|
Chiến dịch | ✓ | |||||
Nhóm quảng cáo | ✓ | ✓ | ✓ | ✓ | ||
Quảng cáo | ✓ |
Ánh xạ giữa tên công khai của đối tượng và điểm cuối API:
Tên công khai | Điểm cuối API |
---|---|
Chiến dịch | /campaigns |
Nhóm quảng cáo | /adsets |
Quảng cáo | /ads |
Nội dung | /adcreatives |
Chiến dịch là cấu trúc tổ chức cấp cao nhất trong tài khoản quảng cáo và nên biểu thị một mục tiêu của nhà quảng cáo (ví dụ: thúc đẩy lượt tương tác với bài viết trên trang). Khi bạn đặt mục tiêu của chiến dịch, hệ thống sẽ xác thực mọi quảng cáo được thêm vào chiến dịch đó để đảm bảo rằng những quảng cáo đó cũng có đúng mục tiêu.
Trong trình quản lý quảng cáo, chúng tôi hiển thị tất cả chiến dịch đang hoạt động và đã tạm dừng thuộc một tài khoản quảng cáo.
Để đọc các chiến dịch được liên kết với một tài khoản cụ thể, bạn gửi yêu cầu đến kết nối của tài khoản quảng cáo mà bạn đang sử dụng. Theo mặc định, chúng tôi chỉ trả về những chiến dịch có trạng thái ACTIVE
hoặc PAUSED
. Vì vậy, bạn cần chỉ định các trạng thái khác nếu cần:
curl -X GET \
-d 'effective_status=[
"ACTIVE",
"PAUSED"
]' \
-d 'fields="name,objective"' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0/act_<AD_ACCOUNT_ID>/campaigns
Chúng tôi cũng hiển thị một số thông tin chi tiết ở cấp độ cao, trong đó có lượt hiển thị, lượt click và số tiền đã chi tiêu. Bạn có thể truy xuất các thông tin này bằng cách gọi điểm cuối sau đây, không bắt buộc phải chỉ định thời gian bắt đầu và/hoặc thời gian kết thúc:
use FacebookAds\Object\Campaign;
$campaign = new Campaign(<CAMPAIGN_ID>);
$insights = $campaign->getInsights(array(
AdsInsightsFields::IMPRESSIONS,
AdsInsightsFields::INLINE_LINK_CLICKS,
AdsInsightsFields::SPEND,
), array(
'end_time' => (new \DateTime('now'))->getTimestamp(),
));
from facebookads.adobjects.campaign import Campaign
from facebookads.adobjects.adsinsights import AdsInsights
import time
fields = [
AdsInsights.Field.impressions,
AdsInsights.Field.inline_link_clicks,
AdsInsights.Field.spend,
]
params = {
'end_time': int(time.time()),
}
campaign = Campaign(<CAMPAIGN_ID>)
insights = campaign.get_insights(fields=fields, params=params)
APINodeList<AdsInsights> adsInsightss = new Campaign(<CAMPAIGN_ID>, context).getInsights()
.setParam("end_time", end_time)
.requestField("impressions")
.requestField("inline_link_clicks")
.requestField("spend")
.execute();
curl -G \
-d 'end_time=1517287567' \
-d 'fields=impressions,inline_link_clicks,spend' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/<CAMPAIGN_ID>/insights
Mục tiêu là những hàng động mà bạn muốn mọi người thực hiện khi nhìn thấy quảng cáo của bạn. Bạn cần chỉ định mục tiêu mình đã chọn trong quá trình tạo chiến dịch.
Dưới đây là những lợi ích khi đặt mục tiêu rõ ràng:
Sau đây là lệnh gọi API tối thiểu cần để tạo chiến dịch:
curl -X POST \
-F 'name="My First Campaign"' \
-F 'objective="OUTCOME_ENGAGEMENT"' \
-F 'status="PAUSED"' \
-F 'special_ad_categories=[]' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0/act_<AD_ACCOUNT_ID>/campaigns
Nhóm quảng cáo là các nhóm quảng cáo được dùng để đặt cấu hình ngân sách và khoảng thời gian chạy quảng cáo. Tất cả quảng cáo có trong một nhóm quảng cáo phải có cùng tùy chọn nhắm mục tiêu, ngân sách, phương thức lập hóa đơn, mục tiêu tối ưu hóa và khoảng thời gian.
curl -X POST \
-F 'name="My First AdSet"' \
-F 'lifetime_budget=20000' \
-F 'start_time="2024-11-28T07:22:19-0800"' \
-F 'end_time="2024-12-05T07:22:19-0800"' \
-F 'campaign_id="<AD_CAMPAIGN_ID>"' \
-F 'bid_amount=500' \
-F 'billing_event="IMPRESSIONS"' \
-F 'optimization_goal="POST_ENGAGEMENT"' \
-F 'targeting={
"age_min": 20,
"age_max": 24,
"behaviors": [
{
"id": 6002714895372,
"name": "All travelers"
}
],
"genders": [
1
],
"geo_locations": {
"countries": [
"US"
],
"regions": [
{
"key": "4081"
}
],
"cities": [
{
"key": "777934",
"radius": 10,
"distance_unit": "mile"
}
]
},
"interests": [
{
"id": "<INTEREST_ID>",
"name": "<INTEREST_NAME>"
}
],
"life_events": [
{
"id": 6002714398172,
"name": "Newlywed (1 year)"
}
],
"facebook_positions": [
"feed"
],
"publisher_platforms": [
"facebook",
"audience_network"
]
}' \
-F 'status="PAUSED"' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0/act_<AD_ACCOUNT_ID>/adsets
Bạn có thể liệt kê tất cả nhóm quảng cáo trong một chiến dịch bằng cách gửi yêu cầu đến đường dẫn sau đây, đồng thời chỉ định các trường và trạng thái bạn muốn:
curl -X GET \
-d 'fields="name,start_time,end_time,daily_budget,lifetime_budget"' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0/<AD_CAMPAIGN_ID>/adsets
Đối tượng quảng cáo chứa tất cả thông tin cần thiết để hiển thị quảng cáo trên Facebook, bao gồm cả nội dung.
curl -X POST \
-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/v21.0/act_<AD_ACCOUNT_ID>/ads
Để xem bản xem trước của quảng cáo, hãy xem hướng dẫn của chúng tôi.
Cuối cùng, nếu muốn liệt kê tất cả quảng cáo cho một nhóm quảng cáo, bạn có thể gửi yêu cầu đến đường dẫn sau đây, đồng thời chỉ định các trường bạn muốn truy xuất:
use FacebookAds\Object\AdSet;
use FacebookAds\Object\Values\ArchivableCrudObjectEffectiveStatuses;
use FacebookAds\Object\Fields\AdFields;
$adset = new AdSet(<AD_SET_ID>);
$ads = $adset->getAds(array(
AdFields::NAME,
AdFields::CONFIGURED_STATUS,
AdFields::EFFECTIVE_STATUS,
AdFields::CREATIVE,
), array(
AdFields::EFFECTIVE_STATUS => array(
ArchivableCrudObjectEffectiveStatuses::ACTIVE,
ArchivableCrudObjectEffectiveStatuses::PAUSED,
ArchivableCrudObjectEffectiveStatuses::PENDING_REVIEW,
ArchivableCrudObjectEffectiveStatuses::PREAPPROVED,
),
));
from facebookads.adobjects.adset import AdSet
from facebookads.adobjects.ad import Ad
fields = [
Ad.Field.name,
Ad.Field.configured_status,
Ad.Field.effective_status,
Ad.Field.creative,
]
params = {
Ad.Field.effective_status: [
'ACTIVE',
'PAUSED',
'PENDING_REVIEW',
'PREAPPROVED',
],
}
ad_set = AdSet(<AD_SET_ID>)
ads = ad_set.get_ads(fields=fields, params=params)
APINodeList<Ad> ads = new AdSet(<AD_SET_ID>, context).getAds()
.setEffectiveStatus("[\"ACTIVE\",\"PAUSED\",\"PENDING_REVIEW\",\"PREAPPROVED\"]")
.requestNameField()
.requestConfiguredStatusField()
.requestEffectiveStatusField()
.requestCreativeField()
.execute();
curl -G \
--data-urlencode 'effective_status=[
"ACTIVE",
"PAUSED",
"PENDING_REVIEW",
"PREAPPROVED"
]' \
-d 'fields=name,configured_status,effective_status,creative' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/<AD_SET_ID>/ads
Có thể bạn sẽ thấy tổng số quảng cáo lớn hơn số quảng cáo bạn muốn hiển thị trên một trang. Trong trường hợp này, bạn nên chỉ định trường limit
là số lượng mục bạn muốn truy xuất, sau đó phân trang các mục còn lại.
Hệ thống sẽ phân trang dựa trên các con trỏ được trả về trong phản hồi:
"paging": { "previous" : "https://graph.facebook.com/...", "next": "https://graph.facebook.com/...", "cursors": { "before": "NjAxNjc3NTU1ODMyNw==", "after": "NjAxMTc0NTU2MjcyNw==" }
Nếu còn trang khác cần truy xuất, phản hồi sẽ chứa các trường previous
và next
. Bạn có thể gọi những URL này để truy xuất các trang dữ liệu nêu trên. Hãy đọc thêm về phương thức phân trang dựa vào con trỏ.