We’ve released an update to the Ads API that provides advertisers with more flexibility when choosing how they’d like to be billed for Website Traffic campaigns.

Pay By Impressions for Link Clicks Goal (CPM Billing)

This launch introduces a new pay by option for advertisers running Website Traffic campaigns with link clicks as the campaign goal.

Specifically, we’ve introduced “Pay by impressions” - commonly known as CPM billing - as the new default “Pay by” option for Website Traffic objective campaigns using the “Link Clicks” Goal along with “Autobid” or “Maxbid” bidding strategies. Previously, advertisers were only able to be billed based on the number of link clicks their campaigns received.

In order to access this new pay by type (IMPRESSION), we recommend that developers add support for this new ‘PAY_BY’ option and set impressions as the default pay by option in your UI. This will reflect the same default setting as Twitter Ads Manager.

Key notes:

  • This feature will be rolling out to accounts over the next few weeks. Developers will need to check whether an account has access to the feature PAY_BY_IMPRESSION using GET accounts/:account_id/features.

  • Website Traffic campaigns with “Link Clicks” goal will now have two pay_by options: LINK_CLICK and IMPRESSION (new).

  • The pay_by option IMPRESSION is now supported for both LINK_CLICK and SITE_VISITS goals

We recommend building for this option now as the product is concurrently rolling out in the Ads UI. This will give you the opportunity to align with the launch over the next several weeks.

Example Request:

twurl_ads -X POST '/11/accounts/55w3kv/line_items' -d "campaign_id=hecj9&bid_amount_local_micro=10000&product_type=PROMOTED_TWEETS&placements=ALL_ON_TWITTER&objective=WEBSITE_CLICKS&goal=LINK_CLICKS&pay_by=IMPRESSION&bid_strategy=AUTO&entity_status=DRAFT" | jq

{
  "request": {
    "params": {
      "placements": [
        "ALL_ON_TWITTER"
      ],
      "bid_amount_local_micro": 10000,
      "goal": "LINK_CLICKS",
      "product_type": "PROMOTED_TWEETS",
      "bid_strategy": "TARGET",
      "objective": "WEBSITE_CLICKS",
      "entity_status": "DRAFT",
      "account_id": "55w3kv",
      "pay_by": "IMPRESSION",
      "campaign_id": "hecj9"
    }
  },
  "data": {
    "advertiser_user_id": 312226591,
    "name": null,
    "placements": [
      "ALL_ON_TWITTER"
    ],
    "start_time": null,
    "bid_amount_local_micro": 10000,
    "advertiser_domain": null,
    "target_cpa_local_micro": null,
    "raw_categories": [],
    "primary_web_event_tag": null,
    "goal": "LINK_CLICKS",
    "product_type": "PROMOTED_TWEETS",
    "end_time": null,
    "bid_strategy": "TARGET",
    "duration_in_days": null,
    "total_budget_amount_local_micro": null,
    "objective": "WEBSITE_CLICKS",
    "id": "lwlen",
    "entity_status": "DRAFT",
    "automatic_tweet_promotion": null,
    "frequency_cap": null,
    "android_app_store_identifier": null,
    "categories": [],
    "currency": "USD",
    "pay_by": "IMPRESSION",
    "created_at": "2022-03-21T21:32:32Z",
    "ios_app_store_identifier": null,
    "updated_at": "2022-03-21T21:32:32Z",
    "campaign_id": "hecj9",
    "creative_source": "MANUAL",
    "deleted": false
  }
}

To get started with Website Traffic campaigns, check out this page.

Please let us know if you have any questions.

Twitter Ads API team