Set Up Your Environment
- Ensure that you have PHP 7.x or higher installed on your server. The Facebook Marketing API works best with the latest PHP versions.
- You’ll need Composer, a dependency manager for PHP, to manage the Facebook SDK. If not already installed, get it from [getcomposer.org](https://getcomposer.org/).
composer require facebook/graph-sdk
Get Your App Credentials
- After creating an app in Facebook Developer Console, navigate to the app dashboard to find your
App ID
and App Secret
.
- Set up a valid access token by going to the Graph API Explorer or programmatically through authentication calls. You will need extended permissions like
ads_management
and ads_read
.
Initialize Facebook SDK in PHP
- Require the autoload script generated by Composer and use the necessary namespaces.
require 'vendor/autoload.php';
use FacebookAds\Api;
use FacebookAds\Http\Exception\RequestException;
$app_id = 'your_app_id';
$app_secret = 'your_app_secret';
$access_token = 'your_access_token';
Api::init($app_id, $app_secret, $access_token);
Create an Ad Campaign
- Create a new ad campaign by sending a POST request with the necessary parameters like campaign name, objective, and status.
use FacebookAds\Object\Campaign;
use FacebookAds\Object\Fields\CampaignFields;
$campaign = new Campaign();
$campaign->setData([
CampaignFields::NAME => 'My First Campaign',
CampaignFields::OBJECTIVE => Campaign::OBJECTIVE_LINK_CLICKS,
CampaignFields::STATUS => Campaign::STATUS_PAUSED,
]);
$account_id = 'act_your_ad_account_id';
$campaign->create(['act_' . $account_id]);
Set Up an Ad Set
- Define targeting and budget within the ad set. A campaign can have one or more ad sets, each with its unique targeting and bidding strategy.
use FacebookAds\Object\AdSet;
use FacebookAds\Object\Fields\AdSetFields;
$adset = new AdSet();
$adset->setData([
AdSetFields::NAME => 'My First AdSet',
AdSetFields::CAMPAIGN_ID => $campaign->id,
AdSetFields::DAILY_BUDGET => 1000, // Budget in cents
AdSetFields::BILLING_EVENT => AdSet::BILLING_EVENT_IMPRESSIONS,
AdSetFields::OPTIMIZATION_GOAL => AdSet::OPTIMIZATION_GOAL_REACH,
AdSetFields::TARGETING => [
'geo_locations' => [
'countries' => ['US'],
],
],
AdSetFields::STATUS => AdSet::STATUS_PAUSED,
]);
$adset->create();
Create an Ad Creative
- Ad creatives can include images, video, text, and links. An ad set can include multiple creatives to test different ad presentations.
use FacebookAds\Object\AdCreative;
use FacebookAds\Object\Fields\AdCreativeFields;
$creative = new AdCreative();
$creative->setData([
AdCreativeFields::NAME => 'Sample Creative',
AdCreativeFields::TITLE => 'Ad Title Here',
AdCreativeFields::BODY => 'This is the body of the ad.',
AdCreativeFields::OBJECT_URL => 'https://www.example.com',
AdCreativeFields::IMAGE_HASH => 'your_image_hash' // Upload image to get hash
]);
$creative->create();
Launch Your Ad
- Finally, combine the ad set and creative to create an ad and activate it.
use FacebookAds\Object\Ad;
use FacebookAds\Object\Fields\AdFields;
$ad = new Ad();
$ad->setData([
AdFields::NAME => 'My First Ad',
AdFields::ADSET_ID => $adset->id,
AdFields::CREATIVE => ['creative_id' => $creative->id],
AdFields::STATUS => Ad::STATUS_PAUSED,
]);
$ad->create();
Error Handling and Testing
- Use try-catch blocks to handle exceptions gracefully. Log errors using Facebook's logging capabilities or a custom logging solution.
- Test the flow using sandbox mode to simulate data without impacting your live production data.
try {
// Your API calls here
} catch (RequestException $e) {
echo $e->getMessage();
}
By following these steps, you'll establish a baseline for creating, managing, and optimizing ads with the Facebook Marketing API using PHP. This approach allows for greater integration and automation in handling your advertising needs.