setLogger(new CurlLogger()); /** * Step 1 Read the AdAccount (optional) */ use FacebookAds\Object\AdAccount; use FacebookAds\Object\Fields\AdAccountFields; $account = (new AdAccount($account_id))->read(array( AdAccountFields::ID, AdAccountFields::NAME, AdAccountFields::ACCOUNT_STATUS, )); echo "\nUsing this account: "; echo $account->id."\n"; // Check the account is active if($account->{AdAccountFields::ACCOUNT_STATUS} !== 1) { throw new \Exception( 'This account is not active'); } /** * Step 2 Create the Campaign */ use FacebookAds\Object\Campaign; use FacebookAds\Object\Fields\CampaignFields; use FacebookAds\Object\Values\CampaignObjectiveValues; $campaign = $account->createCampaign( $fields = array(), $params = array( CampaignFields::NAME => 'My First Campaign', CampaignFields::OBJECTIVE => CampaignObjectiveValues::LINK_CLICKS, Campaign::STATUS_PARAM_NAME => Campaign::STATUS_PAUSED, ) ); echo "Campaign ID:" . $campaign->id . "\n"; /** * Step 3 Search Targeting */ use FacebookAds\Object\TargetingSearch; use FacebookAds\Object\Search\TargetingSearchTypes; use FacebookAds\Object\Targeting; use FacebookAds\Object\Fields\TargetingFields; $results = TargetingSearch::search( $type = TargetingSearchTypes::INTEREST, $class = null, $query = 'facebook'); // we'll take the top result for now $target = (count($results)) ? $results->current() : null; echo "Using target: ".$target->name."\n"; $targeting = new Targeting(); $targeting->{TargetingFields::GEO_LOCATIONS} = array('countries' => array('GB')); $targeting->{TargetingFields::INTERESTS} = array( array( 'id' => $target->id, 'name' => $target->name, ), ); /** * Step 4 Create the AdSet */ use FacebookAds\Object\AdSet; use FacebookAds\Object\Fields\AdSetFields; use FacebookAds\Object\Values\AdSetOptimizationGoalValues; use FacebookAds\Object\Values\AdSetBillingEventValues; use FacebookAds\Object\Values\AdSetStatusValues; $adset = $account->createAdSet( $fields = array(), $params = array( AdSetFields::NAME => 'My First AdSet', AdSetFields::CAMPAIGN_ID => 6121920447142,//$campaign->id, AdSetFields::DAILY_BUDGET => '150', AdSetFields::TARGETING => $targeting, AdSetFields::OPTIMIZATION_GOAL => AdSetOptimizationGoalValues::REACH, AdSetFields::BILLING_EVENT => AdSetBillingEventValues::IMPRESSIONS, AdSetFields::BID_AMOUNT => 100, AdSetFields::START_TIME => (new \DateTime("+1 week"))->format(\DateTime::ISO8601), AdSetFields::END_TIME => (new \DateTime("+2 week"))->format(\DateTime::ISO8601), AdSetFields::STATUS => AdSetStatusValues::ACTIVE, ) ); echo 'AdSet ID: '. $adset->id . "\n"; /** * Step 5 Create an AdImage */ use FacebookAds\Object\AdImage; use FacebookAds\Object\Fields\AdImageFields; $image = $account->createAdImage( array(), array( AdImageFields::FILENAME => SDK_DIR.'/test/misc/image.png', ) ); echo 'Image Hash: '.$image->hash . "\n"; /** * Step 6 Create an AdCreative */ use FacebookAds\Object\AdCreative; use FacebookAds\Object\Fields\AdCreativeFields; $creative = $account->createAdCreative( array(), array( AdCreativeFields::NAME => 'Sample Creative', AdCreativeFields::TITLE => 'Welcome to the Jungle', AdCreativeFields::BODY => 'We\'ve got fun \'n\' games', AdCreativeFields::IMAGE_HASH => $image->hash, AdCreativeFields::OBJECT_URL => 'http://www.example.com/', ) ); echo 'Creative ID: '.$creative->id . "\n"; /** * Step 7 Create an Ad */ use FacebookAds\Object\Ad; use FacebookAds\Object\Fields\AdFields; $account->createAd( array(), array( AdFields::CREATIVE => array('creative_id' => $creative->id), AdFields::NAME => 'My First Ad', AdFields::ADSET_ID => $adset->id, ) ); echo 'Ad ID:' . $ad->id . "\n";