The new Google Mobile Ads SDK for Android is now included as part of Google Play services 4.0.

As an Android developer, you’re probably familiar with Google Play services, a unified platform which makes it easy to integrate Google features into your Android apps, delivered through the Play Store and updated at regular intervals. Now that AdMob is part of the package, benefits include:

The new Google Mobile Ads SDK for Android is now included as part of Google Play services 4.0.

As an Android developer, you’re probably familiar with Google Play services, a unified platform which makes it easy to integrate Google features into your Android apps, delivered through the Play Store and updated at regular intervals. Now that AdMob is part of the package, benefits include:

  • Seamless auto-updates: Changes to the Google Mobile Ads SDK for Android get pushed seamlessly to users through Google Play services. For most SDK updates you don’t need to update your apps each time it changes, saving you development time.
  • Take advantage of Google services: Implement features easily into your apps, such as Google Maps, Google Wallet and the Location API.
  • Better for users: Android users are saved the hassle of managing updates to multiple apps, because improvements can be received automatically in the background.

This new version of Google Play services supports devices running Android 2.3 and higher. We recommend updating your apps right away to make ongoing maintenance of your apps easier. Even if you develop for Android devices that don’t receive Google Play services, the Google Mobile Ads SDK is still compatible with those devices, the difference is that users won’t receive automatic updates. Also, please note, the SDK doesn’t currently support DFP, Ad Exchange or Search Ads for Mobile Apps but support is coming soon.

You can find the new SDK in the SDK Manager; follow these instructions to get it, and find the release notes here. If you have questions about it please post to the forum or check out our G+ page.

Posted by Vishay Nihalani, Product Manager, AdMob

Editor's note: repost from Google Analytics blog. --Stan Grinberg, Ads Developer Relations Team

Google AdSense is a free, simple way for website publishers to earn money by displaying targeted Google ads on their websites. Today, we’ve added the ability to access AdSense data from the Google Analytics Core Reporting API. The AdSense and Analytics integrationallows publishers to gain richer data and insights, leading to better optimized ad space and a higher return on investment.

In the past, accessing AdSense data using the Analytics Core Reporting API has been a top feature request. We’ve now added 8 new AdSense metrics to the Analytics Core Reporting API, enabling publishers to streamline their analysis.

Answering Business Questions
You can now answer the following business questions using these API queries:

Which pages on your site contribute most to your AdSense revenue?

dimensions=ga:pagePath
&metrics=ga:adsenseCTR,ga:adsenseRevenue,ga:adsenseECPM
&sort=-ga:adsenseRevenue
Test in query explorer


Which pages generate a high number of pageviews but aren't monetizing as well as other pages?
dimensions=ga:pagePath
&metrics=ga:pageviews,ga:adsenseCTR
&sort=-ga:pageviews
Test in query explorer


Which traffic sources contribute to your revenue?
dimensions=ga:sourceMedium
&metrics=ga:adsenseCTR,ga:adsenseRevenue,ga:adsenseECPM
&sort=-ga:adsenseRevenue
Test in query explorer


Reporting Automation
By accessing this data through the API, you can now automate reporting and spend more time doing analysis. You can also use the API to integrate data from multiple sites into a single dashboard, build corporate dashboards to share across the team, and use the API to integrate data into CRM tools that display AdSense Ads.

Getting Started
To learn more about the new AdSense data, take a look at our Google Analytics Dimensions and Metrics Explorer. You can also test the API with your data by building queries in the Google Analytics Query Explorer.


Busy? In that case, now’s a great time to try these Analytics API productivity tools:
  • Magic Script: A Google Spreadsheets script to automate importing Analytics data into Spreadsheets, allowing for easy data manipulation. No coding required!
  • Google Analytics superProxy: An App Engine application that reduces all the complexity of authorization.
We hope this new data will be useful, and we're looking forward to seeing what new reports developers build.

We’d like to remind you the AdWords API v201302 was deprecated on July 10th and will be sunset on November 8th, 2013. With the sunset deadline only a few weeks away, if you haven’t already migrated to v201306 or better yet v201309, please do so as soon as possible.

Make sure to review the following resources available to aid the migration: Subscribe to our forum and plus page to stay up to date with all of our important announcements. Also, feel free to contact us there with any questions related to API migration.

