Placement types and AWARENESS objective


#1

A user has created a campaign with profiles and timeslines placements according to the Twitter Ads UI.

When we synch it down into our system, the placement type is listed as ALL_ON_TWITTER on the line item.

Does that mean that the Ad Set will serve on search pages also? ALL_ON_TWITTER seems like it implicitly includes TWITTER_TIMELINE, TWITTER_SEARCH, and TWITTER_PROFILE placement types.


#2

Yes, but search results would only happen if the campaign is set up with keyword targeting. You can see in the Ads UI if you enter a keyword that a third search placement checkbox will appear.

It’s fine to use specific line item placements if you wish to avoid this potential scenario (if you add keywords and do not have search placement, you would probably get a line item validation error anyway). The valid combination of placements are returned by this endpoint: https://dev.twitter.com/ads/reference/get/line_items/placements

Thanks,

John


#3

Hi John,

My question is slightly different than the one you answered. Our user created the campaign with options TWITTER_PROFILES and TWITTER_SEARCH in the Twitter Ads UI.

Specifically, I’m wondering why the placements would be returned as ALL_ON_TWITTER from the GET line_items endpoint. In this case, the twitter UI shows TWITTER_PROFILES and TWITTER_SEARCH only, so I would have expected the Ads API to return the same set of values.

Thanks,

Chris


#4

@chris_august7: Just created an Awareness campaign via the Twitter Ads UI:

However, I see the correct placements on the line item:

$ twurl -H ads-api.twitter.com "/1/accounts/18ce54d4x5t/line_items/7kjnp"
{
  "request": {
    "params": {
      "line_item_id": "7kjnp",
      "account_id": "18ce54d4x5t"
    }
  },
  "data_type": "line_item",
  "data": {
    "bid_type": "TARGET",
    "advertiser_user_id": 756201191646691300,
    "name": "Untitled",
    "placements": [
      "TWITTER_PROFILE",
      "TWITTER_TIMELINE"
    ],
    "start_time": null,
    "bid_amount_local_micro": 1000000,
    "automatically_select_bid": false,
    "advertiser_domain": null,
    "target_cpa_local_micro": null,
    "primary_web_event_tag": null,
    "charge_by": "IMPRESSION",
    "product_type": "PROMOTED_TWEETS",
    "end_time": null,
    "bid_unit": "VIEW",
    "total_budget_amount_local_micro": null,
    "objective": "AWARENESS",
    "id": "7kjnp",
    "entity_status": "ACTIVE",
    "paused": false,
    "account_id": "18ce54d4x5t",
    "optimization": "DEFAULT",
    "categories": [],
    "currency": "USD",
    "created_at": "2017-01-28T05:44:28Z",
    "tracking_tags": [],
    "updated_at": "2017-01-28T05:44:28Z",
    "include_sentiment": "POSITIVE_ONLY",
    "campaign_id": "7c2m0",
    "creative_source": "MANUAL",
    "deleted": false
  }
}

And the campaign information:

$ twurl -H ads-api.twitter.com "/1/accounts/18ce54d4x5t/campaigns/7c2m0" | jq
{
  "request": {
    "params": {
      "campaign_id": "7c2m0",
      "account_id": "18ce54d4x5t"
    }
  },
  "data_type": "campaign",
  "data": {
    "name": "test-awareness-placement",
    "start_time": "2017-01-28T05:44:00Z",
    "reasons_not_servable": [
      "PAUSED_BY_ADVERTISER"
    ],
    "servable": false,
    "daily_budget_amount_local_micro": 1000000,
    "end_time": null,
    "funding_instrument_id": "lygyi",
    "duration_in_days": null,
    "standard_delivery": true,
    "total_budget_amount_local_micro": 2000000,
    "id": "7c2m0",
    "entity_status": "PAUSED",
    "paused": true,
    "account_id": "18ce54d4x5t",
    "frequency_cap": null,
    "currency": "USD",
    "created_at": "2017-01-28T05:44:28Z",
    "updated_at": "2017-01-28T05:44:39Z",
    "deleted": false
  }
}

Could you share the line item ID of the campaign in question so we can look into it further?


#5

Hi Juan,

One of our traffickers says that he knows of several dozen examples of this. Here is one of them.

Account = 18ce54aidoy
Campaign = 72eti

Thanks,

Chris


#6

Thanks for providing that additional information, @chris_august7.

This line is showing the correct placements:

$ twurl -H ads-api.twitter.com "/1/accounts/18ce54aidoy/line_items/78ghg"
{
  "request": {
    "params": {
      "line_item_id": "78ghg",
      "account_id": "18ce54aidoy"
    }
  },
  "data_type": "line_item",
  "data": {
    "bid_type": "TARGET",
    "advertiser_user_id": 3317472059,
    "name": {name},
    "placements": [
      "TWITTER_PROFILE",
      "TWITTER_TIMELINE"
    ],
    "start_time": null,
    "bid_amount_local_micro": 7000000,
    "automatically_select_bid": false,
    "advertiser_domain": null,
    "target_cpa_local_micro": null,
    "primary_web_event_tag": null,
    "charge_by": "IMPRESSION",
    "product_type": "PROMOTED_TWEETS",
    "end_time": null,
    "bid_unit": "VIEW",
    "total_budget_amount_local_micro": null,
    "objective": "AWARENESS",
    "id": "78ghg",
    "entity_status": "ACTIVE",
    "paused": false,
    "account_id": "18ce54aidoy",
    "optimization": "ENGAGEMENT",
    "categories": [],
    "currency": "USD",
    "created_at": "2017-01-02T20:26:56Z",
    "tracking_tags": [
      {
        "tracking_partner": "DOUBLE_CLICK",
        "tracking_tag": {tracking_tag}
      }
    ],
    "updated_at": "2017-01-31T23:11:17Z",
    "include_sentiment": "POSITIVE_ONLY",
    "campaign_id": "72eti",
    "creative_source": "MANUAL",
    "deleted": false
  }
}

This campaign was originally created using the ALL_ON_TWITTER placement. It was then replaced by TWITTER_PROFILE and TWITTER_TIMELINE at 2017-01-25 21:54:16.

We’ll dig into the specifics of this objective (AWARENESS) and whether it serves in search results and get back to you.


#7

Hi Juan,

I wonder if this issue is related to the one linked below… we are always using GET line_item with campaign Id and include_deleted = true, for completeness. We don’t synch line items using the line item ID.


#8

@chris_august7: According to our logs, the campaign was created with the ALL_ON_TWITTER placement. So when you were seeing that placement, it was correct. It later changed to TWITTER_PROFILE,TWITTER_TIMELINE.

The fact that all three placements show when making a request to the accounts/:account_id/campaign endpoint is a result of the other issue we discussed.

Still trying to follow up on the serving question.


#9

@chris_august7: Confirmed, as @JBabichJapan mentioned earlier, that if an AWARENESS campaign has ALL_ON_TWITTER placement, but no keyword targeting, the ad will not serve in search results because there are no search terms on which to match.

We provide the ALL_ON_TWITTER option because we know that keywords are sometimes added after the fact.

Hope that helps!