To run the ad delivery checks and get the failed check results, read the failed_delivery_checks
field of an ad.
For example, running delivery checks for ad 6014290603725:
use FacebookAds\Object\Ad;
use FacebookAds\Object\Fields\AdFields;
$ad = new Ad(<AD_ID>);
$ad->read(array(
AdFields::FAILED_DELIVERY_CHECKS,
));
echo $ad->{AdFields::FAILED_DELIVERY_CHECKS}.PHP_EOL;
from facebookads.adobjects.ad import Ad
ad = Ad(<AD_ID>)
ad.remote_read(fields=['failed_delivery_checks'])
curl -G \
-d 'fields=failed_delivery_checks' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.5/<AD_ID>
If all the checks have passed failed_delivery_checks
field will not be part of the response.
For example, the response for an ad with a failed invalid_custom_audiences check will be in a form of:
{ "failed_delivery_checks": [ { "summary": "Custom Audience No Longer Shared", "description": "This ad uses a custom audience that's no longer being shared with you. Please contact the person who set up the audience for more information.", "check_name": "invalid_custom_audiences", } ], "id": "6014290603725" }
The failed_delivery_checks
field is a JSON array which contains JSON objects of the failed checks.
Each failed check has the following fields:
Name | Description | Type |
---|---|---|
check_name | The name of the failed check (See Delivery Check types) | String |
summary | One line description of the error | String |
description | More detailed explanation of the error | String |
The ad delivery checks include the following checks:
check_name | Failure reason |
---|---|
page_status | Page Unpublished - This ad cannot deliver because the page it targets is not published. |
mobile_eligible | Not Eligible For Mobile - This ad will not deliver to mobile users. |
blocked_url | Blacklisted URL - This ad redirects to a suspicious URL. |
invalid_custom_audiences | One of the following: |
logged_out_ads | One of the following: |