Starting with v201309 you’ll need to run AdHoc reports in order to retrieve stats.. If you try to retrieve “Impressions”, “Cost” and “Ctr” fields in CampaignService, for example, INVALID_FIELD_NAME will be returned. Instead, you need to retrieve “Impressions”, “Cost” and “Ctr” fields using Campaign Performance Report.

If you're not yet familiar with AdHoc reports, here are some basic facts:
  • All fields that were available with Stats objects before v201309 are available with AdHoc reports
  • You can still use the same predicates and date ranges.
    (AdHoc reports support more fields that can be included in predicates)
The table below shows you equivalent AdHoc reports for each stats object.

Stats objects Equivalent reports
AdGroupAdService.AdStats Ad Performance Report
AdGroupCriterionService.Stats Keywords for Search : Keywords Performance Report
Keywords for Display : Display Keyword Performance Report
Placements : Placement Performance Report
Topics : Display Topics Performance Report
Interests & Remarketing : Audience Performance Report
Gender : Gender Performance Report
Age Range : Age Range Performance Report

Note : It also can be retrieved with Criteria Performance Report, but it’s single attribution
AdGroupService.Stats Ad Group Performance Report
CampaignAdExtensionService.CampaignAdExtensionStats Ad Extensions Performance Report
CampaignService.CampaignStats Campaign Performance Report
FeedItemService Placeholder Feed Item Report

Note : It’s a reference. FeedItemService doesn’t have Stats object.


Also keep in mind there are differences between services and AdHoc reports as following:
  • There is no limit how many results can be retrieved with AdHoc reports. As previously announced, the AdWords API does not allow you to retrieve data with a large start index in services.
  • With AdHoc reports, stats can be segmented in a more flexible way. Please see the segmentation guide for more details.
  • Download Format options (such as CSV, XML, TSV) are available with AdHoc reports. Choose gzip enabled options (GZIPPED_CSV, GZIPPED_XML) to save network bandwidth.
  • Enumeration values for DateRange (such as YESTERDAY, LAST_7_DAYS, LAST_MONTH) are available with AdHoc reports, which lets you easily select common date ranges. You can still choose a custom date range with DateRangeType.CUSTOM_DATE.
  • Paging and OrderBy are not supported by AdHoc reports. If you require the same functionality, you need to retrieve the data using AdHoc reports first and process it locally.
Here is a Java code comparison showing the retrieval of some performance stats over the last 7 days.

AdWords API v201306 with Stats objects
// Create selector.
Selector selector = new Selector();
selector.setFields(new String[] {
  "Id", "Name", "Impressions", "Clicks", "Cost", "Ctr"});
