advertisingChannelType
displaySelect
Enabled networkSettings
Search Network
SEARCH
false
Search Networks only
Search Network with Display Select
SEARCH
true or unspecified
Search & Content networks
Display only
DISPLAY
false or unspecified
Content Network only
Shopping only
SHOPPING
false or unspecified
Search Network only

Any parameter combination other than the above when creating a new campaign or making targeting changes to existing campaigns will be rejected with an OPERATION_NOT_PERMITTED_FOR_CAMPAIGN_TYPE error.

While you can no longer create Search & Display Network campaigns, existing campaigns of this type will remain unchanged. You can identify them by their displaySelect attribute being false, while both the Search and Content Networks are enabled. These campaigns should be migrated to SNDS by setting displaySelect to true.

The advertiserChannelType and isDisplaySelect fields are also present in reporting, so you can see how your Campaigns are configured.

If you have any questions about this change or the AdWords API in general, you can post them on our developer forum. You can also follow our Google+ page for updates about the AdWords API.

Share on Twitter Share on Facebook

Share on Twitter Share on Facebook

Share on Twitter Share on Facebook

In-App Purchase Ad

3. Ad network optimization and Live CPM.
If a developer is using more than one ad network to monetize their apps, a mediation tool helps to manage them. However, these tools may not optimize for the highest revenue. To solve this, ad network optimization obtains the most up-to-date CPMs from ad networks in the AdMob mediation stack, and requests ads from the highest paying one.

Live CPM goes one step further to ensure developers earn the most money from their ad impressions. When a developer uses AdMob to monetize, they get real-time access to all of Google’s demand sources, including programmatic demand, via our integration with DoubleClick Ad Exchange. For each ad request, Live CPM compares the highest CPM a developer can get from Google’s demand sources, with the CPM they could get from other networks in their mediation stack. If a higher-paying ad is available from Google’s demand sources, it will serve that ad over lower-paying CPMs offered by the other networks. App developer iHandy Inc. began using Live CPM in February this year. Many apps' revenues increased at different rates, and certain apps achieved a 200% increase.

4. The App Developer Business Kit.
The App Developer Business Kit is an in-depth website designed to help app developers understand ways to build a successful business. For example, there are detailed chapters about building an app, different ways to earn money, and options for marketing your app. You can also check out the interviews with developers, read case studies and view market insights from AdMob surveys which give developers a head start into building apps for global users. For example, did you know that a third of smartphone gamers in China have spent money in apps to personalize characters?

Tune into Google’s GDC livestream today at 10AM PST. We have sessions for game developers all day, and the AdMob talk is from 12-12.30PM PST.

Posted by Jonathan Alferness, Product Management Director, Google
Share on Twitter Share on Facebook

Share on Twitter Share on Facebook

Location Feeds
Other Feeds
Feed.systemFeedGenerationData
Required

Defines the link between your AdWords and Places for Business accounts.
Not applicable
FeedMapping
Not applicable

AdWords maintains the feed item attribute -> placeholder field relationship for you.
Required

You maintain the feed item attribute -> placeholder field relationship.
FeedItem
Automatically managed by AdWords.
Maintained by you via the FeedItemService
CustomerFeed
Required
Not applicable
CampaignFeed
Optional

Only needed if you want more control over which businesses from your Places account are used for location extensions on a particular Campaign.
Required
AdGroupFeed
Optional
Optional
Only needed if you want more control over which businesses from your Places account are used for location extensions on a particular AdGroup.

Just as for other feed types, you can get stats for a location feed's extensions from the PLACEHOLDER_FEED_ITEM report.

This is just a quick overview of the AdWords API support for upgraded location extensions. For more information, check out our feed services guide for location extensions and the accompanying code sample in each client library (Java, Perl, PHP, Python, Ruby, .NET).

Still have questions? Feel free to visit us on the AdWords API Forum or our Google+ page.

- Josh Radcliff, AdWords API Team
Share on Twitter Share on Facebook

Share on Twitter Share on Facebook

Share on Twitter Share on Facebook

Share on Twitter Share on Facebook

Share on Twitter Share on Facebook

Share on Twitter Share on Facebook

These changes also make modifying and reusing your statements much easier. For example, when paging through result sets you can update the offset without having to alter the entire query. This makes paging quick and easy.

// Using the statement builder with getCreativesByStatement
StatementBuilder statementBuilder = new StatementBuilder()
    .Where("advertiser_id = :advertiserId")
    .OrderBy("id ASC")
    .Limit(StatementBuilder.SUGGESTED_PAGE_LIMIT)
    .AddValue("advertiserId", myAdvertiserId);

CreativePage page;
do {
  page = creativeService.getCreativesByStatement(
      statementBuilder.ToStatement());
  if(page.results != null)  {
    foreach (Creative creative in page.results) {
      Console.WriteLine("Creative ID: {0}", creative.id);
    }
  }
  statementBuilder.IncreaseOffsetBy(StatementBuilder.SUGGESTED_PAGE_LIMIT);
} while (statementBuilder.GetOffset() < page.totalResultSetSize);
Migration

If you're already using the statement builder, no immediate changes are needed. The previous functionality is still available, although it is now marked as obsolete.

The only pitfall comes with mixing functionality. If you set the statement builder's query directly, don't attempt to set parts of the query individually. Likewise, if you're building the query in parts, direct access is not allowed.

Stick with one usage or the other - mixing the two will give you an IllegalOperationException.

For more information, you can check out the out the source or examples. If you have any questions about the new statement builder features, feel free to ask us in the developer forum or on our Google+ Developers page.

Share on Twitter Share on Facebook

Share on Twitter Share on Facebook

Share on Twitter Share on Facebook


Starting in v201403, we've removed all non-bulk methods from the API, such as OrderService.getOrder and LineItemService.createLineItem. The goal of this is to encourage you to think about your applications holistically. Instead of fetching a single order, sync orders regularly using lastModifiedDateTime and instead of creating or updating a single line item, group them together, e.g. create all orders first, then line items, and then creatives instead of one at a time.

If you do need to fetch a single object, we recommend following the pattern (in Java):

  // Create a statement to only select a single
  // order by ID.
  StatementBuilder statementBuilder =
      new StatementBuilder()
          .where("id = :id")
          .orderBy("id ASC")
          .limit(1)
          .withBindVariableValue("id", orderId);

  // Get the order.
  OrderPage page = orderService.
      getOrdersByStatement(statementBuilder.toStatement());

  Order order = Iterables.getOnlyElement(
      Arrays.asList(page.getResults()));
Notice that you can easily turn this into a function if needed, and possibly implement a caching mechanism.

Creating video creatives

This launch marks our first steps into opening up the writability of video creatives. We are starting with VastRedirectCreatives, video creatives that store the VAST 2 or 3 tag URL on an external server. All other types of video creatives are still read-only for now. We will be looking into opening more externally hosted video creatives in the coming versions and please do let us know what you are looking for on our forum.

ClientLogin gets the axe

You will notice that starting in v201403, you must use OAuth2 to authenticate with the API. Using ClientLogin will result in an error from our servers. We've modified all of our client libraries to throw exceptions if you are using ClientLogin with any non-compatible version. If you need a refresher on how to use OAuth2, see a guide for Java, PHP, .NET, Python, or Ruby.

Look out, deprecation ahead

We are getting closer to the deprecation of v201206, v201204, v201203, v201201, v201111, and v201108. These versions will be turned off on April 1st. If you have not yet, please upgrade to v201403 and OAuth2 as soon as possible. As a Java developer, you will also notice that v201403 is only available in the new Java client library and the old Java library will not receive any further feature enhancements.

As always, if you have any suggestions or questions about the new version, feel free to drop us a line on our Ads Developer Google+ page.

 - , DFP API Team
Share on Twitter Share on Facebook