selector.setPredicates(new Predicate[] {new Predicate("Impressions", PredicateOperator.GREATER_THAN, new String[] {"0"})});
String oneWeekAgo = new DateTime().minusDays(7).toString("yyyyMMdd");
String yesterday = new DateTime().minusDays(1).toString("yyyyMMdd");
selector.setDateRange(new DateRange(oneWeekAgo, yesterday));
Retrieving the same stats using AdHoc reports
// Create selector.
Selector selector = new Selector();
List<String> fields = selector.getFields().addAll(Lists.newArrayList(
    "Id", "Name", "Impressions", "Clicks", "Cost", "Ctr");

// Create report definition.
ReportDefinition reportDefinition = new ReportDefinition();
reportDefinition.setReportName(
    "Campaign performance report #" + System.currentTimeMillis());
reportDefinition.setDateRangeType(
    ReportDefinitionDateRangeType.LAST_7_DAYS);
reportDefinition.setReportType(
    ReportDefinitionReportType.CAMPAIGN_PERFORMANCE_REPORT);
reportDefinition.setDownloadFormat(DownloadFormat.CSV);
reportDefinition.setIncludeZeroImpressions(false);
reportDefinition.setSelector(selector);
Using AWQL you can do the same much simpler
String query = "SELECT Id, Name, Impressions, Clicks, Cost, Ctr" 
    + "FROM CAMPAIGN_PERFORMANCE_REPORT “ 
    + “WHERE Impressions > 0 DURING LAST_7_DAYS";
As always, please feel free to ask any questions on the AdWords API forum or our Google+ page.

Last year, we introduced the Ad Exchange Real-Time Bidding Optimization Series on the developer's blog with our first post on post-filtered bids.

Today, we’ll drill down into one of the filtering reasons: Auction filtered.

Last year, we introduced the Ad Exchange Real-Time Bidding Optimization Series on the developer's blog with our first post on post-filtered bids.

Today, we’ll drill down into one of the filtering reasons: Auction filtered.

We’ll revisit the definition of auction filtered bids, review the main reasons for being filtered from the auction, and the steps you can take to ensure your ads will not be filtered.

Auction Filtered: After the bid response passes the Google and publisher checks, it makes its way to the auction. However, the bid may not win the auction due to one of the following:

1. Outbid in auction
2. Bid was below the minimum threshold
3. Not allowed in private auction

1. Outbid in auction means that your bid was lower than a competitor’s bid and since AdX uses a second-price auction model, the highest bid wins the auction and pays the price of the second highest bid. One way to make sure you are bidding at a competitive price is to implement the new RTB feature for AdX, Real-time Feedback. The feature will give you feedback on auction results in near real-time, including (1) why your bid was filtered (e.g. disapproved ads, product/sensitive category exclusion, outbid in auction, etc.) and (2) what the winning bid price was (if you lost in the previous auction). We include this information in subsequent bid requests sent to your bidder. You can use this information to improve the efficacy of your own bidding by reducing the number of times you are outbid. The creative_status_code field in the proto buffer will reveal the filtering reason. For example, the creative_status_code field may be 79, meaning you were ‘outbid in auction’, whereas 80 and 81 mean your ‘bid was below the minimum threshold’ and ‘not allowed in private auction’ respectively. You can review a complete list of filtering reasons in the creative-status-codes.txt dictionary file.

2. Bid was below the minimum threshold means that your Max CPM (max_cpm_micros in your BidResponse) was lower than the publisher’s min CPM. Specifically, the bid response contained a max_cpm_micros value that was less than the publisher’s minimum_cpm_micros value. Ensure that your bidder understands the minimum_cpm_micros required by the publisher per bid request and bid at or higher than this price if you are interested in the impression, or submit an empty bid if you are not interested in the impression. The minimum_cpm_micros value is listed in the AdSlot section of the bid request. You can review more details in the realtime-bidding-proto.txt file.

3. Not allowed in private auction means that your bid is being filtered for a preferred deal or private auction impression that you were not allowed in. Using the Preferred Deals UI, view Open Offers and consider negotiating your own deal or private auction with publishers of interest.

New! RTB Dashboard is a tool designed to bring greater transparency to you, as a buyer, and help you refine your bidder to produce more efficient bidding and better results for your campaigns. With RTB Dashboard, you have the ability to review the “RTB insights” section which helps you understand which bids are being filtered out and why:

So, what can you do with the information available in ‘Insights’? Two of the most common auction loss reasons and solutions are:

  • Outplaced - use real time feedback to analyze which impressions you get outbid on and increase your bid intelligently. The bid request contains the second price cpm in micros of your account currency if your bid won the auction, or the winning bid that must be exceeded to win the auction if your ad did not win. This is only set if your bid participated in the auction.
  • Below CPM - Inspect the minimum_cpm_micros field in the bid request and ensure you’re bidding at or above this amount.

For both auction loss reasons you may want to find out more. Under the ‘Action’ column a ‘Details’ link allows you to view the auction loss count aggregated by either publisher domain or your creative ID for the specific auction loss reason.

Have questions or feedback? Reach out to your Ad Exchange account team.

Recently we announced the ability to upload offline conversions back into AdWords. This conversion import feature allows you to see how clicks on your ads led to sales made in the offline world such as over the phone or via a sales rep. This feature is now available in v201309 of the AdWords API.

We have published a new guide that explains the API implementation of this feature in detail. We have also added support and code examples for this new feature in all our client libraries.

If you have any questions about this feature 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.

As previously announced, we plan on updating the AdWords API to prevent a subset of modifications to the NetworkSetting for existing campaigns. This change affects all existing AdWords API versions.

Display-only campaigns have been evolving over time, and have developed unique features which make switching these campaigns between Display-only and other campaign types (Search-only or Search-and-Display) unreliable. Today, these modifications can unintentionally change campaign behavior (for instance, disabling certain display-specific targeting), potentially causing confusion and negatively impacting the advertiser experience. So starting 17 October 2013, we'll begin returning a TargetError.TARGET_ERROR error for such NetworkSetting changes.

If you do not make use of the NetworkSetting to change the network for existing campaigns, this change will not affect you. All other NetworkSetting modifications will continue to behave as before. The table below outlines changes possible between campaign settings:

Current setting Setting can be changed to
Display Network Only Search Network Only Search and Display Networks
Display Network Only - No No
Search Network Only No - Yes
Search and Display Networks No Yes -

As always, please feel free to ask any questions on the AdWords API forum or our Google+ page.

Today we are releasing the AdWords API v201309. This latest release introduces offline conversion import, adds new reports and also makes several Beta features available to all API users. We've also reworked the AdWords API Developers site making it more friendly and easier to navigate. Take a look and let us know what you think!

v201309 Highlights:

A complete list of changes is available in the release notes. Note, as previously described, AdWords API v201309 is the last version to support the ClientLogin authorization method.

If you are still using v201302 of the AdWords API, please note that it is being sunset on November 8, 2013. We encourage you to skip v201306 and migrate straight to v201309. If you’re using v201306, be aware it is now marked deprecated and will be sunset on Mar 31st, 2014. With this release, we have also updated the Required Minimum Functionality document to include some of the newly added features that are now required in third-party tools.

As with every new version of the AdWords API, we encourage you to carefully review all changes in the release notes and the v201309 migration guide. The updated client libraries and code examples will be published shortly. If you have any questions or need help with migration, please post on the forum or the Ads Developers Plus Page.

- The AdWords API Team

Today, we’re excited to announce the launch of a beta version of the AdMob SDK for Windows Phone 8 to help you monetize your Windows Phone 8 applications! The key features of this SDK include the ability to:
  • Create an AdMob banner view from code
  • Embed an AdMob banner directly in an XAML file
  • Show full-screen interstitial ads
  • Register for ad events such as succeeding or failing to receive an ad
This beta version of the SDK does not include the following features that are available on iOS and Android:
  • Ad Network Mediation
  • Support for DoubleClick for Publishers
  • Search Ads for Mobile Apps support
  • MRAID support
It should also be noted that Windows RT is not supported at this time.

You can get the Windows Phone 8 SDK from our downloads page, and check out the getting started guide for developer instructions. To register an ad unit, you’ll need to have upgraded to the new AdMob. Any questions can be directed to our developer forum, and be sure to stay tuned on the Google Ads Developers Plus page for news on all Google Ads developer products.

We've noticed a lot of interest in having the Google Ads APIs Python Client Library made available on PyPI, so we're happy to announce that we've recently added support for it. If you use a tool such as pip, you can now install or update to the latest version of the library with all its dependencies using one simple command, for example:

We've noticed a lot of interest in having the Google Ads APIs Python Client Library made available on PyPI, so we're happy to announce that we've recently added support for it. If you use a tool such as pip, you can now install or update to the latest version of the library with all its dependencies using one simple command, for example:

pip install [--upgrade] adspygoogle

This feature was added based on community feedback, so if you have additional feature requests or a bug to report, feel free to let us know about it by creating an issue on our issue tracker or contacting us on our Google+ page.

Help make the AdWords client libraries better by contributing to your library today! Ever wanted to see a feature implemented or fix a bug only you can recreate? Contributors share improvements, fix bugs and can even increase performance. That’s why we’ve got an easy and quick process for contributing to the client libraries.

To get involved, there’s a few simple steps. See below for an overview or scroll down for your library-specific instructions:
  1. Sign a Contributor License Agreement (CLA)
    1. For individuals
    2. For companies
  2. Create a patch
  3. Notify us of your change
  4. Check for emails from a library owner

Other things to consider are the coding standards of each library, how to create a compatible patch for the library, and the process for delivering the patch. All these items are explained in the library specific instructions below.

Instructions can be found on library-specific pages:
Following these instructions will ensure your patches are accepted in the quickest possible time.

Becoming a contributor to the AdWords API client libraries is easy and rewarding. Most of us have made changes to improve the libraries, sharing them with other users makes sense. Always ensure you sign the Contributor License Agreement before attempting to contribute. Finally, don’t forget to check out the further instructions for contributing to your library.