CINXE.COM
Google Ads Developer Blog: 2017
<!DOCTYPE html> <html class='v2 list-page' dir='ltr' itemscope='' itemtype='http://schema.org/Blog' lang='en' xmlns='http://www.w3.org/1999/xhtml' xmlns:b='http://www.google.com/2005/gml/b' xmlns:data='http://www.google.com/2005/gml/data' xmlns:expr='http://www.google.com/2005/gml/expr'> <head> <link href='https://www.blogger.com/static/v1/widgets/3566091532-css_bundle_v2.css' rel='stylesheet' type='text/css'/> <title> Google Ads Developer Blog: 2017 </title> <meta content='width=device-width, height=device-height, minimum-scale=1.0, initial-scale=1.0, user-scalable=0' name='viewport'/> <meta content='IE=Edge' http-equiv='X-UA-Compatible'/> <meta content='Google Ads Developer Blog' property='og:title'/> <meta content='en_US' property='og:locale'/> <meta content='http://ads-developers.googleblog.com/2017/' property='og:url'/> <meta content='Google Ads Developer Blog' property='og:site_name'/> <!-- Twitter Card properties --> <meta content='Google Ads Developer Blog' property='og:title'/> <meta content='summary' name='twitter:card'/> <meta content='@google' name='twitter:creator'/> <link href='https://fonts.googleapis.com/css?family=Roboto:400italic,400,500,500italic,700,700italic' rel='stylesheet' type='text/css'/> <link href='https://fonts.googleapis.com/icon?family=Material+Icons' rel='stylesheet'/> <script src='https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js' type='text/javascript'></script> <script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-82055326-1', 'auto'); ga('send', 'pageview'); </script> <!-- End --> <style id='page-skin-1' type='text/css'><!-- /* <Group description="Header Color" selector="header"> <Variable name="header.background.color" description="Header Background" type="color" default="#ffffff"/> </Group> */ .header-outer { border-bottom: 1px solid #e0e0e0; background: #ffffff; } html, .Label h2, #sidebar .rss a, .BlogArchive h2, .FollowByEmail h2.title, .widget .post h2 { font-family: Roboto, sans-serif; } .plusfollowers h2.title, .post h2.title, .widget h2.title { font-family: Roboto, sans-serif; } .widget-item-control { height: 100%; } .widget.Header, #header { position: relative; height: 100%; width: 100%; } } .widget.Header .header-logo1 { float: left; margin-right: 15px; padding-right: 15px; border-right: 1px solid #ddd; } .header-title h2 { color: rgba(0,0,0,.54); display: inline-block; font-size: 40px; font-family: Roboto, sans-serif; font-weight: normal; line-height: 48px; vertical-align: top; } .header-inner { background-repeat: no-repeat; background-position: right 0px; } .post-author, .byline-author { font-size: 14px; font-weight: normal; color: #757575; color: rgba(0,0,0,.54); } .post-content .img-border { border: 1px solid rgb(235, 235, 235); padding: 4px; } .header-title a { text-decoration: none !important; } pre { border: 1px solid #bbbbbb; margin-top: 1em 0 0 0; padding: 0.99em; overflow-x: auto; overflow-y: auto; } pre, code { font-size: 9pt; background-color: #fafafa; line-height: 125%; font-family: monospace; } pre, code { color: #060; font: 13px/1.54 "courier new",courier,monospace; } .header-left .header-logo1 { width: 128px !important; } .header-desc { line-height: 20px; margin-top: 8px; } .fb-custom img, .twitter-custom img, .gplus-share img { cursor: pointer; opacity: 0.54; } .fb-custom img:hover, .twitter-custom img:hover, .gplus-share img:hover { opacity: 0.87; } .fb-like { width: 80px; } .post .share { float: right; } #twitter-share{ border: #CCC solid 1px; border-radius: 3px; background-image: -webkit-linear-gradient(top,#ffffff,#dedede); } .twitter-follow { background: url(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVVfowXWI6SI8HNCGPfnKyNRe-wyiGsM28Jazt5og63q6Ula3__QjfJ0krie-XTOtpO6IlDOtulriyGWBdin3XU7HN6VY_J5mT7lWez8I8QjoqsXHq5qmxyqePXRBJ_G-NZfaqplhFFBfg/s1600/twitter-bird.png) no-repeat left center; padding-left: 18px; font: normal normal normal 11px/18px 'Helvetica Neue',Arial,sans-serif; font-weight: bold; text-shadow: 0 1px 0 rgba(255,255,255,.5); cursor: pointer; margin-bottom: 10px; } .twitter-fb { padding-top: 2px; } .fb-follow-button { background: -webkit-linear-gradient(#4c69ba, #3b55a0); background: -moz-linear-gradient(#4c69ba, #3b55a0); background: linear-gradient(#4c69ba, #3b55a0); border-radius: 2px; height: 18px; padding: 4px 0 0 3px; width: 57px; border: #4c69ba solid 1px; } .fb-follow-button a { text-decoration: none !important; text-shadow: 0 -1px 0 #354c8c; text-align: center; white-space: nowrap; font-size: 11px; color: white; vertical-align: top; } .fb-follow-button a:visited { color: white; } .fb-follow { padding: 0px 5px 3px 0px; width: 14px; vertical-align: bottom; } .gplus-wrapper { margin-top: 3px; display: inline-block; vertical-align: top; } .twitter-custom, .gplus-share { margin-right: 12px; } .fb-follow-button{ margin: 10px auto; } --></style> <style id='template-skin-1' type='text/css'><!-- .header-outer { clear: both; } .header-inner { margin: auto; padding: 0px; } .footer-outer { background: #f5f5f5; clear: both; margin: 0; } .footer-inner { margin: auto; padding: 0px; } .footer-inner-2 { /* Account for right hand column elasticity. */ max-width: calc(100% - 248px); } .google-footer-outer { clear: both; } .cols-wrapper, .google-footer-outer, .footer-inner, .header-inner { max-width: 978px; margin-left: auto; margin-right: auto; } .cols-wrapper { margin: auto; clear: both; margin-top: 60px; margin-bottom: 60px; overflow: hidden; } .col-main-wrapper { float: left; width: 100%; } .col-main { margin-right: 278px; max-width: 660px; } .col-right { float: right; width: 248px; margin-left: -278px; } /* Tweaks for layout mode. */ body#layout .google-footer-outer { display: none; } body#layout .header-outer, body#layout .footer-outer { background: none; } body#layout .header-inner { height: initial; } body#layout .cols-wrapper { margin-top: initial; margin-bottom: initial; } --></style> <!-- start all head --> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/> <meta content='blogger' name='generator'/> <link href="//ads-developers.googleblog.com/favicon.ico" rel="icon" type="image/x-icon"> <link href='http://ads-developers.googleblog.com/2017/' rel='canonical'/> <link rel="alternate" type="application/atom+xml" title="Google Ads Developer Blog - Atom" href="http://ads-developers.googleblog.com/feeds/posts/default" /> <link rel="alternate" type="application/rss+xml" title="Google Ads Developer Blog - RSS" href="http://ads-developers.googleblog.com/feeds/posts/default?alt=rss" /> <link rel="service.post" type="application/atom+xml" title="Google Ads Developer Blog - Atom" href="https://www.blogger.com/feeds/7815614485808579332/posts/default" /> <!--Can't find substitution for tag [blog.ieCssRetrofitLinks]--> <meta content='http://ads-developers.googleblog.com/2017/' property='og:url'/> <meta content='Google Ads Developer Blog' property='og:title'/> <meta content='The official blog for information about the Google Ads, Google Ad Manager, Google Mobile Ads SDKs for AdMob and IMA SDKs, and other Google Advertising Platform developer tools.' property='og:description'/> <!-- end all head --> <base target='_self'/> <style> html { font-family: Roboto, sans-serif; -moz-osx-font-smoothing: grayscale; -webkit-font-smoothing: antialiased; } body { padding: 0; /* This ensures that the scroll bar is always present, which is needed */ /* because content render happens after page load; otherwise the header */ /* would "bounce" in-between states. */ min-height: 150%; } h2 { font-size: 16px; } h1, h2, h3, h4, h5 { line-height: 2em; } html, h4, h5, h6 { font-size: 14px; } a, a:visited { color: #4184F3; text-decoration: none; } a:focus, a:hover, a:active { text-decoration: none; } .Header { margin-top: 15px; } .Header h1 { font-size: 32px; font-weight: 300; line-height: 32px; height: 42px; } .header-inner .Header .titlewrapper { padding: 0; margin-top: 30px; } .header-inner .Header .descriptionwrapper { padding: 0; margin: 0; } .cols-wrapper { margin-top: 56px; } .header-outer, .cols-wrapper, .footer-outer, .google-footer-outer { padding: 0 60px; } .header-inner { height: 256px; position: relative; } html, .header-inner a { color: #212121; color: rgba(0,0,0,.87); } .header-inner .google-logo { display: inline-block; background-size: contain; z-index: 1; height: 46px; overflow: hidden; margin-top: 4px; margin-right: 8px; } .header-left { position: absolute; top: 50%; -webkit-transform: translateY(-50%); transform: translateY(-50%); margin-top: 12px; width: 100%; } .google-logo { margin-left: -4px; } #google-footer { position: relative; font-size: 13px; list-style: none; text-align: right; } #google-footer a { color: #444; } #google-footer ul { margin: 0; padding: 0; height: 144px; line-height: 144px; } #google-footer ul li { display: inline; } #google-footer ul li:before { color: #999; content: "\00b7"; font-weight: bold; margin: 5px; } #google-footer ul li:first-child:before { content: ''; } #google-footer .google-logo-dark { left: 0; margin-top: -16px; position: absolute; top: 50%; } /** Sitemap links. **/ .footer-inner-2 { font-size: 14px; padding-top: 42px; padding-bottom: 74px; } .footer-inner-2 .HTML h2 { color: #212121; color: rgba(0,0,0,.87); font-size: 14px; font-weight: 500; padding-left: 0; margin: 10px 0; } .footer-inner-2 .HTML ul { font-weight: normal; list-style: none; padding-left: 0; } .footer-inner-2 .HTML li { line-height: 24px; padding: 0; } .footer-inner-2 li a { color: rgba(65,132,243,.87); } /** Archive widget. **/ .BlogArchive { font-size: 13px; font-weight: normal; } .BlogArchive .widget-content { display: none; } .BlogArchive h2, .Label h2 { color: #4184F3; text-decoration: none; } .BlogArchive .hierarchy li { display: inline-block; } /* Specificity needed here to override widget CSS defaults. */ .BlogArchive #ArchiveList ul li, .BlogArchive #ArchiveList ul ul li { margin: 0; padding-left: 0; text-indent: 0; } .BlogArchive .intervalToggle { cursor: pointer; } .BlogArchive .expanded .intervalToggle .new-toggle { -ms-transform: rotate(180deg); transform: rotate(180deg); } .BlogArchive .new-toggle { float: right; padding-top: 3px; opacity: 0.87; } #ArchiveList { text-transform: uppercase; } #ArchiveList .expanded > ul:last-child { margin-bottom: 16px; } #ArchiveList .archivedate { width: 100%; } /* Months */ .BlogArchive .items { max-width: 150px; margin-left: -4px; } .BlogArchive .expanded .items { margin-bottom: 10px; overflow: hidden; } .BlogArchive .items > ul { float: left; height: 32px; } .BlogArchive .items a { padding: 0 4px; } .Label { font-size: 13px; font-weight: normal; } .sidebar-icon { display: inline-block; width: 24px; height: 24px; vertical-align: middle; margin-right: 12px; margin-top: -1px } .Label a { margin-right: 4px; } .Label .widget-content { display: none; } .FollowByEmail { font-size: 13px; font-weight: normal; } .FollowByEmail h2 { background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAALCAYAAACZIGYHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUBJREFUeNrMkSGLAlEUhb+ZB4JFi8mx2cz+ApvhRUGTcUCrNqNJDYIi+DO0GUwmQXDK2DSIoGgZcSaIjDrzwrK4ssvChj1w0733O+fdp+m6PozH4yQSCfb7Pa7r8pOi0SjJZBLP8zgej4gAIMvlMuPxmADIYrHger1+C6lUKmo+NJ/NZojb7SZDWiwWo1qtks1msW2bw+HwZdkwDHq9HvV6nel0SqvVYrvdIh6Ph3Qch+VyqRYLhQJSSjRNw7IsfN9XgGKxSLfbJZfL0e/3aTabrFYr7vc7IujLcOh8PqunrNdr0uk0pVKJVCpFJBJRgEajweVyod1uMxgM2O12BAGUgRbU8DV2JpOhVquRz+cRQii3+XxOp9NRN3jVR5LPOp1OjEYjlSL8hclkgmmabDabt4d+m+S30vkD/R/IU4ABAPTZgnZdmG/PAAAAAElFTkSuQmCC"); background-repeat: no-repeat; background-position: 0 50%; text-indent: 30px; } .FollowByEmail .widget-content { display: none; } .searchBox input { border: 1px solid #eee; color: #212121; color: rgba(0,0,0,.87); font-size: 14px; padding: 8px 8px 8px 40px; width: 164px; font-family: Roboto, sans-serif; background: url("https://www.gstatic.com/images/icons/material/system/1x/search_grey600_24dp.png") 8px center no-repeat; } .searchBox ::-webkit-input-placeholder { /* WebKit, Blink, Edge */ color: rgba(0,0,0,.54); } .searchBox :-moz-placeholder { /* Mozilla Firefox 4 to 18 */ color: #000; opacity: 0.54; } .searchBox ::-moz-placeholder { /* Mozilla Firefox 19+ */ color: #000; opacity: 0.54; } .searchBox :-ms-input-placeholder { /* Internet Explorer 10-11 */ color: #757575; } .widget-item-control { margin-top: 0px; } .section { margin: 0; padding: 0; } #sidebar-top { border: 1px solid #eee; } #sidebar-top > div { margin: 16px 0; } .widget ul { line-height: 1.6; } /*main post*/ .post { margin-bottom:30px; } #main .post .title { margin: 0; } #main .post .title a { color: #212121; color: rgba(0,0,0,.87); font-weight: normal; font-size: 24px; } #main .post .title a:hover { text-decoration:none; color:#4184F3; } .message, #main .post .post-header { margin: 0; padding: 0; } #main .post .post-header .caption, #main .post .post-header .labels-caption, #main .post .post-footer .caption, #main .post .post-footer .labels-caption { color: #444; font-weight: 500; } #main .tr-caption-container td { text-align: left; } #main .post .tr-caption { color: #757575; color: rgba(0,0,0,.54); display: block; max-width: 560px; padding-bottom: 20px; } #main .post .tr-caption-container { line-height: 24px; margin: -1px 0 0 0 !important; padding: 4px 0; text-align: left; } #main .post .post-header .published{ font-size:11px; font-weight:bold; } .post-header .publishdate { font-size: 17px; font-weight:normal; color: #757575; color: rgba(0,0,0,.54); } #main .post .post-footer{ font-size:12px; padding-bottom: 21px; } .label-footer { margin-bottom: 12px; margin-top: 12px; } .comment-img { margin-right: 16px; opacity: 0.54; vertical-align: middle; } #main .post .post-header .published { margin-bottom: 40px; margin-top: -2px; } .post .post-content { color: #212121; color: rgba(0,0,0,.87); font-size: 17px; margin: 25px 0 36px 0; line-height: 32px; } .post-body .post-content ul, .post-body .post-content ol { margin: 16px 0; padding: 0 48px; } .post-summary { display: none; } /* Another old-style caption. */ .post-content div i, .post-content div + i { font-size: 14px; font-style: normal; color: #757575; color: rgba(0,0,0,.54); display: block; line-height: 24px; margin-bottom: 16px; text-align: left; } /* Another old-style caption (with link) */ .post-content a > i { color: #4184F3 !important; } /* Old-style captions for images. */ .post-content .separator + div:not(.separator) { margin-top: -16px; } /* Capture section headers. */ .post-content br + br + b, .post-content .space + .space + b, .post-content .separator + b { display: inline-block; margin-bottom: 8px; margin-top: 24px; } .post-content li { line-height: 32px; } /* Override all post images/videos to left align. */ .post-content .separator, .post-content > div { text-align: left; } .post-content .separator > a, .post-content .separator > span { margin-left: 0 !important; } /*.post-content img { max-width: 100%; height: auto; width: auto; }*/ .post-content .tr-caption-container img { margin-bottom: 12px; } .post-content iframe, .post-content embed { max-width: 100%; } .post-content .carousel-container { margin-bottom: 48px; } #main .post-content b { font-weight: 500; } /* These are the main paragraph spacing tweaks. */ #main .post-content br { content: ' '; display: block; padding: 4px; } .post-content .space { display: block; height: 8px; } .post-content iframe + .space, .post-content iframe + br { padding: 0 !important; } #main .post .jump-link { margin-bottom:10px; } .post-content img, .post-content iframe { margin: 30px 0 20px 0; } .post-content > img:first-child, .post-content > iframe:first-child { margin-top: 0; } .col-right .section { padding: 0 16px; } #aside { background:#fff; border:1px solid #eee; border-top: 0; } #aside .widget { margin:0; } #aside .widget h2, #ArchiveList .toggle + a.post-count-link { color: #212121; color: rgba(0,0,0,.87); font-weight: 400 !important; margin: 0; } #ArchiveList .toggle { float: right; } #ArchiveList .toggle .material-icons { padding-top: 4px; } #sidebar .tab { cursor: pointer; } #sidebar .tab .arrow { display: inline-block; float: right; } #sidebar .tab .icon { display: inline-block; vertical-align: top; height: 24px; width: 24px; margin-right: 13px; margin-left: -1px; margin-top: 1px; color: #757575; color: rgba(0,0,0,.54); } #sidebar .widget-content > :first-child { padding-top: 8px; } #sidebar .active .tab .arrow { -ms-transform: rotate(180deg); transform: rotate(180deg); } #sidebar .arrow { color: #757575; color: rgba(0,0,0,.54); } #sidebar .widget h2 { font-size: 14px; font-weight: normal; } #sidebar .Label h2, #sidebar .BlogArchive h2 { display: inline-block; } .HTML .feed-title { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAX5JREFUeNqsVDGSgkAQHL2rIiIikohIc/EBRkbwAIwuwgfwAXiAD9AHSI7kEkECRCb6AIyINDLx7K0aa6kT7uq0q7YYtnZ7umdnt7darXbr9Zpegeu61DNNc0dvwCcH4/GYJpMJnc9nOhwOVJbl/4hAAokMECZJQtvt9k+kH7qufyEYDAakqqqYxFdRFBqNRmTbNg2HQ0rTlK7XayvR0xqBdDqdkuM4dE/0ULhYLOh4PHYrknG5XGi/31MYhuL/nkwonM1mlGUZ1XXdrsiyLGEDhY7juJEZ1u5tIixDGdYhmYw+B7CAzPP5nDabjdgIAgCksMX1832/3drtdqPT6SQWapomiGEFNkDEdpDMMAzK81ys/7XYy+XyoQgq2WoURSIJ2iIIgp/WZCCTvFm2wgeAU31aI3Q2GhIDMeB53qPYPIcm5VrxXIOIOxsDMStjVawAc1VViRgN22lNBiuQN3GR+SY07hpOoStmFQAKXRRFY93bnpG+fONfedi+BRgAbkS8Fxp7QQIAAAAASUVORK5CYII="); background-repeat: no-repeat; background-position: 0 50%; text-indent: 30px; } #sidebar .widget .BlogArchive { padding-bottom: 8px; } #sidebar .widget { border-bottom: 1px solid #eee; box-shadow: 0px 1px 0 white; margin-bottom: 0; padding: 14px 0; min-height: 20px; } #sidebar .widget:last-child { border-bottom: none; box-shadow: none; margin-bottom: 0; } #sidebar ul { margin: 0; padding: 0; } #sidebar ul li { list-style:none; padding:0; } #sidebar ul li a { line-height: 32px; } #sidebar .archive { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAYCAYAAADzoH0MAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAE1JREFUeNpiNDY23s9AAWBioBCwYBM8c+YMVsUmJibEGYBNMS5DaeMFfDYSZQA2v9I3FrB5AZeriI4FmnrBccCT8mhmGs1MwyAzAQQYAKEWG9zm9QFEAAAAAElFTkSuQmCC"); height: 24px; line-height: 24px; padding-left: 30px; } #sidebar .labels { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUxJREFUeNpiNDY23s9AAMycOfM7UF05kHkZmzwTMkdSUhKrIcXFxZy3bt3qBjIN8RrS09PDsHnzZjCNDr58+cKQlpbGDjSoHcg1w2oIyAUODg5gARCNzUVIBrUCuVYYhjx//pzhwIEDYAEQDeJjA1CDWIAGNQK59jBxRuSABbkAlwHIgIeHh2HWrFn/1NTU2oDcvSgBS4wBSC5iArqoCsj1YGIgEyAZVMoEchqlBjEB/cZAiUHg2AEGznpKDAImxOeM////B4VLKtBvEUCngZ1ILKivr3/u6+ubBzJAGZQ9gC5aQoqLgAY8BhkAZL4BuQQkxgXE34A4BuiiZEIuAhrwEGhAEZD5DpzYoIaA2UAM4kQADUrHZRDUgAIg8wO2XAwzbQXQa5OweQ1owB10AyA6gS7BgX1u3ry5397eHow3bdo0EyjGi00tQIABANPgyAH1q1eaAAAAAElFTkSuQmCC"); height: 20px; line-height: 20px; padding-left: 30px; } #sidebar .rss a { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAX5JREFUeNqsVDGSgkAQHL2rIiIikohIc/EBRkbwAIwuwgfwAXiAD9AHSI7kEkECRCb6AIyINDLx7K0aa6kT7uq0q7YYtnZ7umdnt7darXbr9Zpegeu61DNNc0dvwCcH4/GYJpMJnc9nOhwOVJbl/4hAAokMECZJQtvt9k+kH7qufyEYDAakqqqYxFdRFBqNRmTbNg2HQ0rTlK7XayvR0xqBdDqdkuM4dE/0ULhYLOh4PHYrknG5XGi/31MYhuL/nkwonM1mlGUZ1XXdrsiyLGEDhY7juJEZ1u5tIixDGdYhmYw+B7CAzPP5nDabjdgIAgCksMX1832/3drtdqPT6SQWapomiGEFNkDEdpDMMAzK81ys/7XYy+XyoQgq2WoURSIJ2iIIgp/WZCCTvFm2wgeAU31aI3Q2GhIDMeB53qPYPIcm5VrxXIOIOxsDMStjVawAc1VViRgN22lNBiuQN3GR+SY07hpOoStmFQAKXRRFY93bnpG+fONfedi+BRgAbkS8Fxp7QQIAAAAASUVORK5CYII="); } #sidebar .subscription a { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAALCAYAAACZIGYHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUBJREFUeNrMkSGLAlEUhb+ZB4JFi8mx2cz+ApvhRUGTcUCrNqNJDYIi+DO0GUwmQXDK2DSIoGgZcSaIjDrzwrK4ssvChj1w0733O+fdp+m6PozH4yQSCfb7Pa7r8pOi0SjJZBLP8zgej4gAIMvlMuPxmADIYrHger1+C6lUKmo+NJ/NZojb7SZDWiwWo1qtks1msW2bw+HwZdkwDHq9HvV6nel0SqvVYrvdIh6Ph3Qch+VyqRYLhQJSSjRNw7IsfN9XgGKxSLfbJZfL0e/3aTabrFYr7vc7IujLcOh8PqunrNdr0uk0pVKJVCpFJBJRgEajweVyod1uMxgM2O12BAGUgRbU8DV2JpOhVquRz+cRQii3+XxOp9NRN3jVR5LPOp1OjEYjlSL8hclkgmmabDabt4d+m+S30vkD/R/IU4ABAPTZgnZdmG/PAAAAAElFTkSuQmCC"); } #sidebar-bottom { background: #f5f5f5; border-top:1px solid #eee; } #sidebar-bottom .widget { border-bottom: 1px solid #e0e0e0; padding: 15px 0; /*text-align: center;*/ } #sidebar-bottom > div:last-child { border-bottom: 0; } #sidebar-bottom .text { line-height: 20px; } /* Home, forward, and backward pagination. */ .blog-pager { border-top : 1px #e0e0e0 solid; padding-top: 10px; margin-top: 15px; text-align: right !important; } #blog-pager { margin-botom: 0; margin-top: -14px; padding: 16px 0 0 0; } #blog-pager a { display: inline-block; } .blog-pager i.disabled { opacity: 0.2 !important; } .blog-pager i { color: black; margin-left: 16px; opacity: 0.54; } .blog-pager i:hover, .blog-pager i:active { opacity: 0.87; } #blog-pager-older-link, #blog-pager-newer-link { float: none; } .gplus-profile { background-color: #fafafa; border: 1px solid #eee; overflow: hidden; width: 212px; } .gplus-profile-inner { margin-left: -1px; margin-top: -1px; } /* Sidebar follow buttons. */ .followgooglewrapper { padding: 12px 0 0 0; } .loading { visibility: hidden; } .detail-page .post-footer .cmt_iframe_holder { padding-top: 40px !important; } /** Desktop **/ @media (max-width: 900px) { .col-right { display: none; } .col-main { margin-right: 0; min-width: initial; } .footer-outer { display: none; } .cols-wrapper { min-width: initial; } .google-footer-outer { background-color: #f5f5f5; } } /** Tablet **/ @media (max-width: 712px) { .header-outer, .cols-wrapper, .footer-outer, .google-footer-outer { padding: 0 40px; } } /* An extra breakpoint accommodating for long blog titles. */ @media (max-width: 600px) { .header-left { height: 100%; top: inherit; margin-top: 0; -webkit-transform: initial; transform: initial; } .header-title { margin-top: 18px; } .header-inner .google-logo { height: 40px; margin-top: 3px; } .header-inner .google-logo img { height: 42px; } .header-title h2 { font-size: 32px; line-height: 40px; } .header-desc { bottom: 24px; position: absolute; } } /** Mobile/small desktop window; also landscape. **/ @media (max-width: 480px), (max-height: 480px) { .header-outer, .cols-wrapper, .footer-outer, .google-footer-outer { padding: 0 16px; } .cols-wrapper { margin-top: 0; } .post-header .publishdate, .post .post-content { font-size: 16px; } .post .post-content { line-height: 28px; margin-bottom: 30px; } .post { margin-top: 30px; } .byline-author { display: block; font-size: 12px; line-height: 24px; margin-top: 6px; } #main .post .title a { font-weight: 500; color: #4c4c4c; color: rgba(0,0,0,.70); } #main .post .post-header { padding-bottom: 12px; } #main .post .post-header .published { margin-bottom: -8px; margin-top: 3px; } .post .read-more { display: block; margin-top: 14px; } .post .tr-caption { font-size: 12px; } #main .post .title a { font-size: 20px; line-height: 30px; } .post-content iframe { /* iframe won't keep aspect ratio when scaled down. */ max-height: 240px; } .post-content .separator img, .post-content .tr-caption-container img, .post-content iframe { margin-left: -16px; max-width: inherit; width: calc(100% + 32px); } .post-content table, .post-content td { width: 100%; } #blog-pager { margin: 0; padding: 16px 0; } /** List page tweaks. **/ .list-page .post-original { display: none; } .list-page .post-summary { display: block; } .list-page .comment-container { display: none; } .list-page #blog-pager { padding-top: 0; border: 0; margin-top: -8px; } .list-page .label-footer { display: none; } .list-page #main .post .post-footer { border-bottom: 1px solid #eee; margin: -16px 0 0 0; padding: 0 0 20px 0; } .list-page .post .share { display: none; } /** Detail page tweaks. **/ .detail-page .post-footer .cmt_iframe_holder { padding-top: 32px !important; } .detail-page .label-footer { margin-bottom: 0; } .detail-page #main .post .post-footer { padding-bottom: 0; } .detail-page #comments { display: none; } } [data-about-pullquote], [data-is-preview], [data-about-syndication] { display: none; } </style> <noscript> <style> .loading { visibility: visible }</style> </noscript> <!-- Google tag (gtag.js) --> <script async='true' src='https://www.googletagmanager.com/gtag/js?id=G-E4MSGF2SF9'></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-E4MSGF2SF9'); </script> <link href='https://www.blogger.com/dyn-css/authorization.css?targetBlogID=7815614485808579332&zx=e353f5ee-599a-48a0-be11-db3b2877c89f' media='none' onload='if(media!='all')media='all'' rel='stylesheet'/><noscript><link href='https://www.blogger.com/dyn-css/authorization.css?targetBlogID=7815614485808579332&zx=e353f5ee-599a-48a0-be11-db3b2877c89f' rel='stylesheet'/></noscript> <meta name='google-adsense-platform-account' content='ca-host-pub-1556223355139109'/> <meta name='google-adsense-platform-domain' content='blogspot.com'/> </head> <body> <script type='text/javascript'> //<![CDATA[ var axel = Math.random() + ""; var a = axel * 10000000000000; document.write('<iframe src="https://2542116.fls.doubleclick.net/activityi;src=2542116;type=gblog;cat=googl0;ord=ord=' + a + '?" width="1" height="1" frameborder="0" style="display:none"></iframe>'); //]]> </script> <noscript> <img alt='' height='1' src='https://ad.doubleclick.net/ddm/activity/src=2542116;type=gblog;cat=googl0;ord=1?' width='1'/> </noscript> <!-- Header --> <div class='header-outer'> <div class='header-inner'> <div class='section' id='header'><div class='widget Header' data-version='1' id='Header1'> <div class='header-left'> <div class='header-title'> <a class='google-logo' href='http://ads-developers.googleblog.com/'> <img height='50' src='https://www.gstatic.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png'/> </a> <a href='/.'> <h2> Ads Developer Blog </h2> </a> </div> <div class='header-desc'> The official blog for information about the Google Ads, Google Ad Manager, Google Mobile Ads SDKs for AdMob and IMA SDKs, and other Google Advertising Platform developer tools. </div> </div> </div></div> </div> </div> <!-- all content wrapper start --> <div class='cols-wrapper loading'> <div class='col-main-wrapper'> <div class='col-main'> <div class='section' id='main'><div class='widget Blog' data-version='1' id='Blog1'> <div class='post' data-id='5892417977658812481' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='http://ads-developers.googleblog.com/2017/12/invalid-inserted-products-no-longer.html' itemprop='url' title='Invalid inserted products no longer result in immediate errors'> Invalid inserted products no longer result in immediate errors </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Thursday, December 21, 2017 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <div dir="ltr" style="text-align: left;" trbidi="on"> In July, there was a change in how the <a href="https://developers.google.com/shopping-content/v2/quickstart">Content API for Shopping</a> responds when inserting products that contain validation errors due to work related to <a href="https://support.google.com/merchants/answer/7503577">advanced feed management</a>.<br /><br /> <font size="4">What changed?</font><br /> Here are the changes in behavior when inserting product information that contains validation errors and would result in an invalid product:<br /><br /> <table style="border-collapse: collapse; border: none; width=100%;"> <tbody> <tr style="background-color: #6199df; border-bottom: solid #4d90fe 1px; border-left: solid #4d90fe 1px; border-right: solid #4d90fe 1px; border-top: solid #4d90fe 1px; height: 0px; vertical-align: top;"> <th style="border-bottom: solid #4d90fe 1px; border-left: solid #4d90fe 1px; border-right: solid #4d90fe 1px; border-top: solid #4d90fe 1px; padding: 7px 7px 7px 7px;"><span style="color: white;"></span> </th> <th style="border-bottom: solid #4d90fe 1px; border-left: solid #4d90fe 1px; border-right: solid #4d90fe 1px; border-top: solid #4d90fe 1px; padding: 7px 7px 7px 7px;"><span style="color: white;">Before</span> </th> <th style="border-bottom: solid #4d90fe 1px; border-left: solid #4d90fe 1px; border-right: solid #4d90fe 1px; border-top: solid #4d90fe 1px; padding: 7px 7px 7px 7px;"><span style="color: white;">After</span> </th> </th> </tr> <tr> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">Inserting new product</td> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">Error (inserted)</td> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">Success (inserted)</td> </tr> <tr> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">Updating invalid product</td> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">Error (inserted)</td> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">Success (inserted)</td> </tr> <tr> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">Updating valid product</td> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">Error (not inserted)</td> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">Error (not inserted)</td> </tr> </tr> </tbody> </table> <br /> That is, before the Content API would return an error whenever the new product information contained validation errors. Now, an error is returned only if the product information cannot be updated because it would invalidate the currently valid product.<br /><br /> <b>Note</b>: With this change, the Content API now returns an error response to product insertion only when the returned error response contains the <a href="https://developers.google.com/shopping-content/v2/how-tos/common-errors#not_inserted"><code>not_inserted</code></a> error. Since this error is now redundant, we plan to remove it in the future.<br /><br /> <font size="4">Why has this behavior changed?</font><br /> With the new advanced feed management features, the products inserted via the Content API may be augmented with information from associated supplemental feeds. This means that a product that would normally be invalid from just the information provided by the Content API may become valid when the information is combined with supplemental feeds to produce the final version of a product.<br /><br /> For example, suppose you submit product information via the Content API that lacks needed <a href="https://support.google.com/merchants/answer/6324461">GTIN</a> information. You then submit the GTIN information for your products separately via a supplemental feed that is connected to the Content API feed in Merchant Center. The products inserted by the Content API are not valid products due to the lack of GTIN information, but once the GTIN information from the supplemental feed is added, the resulting products are valid.<br /><br /> <font size="4">What do I need to do?</font><br /> If you depend on error responses from <code>Products.insert</code> to detect validation issues, then you should instead also check your Content API feed for validation issues by using either <a href="https://developers.google.com/shopping-content/v2/reference/v2/productstatuses">Productstatuses</a> or <a href="https://developers.google.com/shopping-content/v2/reference/v2/accountstatuses">Accountstatuses</a>. This will catch products that were inserted with invalid information and have not been made valid after insertion via supplemental feeds.<br /><br /> <b>Note</b>: If you are using <code>Productstatuses.list</code> to check all the products in a given account, you'll need to set the <code>includeInvalidInsertedItems</code> parameter to return products with validation errors.<br /><br /> If you have any questions or feedback about this change or any other questions about the Content API for Shopping, please let us know on the <a href="https://groups.google.com/forum/#!forum/google-content-api-for-shopping">forum</a>.<br /> <span class="byline-author"><a href="https://plus.google.com/110017903700682803890"><img height="40" src="https://lh3.googleusercontent.com/-RAinpujspU4/AAAAAAAAAAI/AAAAAAAAABU/TNcLnP-c4ok/s60-p-rw-no/photo.jpg" style="vertical-align:middle; border:none;" width="40"></a> - <a href="https://plus.google.com/110017903700682803890" rel="author">Stevie Strickland</a>, Content API for Shopping Team</span> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <div dir="ltr" style="text-align: left;" trbidi="on"> In July, there was a change in how the <a href="https://developers.google.com/shopping-content/v2/quickstart">Content API for Shopping</a> responds when inserting products that contain validation errors due to work related to <a href="https://support.google.com/merchants/answer/7503577">advanced feed management</a>.<br /><br /> <font size="4">What changed?</font><br /> Here are the changes in behavior when inserting product information that contains validation errors and would result in an invalid product:<br /><br /> <table style="border-collapse: collapse; border: none; width=100%;"> <tbody> <tr style="background-color: #6199df; border-bottom: solid #4d90fe 1px; border-left: solid #4d90fe 1px; border-right: solid #4d90fe 1px; border-top: solid #4d90fe 1px; height: 0px; vertical-align: top;"> <th style="border-bottom: solid #4d90fe 1px; border-left: solid #4d90fe 1px; border-right: solid #4d90fe 1px; border-top: solid #4d90fe 1px; padding: 7px 7px 7px 7px;"><span style="color: white;"></span> </th> <th style="border-bottom: solid #4d90fe 1px; border-left: solid #4d90fe 1px; border-right: solid #4d90fe 1px; border-top: solid #4d90fe 1px; padding: 7px 7px 7px 7px;"><span style="color: white;">Before</span> </th> <th style="border-bottom: solid #4d90fe 1px; border-left: solid #4d90fe 1px; border-right: solid #4d90fe 1px; border-top: solid #4d90fe 1px; padding: 7px 7px 7px 7px;"><span style="color: white;">After</span> </th> </th> </tr> <tr> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">Inserting new product</td> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">Error (inserted)</td> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">Success (inserted)</td> </tr> <tr> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">Updating invalid product</td> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">Error (inserted)</td> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">Success (inserted)</td> </tr> <tr> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">Updating valid product</td> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">Error (not inserted)</td> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">Error (not inserted)</td> </tr> </tr> </tbody> </table> <br /> That is, before the Content API would return an error whenever the new product information contained validation errors. Now, an error is returned only if the product information cannot be updated because it would invalidate the currently valid product.<br /><br /> <b>Note</b>: With this change, the Content API now returns an error response to product insertion only when the returned error response contains the <a href="https://developers.google.com/shopping-content/v2/how-tos/common-errors#not_inserted"><code>not_inserted</code></a> error. Since this error is now redundant, we plan to remove it in the future.<br /><br /> <font size="4">Why has this behavior changed?</font><br /> With the new advanced feed management features, the products inserted via the Content API may be augmented with information from associated supplemental feeds. This means that a product that would normally be invalid from just the information provided by the Content API may become valid when the information is combined with supplemental feeds to produce the final version of a product.<br /><br /> For example, suppose you submit product information via the Content API that lacks needed <a href="https://support.google.com/merchants/answer/6324461">GTIN</a> information. You then submit the GTIN information for your products separately via a supplemental feed that is connected to the Content API feed in Merchant Center. The products inserted by the Content API are not valid products due to the lack of GTIN information, but once the GTIN information from the supplemental feed is added, the resulting products are valid.<br /><br /> <font size="4">What do I need to do?</font><br /> If you depend on error responses from <code>Products.insert</code> to detect validation issues, then you should instead also check your Content API feed for validation issues by using either <a href="https://developers.google.com/shopping-content/v2/reference/v2/productstatuses">Productstatuses</a> or <a href="https://developers.google.com/shopping-content/v2/reference/v2/accountstatuses">Accountstatuses</a>. This will catch products that were inserted with invalid information and have not been made valid after insertion via supplemental feeds.<br /><br /> <b>Note</b>: If you are using <code>Productstatuses.list</code> to check all the products in a given account, you'll need to set the <code>includeInvalidInsertedItems</code> parameter to return products with validation errors.<br /><br /> If you have any questions or feedback about this change or any other questions about the Content API for Shopping, please let us know on the <a href="https://groups.google.com/forum/#!forum/google-content-api-for-shopping">forum</a>.<br /> <span class="byline-author"><a href="https://plus.google.com/110017903700682803890"><img height="40" src="https://lh3.googleusercontent.com/-RAinpujspU4/AAAAAAAAAAI/AAAAAAAAABU/TNcLnP-c4ok/s60-p-rw-no/photo.jpg" style="vertical-align:middle; border:none;" width="40"></a> - <a href="https://plus.google.com/110017903700682803890" rel="author">Stevie Strickland</a>, Content API for Shopping Team</span> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Google Ads Developer Blog:Invalid inserted products no longer result in immediate errors&url=http://ads-developers.googleblog.com/2017/12/invalid-inserted-products-no-longer.html&via=google'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=http://ads-developers.googleblog.com/2017/12/invalid-inserted-products-no-longer.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='http://ads-developers.googleblog.com/2017/12/invalid-inserted-products-no-longer.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='http://ads-developers.googleblog.com/search/label/content_api' rel='tag'> content_api </a> </span> </div> </div> </div> <div class='post' data-id='2750641561483103606' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='http://ads-developers.googleblog.com/2017/12/changes-to-autoplay-in-safari-11-for.html' itemprop='url' title='Changes to autoplay in Safari 11 for desktop'> Changes to autoplay in Safari 11 for desktop </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Wednesday, December 13, 2017 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <p> <a href="https://www.apple.com/macos/high-sierra-preview/">MacOS High Sierra</a> includes a new version of Safari, Safari 11. This new version by default will remove support for auto-playing videos unless they are muted. If your desktop site currently autoplays unmuted video with the IMA SDK, your users will see the first frame of the ad, but the ad will not play. To resolve this, you can either change your implementation to click-to-play, or attempt to autoplay and revert to click-to-play if that fails. We've also added a new error that will fire if the SDK is asked to autoplay an ad but is prevented from doing so by the browser. Continue reading for more info on these solutions. </p> <h2>Click-to-play</h2> <p> The simple, advanced, and playlist <a href="https://github.com/googleads/googleads-ima-html5">IMA SDK samples</a> use this click-to-play functionality. In short, you add a play button to your UI, and render that play button on page load. Your code should then delay calls to <code><a href="https://developers.google.com/interactive-media-ads/docs/sdks/html5/v3/apis#ima.AdDisplayContainer.initialize">adDisplayContainer.initialize()</a></code>, <code><a href="https://developers.google.com/interactive-media-ads/docs/sdks/html5/v3/apis#ima.AdsManager.init">adsManager.init()</a></code> and <code><a href="https://developers.google.com/interactive-media-ads/docs/sdks/html5/v3/apis#ima.AdsManager.start">adsManager.start()</a></code> until the user clicks that play button. <h2>Attempt to autoplay</h2> <p> We've added a new sample to our GitHub repo, <a href="https://github.com/googleads/googleads-ima-html5/tree/master/attempt_to_autoplay">Attempt to Autoplay</a>. This sample will autoplay ads if allowed, and if not, will follow the above click-to-play workflow. The sample starts by attempting to autoplay the content video. If autoplay succeeds, it pauses the content to play a pre-roll. This happens in an instant, so the users will not see any content actually play before the ads. If this autoplay attempt fails, the sample renders a play button and waits for the user to click that button to initialize the ad display container and play ads. </p> <h2>New error for failed autoplay</h2> <p> We've added <code>AdError.ErrorCode.AUTOPLAY_DISALLOWED </code>which the SDK will fire if it is asked to autoplay an ad but is prevented from doing so by the browser. You should not see this error if you've properly implemented one of the solutions above. This error is wrapped in a VIDEO_PLAY_ERROR; you can look for it as follows: </p> <pre class="prettyprint">onAdError(adErrorEvent) { if (adErrorEvent.getError().getInnerError().getErrorCode() == google.ima.AdError.ErrorCode.AUTOPLAY_DISALLOWED) { // The browser prevented the SDK from autoplaying an ad. } } </pre> <p> If you have any questions, feel free to reach out to us on our <a href="https://groups.google.com/group/ima-sdk">support forum</a>. </p> <span class="byline-author"><a href="https://plus.google.com/+ShawnBusolits/"><img height="20" src="https://lh4.googleusercontent.com/-C7Z3JfzZb78/UZUDn8Yr34I/AAAAAAAAZQ4/YFq-aZ_rgNw/w640-h960-no/profile.jpg" style="vertical-align:middle; border:none;" width="20"></a> - <a href="https://plus.google.com/+ShawnBusolits/" rel="author">Shawn Busolits</a>, IMA SDK Team</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <p> <a href="https://www.apple.com/macos/high-sierra-preview/">MacOS High Sierra</a> includes a new version of Safari, Safari 11. This new version by default will remove support for auto-playing videos unless they are muted. If your desktop site currently autoplays unmuted video with the IMA SDK, your users will see the first frame of the ad, but the ad will not play. To resolve this, you can either change your implementation to click-to-play, or attempt to autoplay and revert to click-to-play if that fails. We've also added a new error that will fire if the SDK is asked to autoplay an ad but is prevented from doing so by the browser. Continue reading for more info on these solutions. </p> <h2>Click-to-play</h2> <p> The simple, advanced, and playlist <a href="https://github.com/googleads/googleads-ima-html5">IMA SDK samples</a> use this click-to-play functionality. In short, you add a play button to your UI, and render that play button on page load. Your code should then delay calls to <code><a href="https://developers.google.com/interactive-media-ads/docs/sdks/html5/v3/apis#ima.AdDisplayContainer.initialize">adDisplayContainer.initialize()</a></code>, <code><a href="https://developers.google.com/interactive-media-ads/docs/sdks/html5/v3/apis#ima.AdsManager.init">adsManager.init()</a></code> and <code><a href="https://developers.google.com/interactive-media-ads/docs/sdks/html5/v3/apis#ima.AdsManager.start">adsManager.start()</a></code> until the user clicks that play button. <h2>Attempt to autoplay</h2> <p> We've added a new sample to our GitHub repo, <a href="https://github.com/googleads/googleads-ima-html5/tree/master/attempt_to_autoplay">Attempt to Autoplay</a>. This sample will autoplay ads if allowed, and if not, will follow the above click-to-play workflow. The sample starts by attempting to autoplay the content video. If autoplay succeeds, it pauses the content to play a pre-roll. This happens in an instant, so the users will not see any content actually play before the ads. If this autoplay attempt fails, the sample renders a play button and waits for the user to click that button to initialize the ad display container and play ads. </p> <h2>New error for failed autoplay</h2> <p> We've added <code>AdError.ErrorCode.AUTOPLAY_DISALLOWED </code>which the SDK will fire if it is asked to autoplay an ad but is prevented from doing so by the browser. You should not see this error if you've properly implemented one of the solutions above. This error is wrapped in a VIDEO_PLAY_ERROR; you can look for it as follows: </p> <pre class="prettyprint">onAdError(adErrorEvent) { if (adErrorEvent.getError().getInnerError().getErrorCode() == google.ima.AdError.ErrorCode.AUTOPLAY_DISALLOWED) { // The browser prevented the SDK from autoplaying an ad. } } </pre> <p> If you have any questions, feel free to reach out to us on our <a href="https://groups.google.com/group/ima-sdk">support forum</a>. </p> <span class="byline-author"><a href="https://plus.google.com/+ShawnBusolits/"><img height="20" src="https://lh4.googleusercontent.com/-C7Z3JfzZb78/UZUDn8Yr34I/AAAAAAAAZQ4/YFq-aZ_rgNw/w640-h960-no/profile.jpg" style="vertical-align:middle; border:none;" width="20"></a> - <a href="https://plus.google.com/+ShawnBusolits/" rel="author">Shawn Busolits</a>, IMA SDK Team</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Google Ads Developer Blog:Changes to autoplay in Safari 11 for desktop&url=http://ads-developers.googleblog.com/2017/12/changes-to-autoplay-in-safari-11-for.html&via=google'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=http://ads-developers.googleblog.com/2017/12/changes-to-autoplay-in-safari-11-for.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='http://ads-developers.googleblog.com/2017/12/changes-to-autoplay-in-safari-11-for.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='http://ads-developers.googleblog.com/search/label/ima_html5' rel='tag'> ima_html5 </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/ima_sdk' rel='tag'> ima_sdk </a> </span> </div> </div> </div> <div class='post' data-id='2366850004479729126' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='http://ads-developers.googleblog.com/2017/12/upcoming-changes-to-adwords-oauth-scope.html' itemprop='url' title='Upcoming changes to AdWords OAuth Scope'> Upcoming changes to AdWords OAuth Scope </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Monday, December 11, 2017 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <div dir="ltr" style="text-align: left;" trbidi="on"> We are making the following changes to AdWords OAuth Scopes during the week of <b>January 8, 2018</b>.<br /><br /> <font size="4">Invalid OAuth scopes will no longer be supported</font><br /> One mistake that developers make when obtaining an OAuth2 access or refresh token for AdWords API is to use the service URL prefix (e.g. <a href="https://adwords.google.com/api/adwords/cm/v201708">https://adwords.google.com/api/adwords/cm/v201708</a>, <a href="https://adwords.google.com/api/adwords/reportdownload/v201708">https://adwords.google.com/api/adwords/reportdownload/v201708</a>) as OAuth2 scope. When we switched to OAuth2, this was a common source of confusion for AdWords API users, so we allowed developers to use these scopes. Since most users are now using the new scope, we are sunsetting these old scopes. Any refresh tokens authorized with the old scopes will stop working with an <code>invalid_scope</code> error. If this error occurs, you will have to <a href="https://developers.google.com/adwords/api/docs/guides/authentication#configure_and_use_a_client_library">re-authorize your users</a> with the proper AdWords scope (<code>https://www.googleapis.com/auth/adwords</code>) to continue making API calls.<br /><br /> <font size="4">Change to permitted OAuth 2.0 scopes when creating Location Extension feeds</font><br /> When <a href="https://developers.google.com/adwords/api/docs/guides/feed-services-locations#creating_the_oauthinfo_object_on_the_placeslocationfeeddata">creating a Feed for Location Extensions</a>, make sure you set the <a href="https://developers.google.com/adwords/api/docs/reference/latest/FeedService.OAuthInfo">OAuthInfo</a> object’s <a href="https://developers.google.com/adwords/api/docs/reference/v201705/FeedService.OAuthInfo#httprequesturl">httpRequestUrl</a> field to the AdWords API scope (<code>https://www.googleapis.com/auth/adwords</code>). In the past, we also supported using the Google My Business scope (<code>https://www.googleapis.com/auth/plus.business.manage</code>) for this field; we are sunsetting support for this scope. Similarly, the <a href="https://developers.google.com/adwords/api/docs/reference/v201705/FeedService.OAuthInfo#httpauthorizationheader">httpAuthorizationHeader</a> field must have an access token that is authorized for the AdWords API scope.<br /><br /> While we don’t expect most users to be affected by these changes, make sure you review your code and make necessary changes if needed. As always, if you have any questions, let us know on the <a href="https://groups.google.com/forum/#!forum/adwords-api">AdWords API forum</a>.<br /> <span class='byline-author'><img height="40" src="https://lh4.googleusercontent.com/jxCVJD5BDhhG-XfelK1UxmpWc9kajxLew6kWD40eiXTA7-ilXh12XOk8bqh81ReIwOYXbr-hY68eOQ_cEPV--hTZLXy7S4YmmXzD3X9EwTyk9UYivwqnDFNA4AzWSe3HKKGgdlJO" style="vertical-align: middle; border:none;" width="40"/> Anash P. Oommen, AdWords API Team</span> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <div dir="ltr" style="text-align: left;" trbidi="on"> We are making the following changes to AdWords OAuth Scopes during the week of <b>January 8, 2018</b>.<br /><br /> <font size="4">Invalid OAuth scopes will no longer be supported</font><br /> One mistake that developers make when obtaining an OAuth2 access or refresh token for AdWords API is to use the service URL prefix (e.g. <a href="https://adwords.google.com/api/adwords/cm/v201708">https://adwords.google.com/api/adwords/cm/v201708</a>, <a href="https://adwords.google.com/api/adwords/reportdownload/v201708">https://adwords.google.com/api/adwords/reportdownload/v201708</a>) as OAuth2 scope. When we switched to OAuth2, this was a common source of confusion for AdWords API users, so we allowed developers to use these scopes. Since most users are now using the new scope, we are sunsetting these old scopes. Any refresh tokens authorized with the old scopes will stop working with an <code>invalid_scope</code> error. If this error occurs, you will have to <a href="https://developers.google.com/adwords/api/docs/guides/authentication#configure_and_use_a_client_library">re-authorize your users</a> with the proper AdWords scope (<code>https://www.googleapis.com/auth/adwords</code>) to continue making API calls.<br /><br /> <font size="4">Change to permitted OAuth 2.0 scopes when creating Location Extension feeds</font><br /> When <a href="https://developers.google.com/adwords/api/docs/guides/feed-services-locations#creating_the_oauthinfo_object_on_the_placeslocationfeeddata">creating a Feed for Location Extensions</a>, make sure you set the <a href="https://developers.google.com/adwords/api/docs/reference/latest/FeedService.OAuthInfo">OAuthInfo</a> object’s <a href="https://developers.google.com/adwords/api/docs/reference/v201705/FeedService.OAuthInfo#httprequesturl">httpRequestUrl</a> field to the AdWords API scope (<code>https://www.googleapis.com/auth/adwords</code>). In the past, we also supported using the Google My Business scope (<code>https://www.googleapis.com/auth/plus.business.manage</code>) for this field; we are sunsetting support for this scope. Similarly, the <a href="https://developers.google.com/adwords/api/docs/reference/v201705/FeedService.OAuthInfo#httpauthorizationheader">httpAuthorizationHeader</a> field must have an access token that is authorized for the AdWords API scope.<br /><br /> While we don’t expect most users to be affected by these changes, make sure you review your code and make necessary changes if needed. As always, if you have any questions, let us know on the <a href="https://groups.google.com/forum/#!forum/adwords-api">AdWords API forum</a>.<br /> <span class='byline-author'><img height="40" src="https://lh4.googleusercontent.com/jxCVJD5BDhhG-XfelK1UxmpWc9kajxLew6kWD40eiXTA7-ilXh12XOk8bqh81ReIwOYXbr-hY68eOQ_cEPV--hTZLXy7S4YmmXzD3X9EwTyk9UYivwqnDFNA4AzWSe3HKKGgdlJO" style="vertical-align: middle; border:none;" width="40"/> Anash P. Oommen, AdWords API Team</span> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Google Ads Developer Blog:Upcoming changes to AdWords OAuth Scope&url=http://ads-developers.googleblog.com/2017/12/upcoming-changes-to-adwords-oauth-scope.html&via=google'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=http://ads-developers.googleblog.com/2017/12/upcoming-changes-to-adwords-oauth-scope.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='http://ads-developers.googleblog.com/2017/12/upcoming-changes-to-adwords-oauth-scope.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='http://ads-developers.googleblog.com/search/label/adwords_api' rel='tag'> adwords_api </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/location_feeds' rel='tag'> location_feeds </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/oauth' rel='tag'> oauth </a> </span> </div> </div> </div> <div class='post' data-id='1121589604118869605' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='http://ads-developers.googleblog.com/2017/12/deprecating-gmf-for-android.html' itemprop='url' title='Deprecating GMF for Android'> Deprecating GMF for Android </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Friday, December 8, 2017 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <p> On March 15, 2018, we are stopping development and support for <a href="https://github.com/googleads/google-media-framework-android">Google Media Framework (GMF) for Android</a> in favor of the new <a href="https://github.com/google/ExoPlayer/tree/release-v2/extensions/ima">ExoPlayer IMA extension</a>. GMF's technology and approach are based on an older version of ExoPlayer. </p> <p> The new v2 version of ExoPlayer and the ExoPlayer IMA Extension make basic integration simple enough that a layer between ExoPlayer and the IMA SDK is no longer necessary. The new approach is cleaner, requires less code, and uses the most up-to-date version of ExoPlayer. </p> <p> Support for GMF for Android will end on March 15, 2018, after which we will no longer respond to issues or make any further releases of GMF for Android. The repository will also be shut down at this time. If you want to access the code, you can clone the repository before the March 15, 2018 shutdown date. </p> <p> <strong>Note: We are NOT deprecating <a href="https://github.com/googleads/google-media-framework-ios">GMF for iOS</a>.</strong> </p> <p> If you have any questions, feel free to contact us via the <a href="https://groups.google.com/forum/?hl=en_US&fromgroups#!forum/ima-sdk">IMA SDK developer forum</a>. </p> <span class='byline-author'><a href="https://plus.google.com/u/0/115192712137004592087"><img height="20" src="https://lh3.googleusercontent.com/-fBnDgmUOklY/AAAAAAAAAAI/AAAAAAAAABo/Y7fukcxel1w/s120-c/photo.jpg?sz=20" style="vertical-align:middle; border:none;" width="20"></a> - <a href="https://plus.google.com/u/0/115192712137004592087" rel="author">Yury Pavlotsky</a>, IMA SDK Team</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <p> On March 15, 2018, we are stopping development and support for <a href="https://github.com/googleads/google-media-framework-android">Google Media Framework (GMF) for Android</a> in favor of the new <a href="https://github.com/google/ExoPlayer/tree/release-v2/extensions/ima">ExoPlayer IMA extension</a>. GMF's technology and approach are based on an older version of ExoPlayer. </p> <p> The new v2 version of ExoPlayer and the ExoPlayer IMA Extension make basic integration simple enough that a layer between ExoPlayer and the IMA SDK is no longer necessary. The new approach is cleaner, requires less code, and uses the most up-to-date version of ExoPlayer. </p> <p> Support for GMF for Android will end on March 15, 2018, after which we will no longer respond to issues or make any further releases of GMF for Android. The repository will also be shut down at this time. If you want to access the code, you can clone the repository before the March 15, 2018 shutdown date. </p> <p> <strong>Note: We are NOT deprecating <a href="https://github.com/googleads/google-media-framework-ios">GMF for iOS</a>.</strong> </p> <p> If you have any questions, feel free to contact us via the <a href="https://groups.google.com/forum/?hl=en_US&fromgroups#!forum/ima-sdk">IMA SDK developer forum</a>. </p> <span class='byline-author'><a href="https://plus.google.com/u/0/115192712137004592087"><img height="20" src="https://lh3.googleusercontent.com/-fBnDgmUOklY/AAAAAAAAAAI/AAAAAAAAABo/Y7fukcxel1w/s120-c/photo.jpg?sz=20" style="vertical-align:middle; border:none;" width="20"></a> - <a href="https://plus.google.com/u/0/115192712137004592087" rel="author">Yury Pavlotsky</a>, IMA SDK Team</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Google Ads Developer Blog:Deprecating GMF for Android&url=http://ads-developers.googleblog.com/2017/12/deprecating-gmf-for-android.html&via=google'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=http://ads-developers.googleblog.com/2017/12/deprecating-gmf-for-android.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='http://ads-developers.googleblog.com/2017/12/deprecating-gmf-for-android.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='http://ads-developers.googleblog.com/search/label/android' rel='tag'> android </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/deprecation' rel='tag'> deprecation </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/GMF' rel='tag'> GMF </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/ima_android' rel='tag'> ima_android </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/ima_sdk' rel='tag'> ima_sdk </a> </span> </div> </div> </div> <div class='post' data-id='5155897148244069393' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='http://ads-developers.googleblog.com/2017/12/announcing-rtb-troubleshooting.html' itemprop='url' title='Announcing RTB troubleshooting resources for the DoubleClick Ad Exchange Buyer REST API'> Announcing RTB troubleshooting resources for the DoubleClick Ad Exchange Buyer REST API </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Thursday, December 7, 2017 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <div dir="ltr" style="text-align: left;" trbidi="on"> <div dir="ltr" style="text-align: left;" trbidi="on"> You can now access <a href="https://support.google.com/adxbuyer/topic/6156723?hl=en&ref_topic=4525606">RTB Breakout</a> metrics programmatically with new RTB troubleshooting resources added to the <a href="https://developers.google.com/ad-exchange/buyer-rest/">DoubleClick Ad Exchange Buyer REST API</a>. These include the following:<br /> <div> <ul style="text-align: left;"> <li><code>filterSets</code></li> <li><code>filterSets.bidMetrics</code></li> <li><code>filterSets.bidResponseErrors</code></li> <li><code>filterSets.bidResponsesWithoutBids</code></li> <li><code>filterSets.filteredBidRequests</code></li> <li><code>filterSets.filteredBids</code></li> <li><code>filterSets.filteredBids.creatives</code></li> <li><code>filterSets.filteredBids.details</code></li> <li><code>filterSets.impressionMetrics</code></li> <li><code>filterSets.losingBids</code></li> <li><code>filterSets.nonBillableWinningBids</code></li> </ul> RTB troubleshooting resources are placed hierarchically under both <code>bidders</code> and <code>bidders.accounts</code>. For more information about these resources and how they differ when used at the bidder or account level see the <a href="https://developers.google.com/ad-exchange/buyer-rest/guides/v2/rtb-troubleshooting">RTB troubleshooting guide</a>.<br /> <br /> If you have any feedback or questions about the RTB troubleshooting resources, feel free to reach out to us via the <a href="https://groups.google.com/forum/#!forum/google-doubleclick-ad-exchange-buyer-api">DoubleClick Ad Exchange Buyer API support forum</a>.</div> <div> <br /></div> </div> <span class="byline-author"><a href="https://www.google.com/+MarkSaniscalchi"><img height="20" src="https://lh5.googleusercontent.com/-MhBjex2PtgE/UMnl67j4DqI/AAAAAAAAABo/QqT3HGgBIE4/w139-h140-p/2012-12-12_21-03-04_239.jpg" style="border: none; vertical-align: middle;" width="20" /></a> - <a href="https://www.google.com/+MarkSaniscalchi" rel="author">Mark Saniscalchi</a>, Ad Exchange Team</span></div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <div dir="ltr" style="text-align: left;" trbidi="on"> <div dir="ltr" style="text-align: left;" trbidi="on"> You can now access <a href="https://support.google.com/adxbuyer/topic/6156723?hl=en&ref_topic=4525606">RTB Breakout</a> metrics programmatically with new RTB troubleshooting resources added to the <a href="https://developers.google.com/ad-exchange/buyer-rest/">DoubleClick Ad Exchange Buyer REST API</a>. These include the following:<br /> <div> <ul style="text-align: left;"> <li><code>filterSets</code></li> <li><code>filterSets.bidMetrics</code></li> <li><code>filterSets.bidResponseErrors</code></li> <li><code>filterSets.bidResponsesWithoutBids</code></li> <li><code>filterSets.filteredBidRequests</code></li> <li><code>filterSets.filteredBids</code></li> <li><code>filterSets.filteredBids.creatives</code></li> <li><code>filterSets.filteredBids.details</code></li> <li><code>filterSets.impressionMetrics</code></li> <li><code>filterSets.losingBids</code></li> <li><code>filterSets.nonBillableWinningBids</code></li> </ul> RTB troubleshooting resources are placed hierarchically under both <code>bidders</code> and <code>bidders.accounts</code>. For more information about these resources and how they differ when used at the bidder or account level see the <a href="https://developers.google.com/ad-exchange/buyer-rest/guides/v2/rtb-troubleshooting">RTB troubleshooting guide</a>.<br /> <br /> If you have any feedback or questions about the RTB troubleshooting resources, feel free to reach out to us via the <a href="https://groups.google.com/forum/#!forum/google-doubleclick-ad-exchange-buyer-api">DoubleClick Ad Exchange Buyer API support forum</a>.</div> <div> <br /></div> </div> <span class="byline-author"><a href="https://www.google.com/+MarkSaniscalchi"><img height="20" src="https://lh5.googleusercontent.com/-MhBjex2PtgE/UMnl67j4DqI/AAAAAAAAABo/QqT3HGgBIE4/w139-h140-p/2012-12-12_21-03-04_239.jpg" style="border: none; vertical-align: middle;" width="20" /></a> - <a href="https://www.google.com/+MarkSaniscalchi" rel="author">Mark Saniscalchi</a>, Ad Exchange Team</span></div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Google Ads Developer Blog:Announcing RTB troubleshooting resources for the DoubleClick Ad Exchange Buyer REST API&url=http://ads-developers.googleblog.com/2017/12/announcing-rtb-troubleshooting.html&via=google'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=http://ads-developers.googleblog.com/2017/12/announcing-rtb-troubleshooting.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='http://ads-developers.googleblog.com/2017/12/announcing-rtb-troubleshooting.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='http://ads-developers.googleblog.com/search/label/ad_exchange' rel='tag'> ad_exchange </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/ad_exchange_rest' rel='tag'> ad_exchange_rest </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/ad_exchange_rtb' rel='tag'> ad_exchange_rtb </a> </span> </div> </div> </div> <div class='post' data-id='5627515979310344608' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='http://ads-developers.googleblog.com/2017/12/loading-multiple-native-ads-in-google.html' itemprop='url' title='Loading multiple native ads in the Google Mobile Ads SDK'> Loading multiple native ads in the Google Mobile Ads SDK </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Thursday, December 7, 2017 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <p> In the Google Mobile Ads SDK Android version 11.2.0 and iOS version 7.21.0, we added multiple native ads, a new feature for AdMob <a href="https://developers.google.com/admob/ios/native-advanced">Native Ads Advanced</a>. This feature lets you load up to five unique native ads with a single request. If you're showing native ads in a scrolling feed, this will allow you to get a batch of ads different from one another. It also means fewer network calls, which improves latency. </p> <p> If you're displaying multiple native ads in a feed and loading ads one by one, converting to the new API should be fairly straightforward. </p> <p> First, make a decision about how many ads you wish to fetch in one request. This is a function of how frequently you display ads in your feed. If you request five ads, AdMob will return the top five ads, ordered by eCPM value. If only three ads are available for the ad unit, only three ads will be returned. </p> <p> <strong>iOS Implementation</strong> </p> <p> Before initializing your ad loader, you need to create an instance of <code><a href="https://developers.google.com/admob/ios/api/reference/Classes/GADMultipleAdsAdLoaderOptions">GADMultipleAdsAdLoaderOptions</a></code> and set the <code><a href="https://developers.google.com/admob/ios/api/reference/Classes/GADMultipleAdsAdLoaderOptions#/c:objc(cs)GADMultipleAdsAdLoaderOptions(py)numberOfAds">numberOfAds</a></code> property. Then include this object in the array of options when calling <code>GADAdLoader</code>'s initializer: <pre class="prettyprint">override func viewDidLoad() { super.viewDidLoad() let multipleAdsOptions = GADMultipleAdsAdLoaderOptions() multipleAdsOptions.numberOfAds = 5 adLoader = GADAdLoader(adUnitID: YOUR_AD_UNIT_ID, rootViewController: self, adTypes: [GADAdLoaderAdType.nativeContent, GADAdLoaderAdType.nativeAppInstall], options: [multipleAdsOptions]) adLoader.delegate = self adLoader.load(GADRequest()) }</pre> <p> When requesting multiple native ads, you will still get individual callbacks when each ad is loaded. For example, for an app install ad you will have a callback to <code><a href="https://developers.google.com/admob/ios/api/reference/Protocols/GADNativeAppInstallAdLoaderDelegate#/c:objc(pl)GADNativeAppInstallAdLoaderDelegate(im)adLoader:didReceiveNativeAppInstallAd:">-adLoader:didReceiveNativeAppInstallAd:</a></code>, and for a content ad <code><a href="https://developers.google.com/admob/ios/api/reference/Protocols/GADNativeContentAdLoaderDelegate#/c:objc(pl)GADNativeContentAdLoaderDelegate(im)adLoader:didReceiveNativeContentAd:">-adLoader:didReceiveNativeContentAd:</a></code>. This way you don't need to change the way the ads are received and shown. <p> To determine when ads have finished loading, there are two new APIs available: </p><ol> <li>On the <code><a href="https://developers.google.com/admob/ios/api/reference/Classes/GADAdLoader">GADAdLoader</a></code> object, a new property, <code><a href="https://developers.google.com/admob/ios/api/reference/Classes/GADAdLoader#/c:objc(cs)GADAdLoader(py)loading">loading</a></code>, has been added. It returns <code>true</code> if a request is in progress, and <code>false</code> otherwise. You can check this property after each ad has loaded to find out if loading ads has completed. <li>On the <code><a href="https://developers.google.com/admob/ios/api/reference/Protocols/GADAdLoaderDelegate">GADAdLoaderDelegate</a></code>, the <code><a href="https://developers.google.com/admob/ios/api/reference/Protocols/GADAdLoaderDelegate#/c:objc(pl)GADAdLoaderDelegate(im)adLoaderDidFinishLoading:">adLoaderDidFinishLoading:</a></code> method has been added. It's invoked when all ads for a request have been returned.</li></ol> <p> <strong>Android Implementation</strong> </p> <p> The Android implementation is similar to iOS. There's a new method on <code><a href="https://developers.google.com/android/reference/com/google/android/gms/ads/AdLoader.html">AdLoader</a></code>, <code><a href="https://developers.google.com/android/reference/com/google/android/gms/ads/AdLoader.html#loadAds(com.google.android.gms.ads.AdRequest, int)">loadAds()</a></code> which accepts the number of ads to load. There's also a new <code><a href="https://developers.google.com/android/reference/com/google/android/gms/ads/AdLoader.html#isLoading()">isLoading()</a></code> method that indicates whether a request is currently in progress. <p> For a detailed walkthrough of the implementations, see the AdMob Native Ads Advanced implementation guides (<a href="https://developers.google.com/admob/ios/native-advanced#load_an_ad">iOS</a> | <a href="https://developers.google.com/admob/android/native-advanced#loading_ads">Android</a>). If you have any questions about this feature in the Google Mobile Ads SDK, please drop us a line at the <a href="https://groups.google.com/forum/#!forum/google-admob-ads-sdk">developer forum</a>. <p><span class="byline-author"><a href="https://plus.google.com/101455296779500923259/"><img height="20" src="https://lh3.googleusercontent.com/-mgNtN0xFJPo/AAAAAAAAAAI/AAAAAAAADVs/8q77C1VygCo/photo.jpg?sz=20" style="vertical-align:middle; border:none;" width="20"></a> - <a href="https://plus.google.com/101455296779500923259/" rel="author">Samuel Stow</a>, Mobile Ads Developer Relations</span></p> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <p> In the Google Mobile Ads SDK Android version 11.2.0 and iOS version 7.21.0, we added multiple native ads, a new feature for AdMob <a href="https://developers.google.com/admob/ios/native-advanced">Native Ads Advanced</a>. This feature lets you load up to five unique native ads with a single request. If you're showing native ads in a scrolling feed, this will allow you to get a batch of ads different from one another. It also means fewer network calls, which improves latency. </p> <p> If you're displaying multiple native ads in a feed and loading ads one by one, converting to the new API should be fairly straightforward. </p> <p> First, make a decision about how many ads you wish to fetch in one request. This is a function of how frequently you display ads in your feed. If you request five ads, AdMob will return the top five ads, ordered by eCPM value. If only three ads are available for the ad unit, only three ads will be returned. </p> <p> <strong>iOS Implementation</strong> </p> <p> Before initializing your ad loader, you need to create an instance of <code><a href="https://developers.google.com/admob/ios/api/reference/Classes/GADMultipleAdsAdLoaderOptions">GADMultipleAdsAdLoaderOptions</a></code> and set the <code><a href="https://developers.google.com/admob/ios/api/reference/Classes/GADMultipleAdsAdLoaderOptions#/c:objc(cs)GADMultipleAdsAdLoaderOptions(py)numberOfAds">numberOfAds</a></code> property. Then include this object in the array of options when calling <code>GADAdLoader</code>'s initializer: <pre class="prettyprint">override func viewDidLoad() { super.viewDidLoad() let multipleAdsOptions = GADMultipleAdsAdLoaderOptions() multipleAdsOptions.numberOfAds = 5 adLoader = GADAdLoader(adUnitID: YOUR_AD_UNIT_ID, rootViewController: self, adTypes: [GADAdLoaderAdType.nativeContent, GADAdLoaderAdType.nativeAppInstall], options: [multipleAdsOptions]) adLoader.delegate = self adLoader.load(GADRequest()) }</pre> <p> When requesting multiple native ads, you will still get individual callbacks when each ad is loaded. For example, for an app install ad you will have a callback to <code><a href="https://developers.google.com/admob/ios/api/reference/Protocols/GADNativeAppInstallAdLoaderDelegate#/c:objc(pl)GADNativeAppInstallAdLoaderDelegate(im)adLoader:didReceiveNativeAppInstallAd:">-adLoader:didReceiveNativeAppInstallAd:</a></code>, and for a content ad <code><a href="https://developers.google.com/admob/ios/api/reference/Protocols/GADNativeContentAdLoaderDelegate#/c:objc(pl)GADNativeContentAdLoaderDelegate(im)adLoader:didReceiveNativeContentAd:">-adLoader:didReceiveNativeContentAd:</a></code>. This way you don't need to change the way the ads are received and shown. <p> To determine when ads have finished loading, there are two new APIs available: </p><ol> <li>On the <code><a href="https://developers.google.com/admob/ios/api/reference/Classes/GADAdLoader">GADAdLoader</a></code> object, a new property, <code><a href="https://developers.google.com/admob/ios/api/reference/Classes/GADAdLoader#/c:objc(cs)GADAdLoader(py)loading">loading</a></code>, has been added. It returns <code>true</code> if a request is in progress, and <code>false</code> otherwise. You can check this property after each ad has loaded to find out if loading ads has completed. <li>On the <code><a href="https://developers.google.com/admob/ios/api/reference/Protocols/GADAdLoaderDelegate">GADAdLoaderDelegate</a></code>, the <code><a href="https://developers.google.com/admob/ios/api/reference/Protocols/GADAdLoaderDelegate#/c:objc(pl)GADAdLoaderDelegate(im)adLoaderDidFinishLoading:">adLoaderDidFinishLoading:</a></code> method has been added. It's invoked when all ads for a request have been returned.</li></ol> <p> <strong>Android Implementation</strong> </p> <p> The Android implementation is similar to iOS. There's a new method on <code><a href="https://developers.google.com/android/reference/com/google/android/gms/ads/AdLoader.html">AdLoader</a></code>, <code><a href="https://developers.google.com/android/reference/com/google/android/gms/ads/AdLoader.html#loadAds(com.google.android.gms.ads.AdRequest, int)">loadAds()</a></code> which accepts the number of ads to load. There's also a new <code><a href="https://developers.google.com/android/reference/com/google/android/gms/ads/AdLoader.html#isLoading()">isLoading()</a></code> method that indicates whether a request is currently in progress. <p> For a detailed walkthrough of the implementations, see the AdMob Native Ads Advanced implementation guides (<a href="https://developers.google.com/admob/ios/native-advanced#load_an_ad">iOS</a> | <a href="https://developers.google.com/admob/android/native-advanced#loading_ads">Android</a>). If you have any questions about this feature in the Google Mobile Ads SDK, please drop us a line at the <a href="https://groups.google.com/forum/#!forum/google-admob-ads-sdk">developer forum</a>. <p><span class="byline-author"><a href="https://plus.google.com/101455296779500923259/"><img height="20" src="https://lh3.googleusercontent.com/-mgNtN0xFJPo/AAAAAAAAAAI/AAAAAAAADVs/8q77C1VygCo/photo.jpg?sz=20" style="vertical-align:middle; border:none;" width="20"></a> - <a href="https://plus.google.com/101455296779500923259/" rel="author">Samuel Stow</a>, Mobile Ads Developer Relations</span></p> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Google Ads Developer Blog:Loading multiple native ads in the Google Mobile Ads SDK&url=http://ads-developers.googleblog.com/2017/12/loading-multiple-native-ads-in-google.html&via=google'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=http://ads-developers.googleblog.com/2017/12/loading-multiple-native-ads-in-google.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='http://ads-developers.googleblog.com/2017/12/loading-multiple-native-ads-in-google.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='http://ads-developers.googleblog.com/search/label/admob' rel='tag'> admob </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/android' rel='tag'> android </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/iOS' rel='tag'> iOS </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/mobile_ads_sdk' rel='tag'> mobile_ads_sdk </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/native' rel='tag'> native </a> </span> </div> </div> </div> <div class='post' data-id='1323973947879778845' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='http://ads-developers.googleblog.com/2017/11/adwords-scripts-now-supports-v201708.html' itemprop='url' title='AdWords scripts now supports v201708 and v201710 in reports'> AdWords scripts now supports v201708 and v201710 in reports </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Wednesday, November 29, 2017 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <div dir="ltr" style="text-align: left;" trbidi="on"> We have added support for AdWords API v201708 and v201710 reports in AdWords scripts.<br /> <br /> <div> The major changes in v201708 are:</div> <div> <ul style="text-align: left;"> <li>New fields in various report types.</li> <li>The TABLE_EXTENSION enum value for ClickType was renamed to PRICE_EXTENSION.</li> <li>See the full AdWords API <a href="https://developers.google.com/adwords/api/docs/reference/release-notes/v201708#reporting">release notes</a> for more details.</li> </ul> <div> The major changes in v201710 are:</div> <div> <ul style="text-align: left;"> <li>The Automated field was added to the AD_PERFORMANCE_REPORT.</li> <li>The EnhancedCpvEnabled field was removed from all reports.</li> <li>See the full AdWords API <a href="https://developers.google.com/adwords/api/docs/reference/release-notes/v201710#reporting">release notes</a> for more details.</li> </ul> </div> <div> In addition to these changes, v201705 is now the default version for reports. You can use one of the newly supported versions instead by specifying the apiVersion in your report request:</div> <pre class="prettyprint">var report = AdWordsApp.report(query, { apiVersion: 'v201710' }); </pre> </div> <br /> <div> If you have any questions about these changes or AdWords scripts in general, you can post them on our <a href="https://groups.google.com/forum/#!forum/adwords-scripts">developer forum</a>.</div> </div> <span class="byline-author"><a target="_blank" href="https://plus.google.com/113314522956332161579"><img height="40" src="https://lh3.googleusercontent.com/aMB3q9V2ZUFicMmSHmO5WM-EP16dXhruPUl1oVSCsPgd8m5PP8UVHpDlWilzM2CBVM_oWhUf3g=w1920-h1200-rw-no" style="vertical-align: middle; border:none;" width="40"></a> - <a target="_blank" href="https://plus.google.com/113314522956332161579">Mike Cloonan</a>, AdWords API Team.</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <div dir="ltr" style="text-align: left;" trbidi="on"> We have added support for AdWords API v201708 and v201710 reports in AdWords scripts.<br /> <br /> <div> The major changes in v201708 are:</div> <div> <ul style="text-align: left;"> <li>New fields in various report types.</li> <li>The TABLE_EXTENSION enum value for ClickType was renamed to PRICE_EXTENSION.</li> <li>See the full AdWords API <a href="https://developers.google.com/adwords/api/docs/reference/release-notes/v201708#reporting">release notes</a> for more details.</li> </ul> <div> The major changes in v201710 are:</div> <div> <ul style="text-align: left;"> <li>The Automated field was added to the AD_PERFORMANCE_REPORT.</li> <li>The EnhancedCpvEnabled field was removed from all reports.</li> <li>See the full AdWords API <a href="https://developers.google.com/adwords/api/docs/reference/release-notes/v201710#reporting">release notes</a> for more details.</li> </ul> </div> <div> In addition to these changes, v201705 is now the default version for reports. You can use one of the newly supported versions instead by specifying the apiVersion in your report request:</div> <pre class="prettyprint">var report = AdWordsApp.report(query, { apiVersion: 'v201710' }); </pre> </div> <br /> <div> If you have any questions about these changes or AdWords scripts in general, you can post them on our <a href="https://groups.google.com/forum/#!forum/adwords-scripts">developer forum</a>.</div> </div> <span class="byline-author"><a target="_blank" href="https://plus.google.com/113314522956332161579"><img height="40" src="https://lh3.googleusercontent.com/aMB3q9V2ZUFicMmSHmO5WM-EP16dXhruPUl1oVSCsPgd8m5PP8UVHpDlWilzM2CBVM_oWhUf3g=w1920-h1200-rw-no" style="vertical-align: middle; border:none;" width="40"></a> - <a target="_blank" href="https://plus.google.com/113314522956332161579">Mike Cloonan</a>, AdWords API Team.</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Google Ads Developer Blog:AdWords scripts now supports v201708 and v201710 in reports&url=http://ads-developers.googleblog.com/2017/11/adwords-scripts-now-supports-v201708.html&via=google'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=http://ads-developers.googleblog.com/2017/11/adwords-scripts-now-supports-v201708.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='http://ads-developers.googleblog.com/2017/11/adwords-scripts-now-supports-v201708.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='http://ads-developers.googleblog.com/search/label/AdWords%20Scripts' rel='tag'> AdWords Scripts </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/adwords_api_v201708' rel='tag'> adwords_api_v201708 </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/adwords_api_v201710' rel='tag'> adwords_api_v201710 </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/reporting' rel='tag'> reporting </a> </span> </div> </div> </div> <div class='post' data-id='8265719807493856' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='http://ads-developers.googleblog.com/2017/11/announcing-v30-of-dcmdfa-reporting-and.html' itemprop='url' title='Announcing v3.0 of the DCM/DFA Reporting and Trafficking API'> Announcing v3.0 of the DCM/DFA Reporting and Trafficking API </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Thursday, November 16, 2017 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <div dir="ltr" style="text-align: left;" trbidi="on"> Today we're releasing v3.0 of the DCM/DFA Reporting and Trafficking API. Highlights of this major version release include: <ul> <li><a href="https://developers.google.com/doubleclick-advertisers/v3.0/advertiserLandingPages">Advertiser landing pages</a></li> <li>Creative <a href="https://developers.google.com/doubleclick-advertisers/v3.0/creatives#politeLoadAssetId">polite load</a> and placement <a href="https://developers.google.com/doubleclick-advertisers/v3.0/placements#videoSettings.orientation">video orientation</a> options</li> <li>Support for <a href="https://developers.google.com/doubleclick-advertisers/v3.0/floodlightActivities/generatetag#globalSiteTagGlobalSnippet">global site tags</a></li> </ul> Although we strive to maintain backwards compatibility between releases, a number of enhancements in this release necessitated breaking changes to existing API workflows. Details of these and all other changes are covered in our <a href="https://developers.google.com/doubleclick-advertisers/rel_notes">release notes</a>.<br /><br /> <font size="4">Deprecation and sunset reminder</font><br /> In accordance with our <a href="https://developers.google.com/doubleclick-advertisers/deprecation">deprecation schedule</a>, this release marks the beginning of the deprecation period for v2.8, which will sunset on <b>August 31st, 2018</b>. After this date, any requests made against v2.8 will begin returning errors.<br /><br /> As a final reminder, API version 2.7 will be sunset on <b>December 7th, 2017</b>. To avoid an interruption in service, all users are required to migrate to a newer version before the sunset date.<br /><br /> <font size="4">Learn More</font><br /> As with every new version of the DCM/DFA Reporting and Trafficking API, we encourage you to carefully review all changes in the <a href="https://developers.google.com/doubleclick-advertisers/rel_notes">release notes</a>. For those of you looking to get going right away, updated <a href="https://developers.google.com/doubleclick-advertisers/libraries">client libraries</a> are now available. If you're just starting out, the <a href="https://developers.google.com/doubleclick-advertisers/getting_started">Get Started guide</a> is a great reference to help you get up and running quickly.<br /><br /> <a href="https://developers.google.com/apis-explorer/#p/dfareporting/v3.0/">Give it a try</a> and <a href="https://groups.google.com/forum/#!forum/google-doubleclick-for-advertisers-api">let us know</a> if you have any questions!<br /> <span class="byline-author"><img height="40" src="https://lh4.googleusercontent.com/Un2f8BWacJhml95AIVdBJ5pcEmOGczfUlwNb2bVWqa0PmuIj8rlRxu9CY4y3iN7iHe1pcduocjub_fNlMjeSY-V-KsrWA8YI7kdPwcH97lDBzlpUSFGYkxjAx_Q2meuvRDfbRzjW" style="vertical-align: middle; border:none;" width="40"> - <a target="_blank" href="https://plus.sandbox.google.com/104065598364941870033/posts">Jonathon Imperiosi</a>, DCM API Team</span> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <div dir="ltr" style="text-align: left;" trbidi="on"> Today we're releasing v3.0 of the DCM/DFA Reporting and Trafficking API. Highlights of this major version release include: <ul> <li><a href="https://developers.google.com/doubleclick-advertisers/v3.0/advertiserLandingPages">Advertiser landing pages</a></li> <li>Creative <a href="https://developers.google.com/doubleclick-advertisers/v3.0/creatives#politeLoadAssetId">polite load</a> and placement <a href="https://developers.google.com/doubleclick-advertisers/v3.0/placements#videoSettings.orientation">video orientation</a> options</li> <li>Support for <a href="https://developers.google.com/doubleclick-advertisers/v3.0/floodlightActivities/generatetag#globalSiteTagGlobalSnippet">global site tags</a></li> </ul> Although we strive to maintain backwards compatibility between releases, a number of enhancements in this release necessitated breaking changes to existing API workflows. Details of these and all other changes are covered in our <a href="https://developers.google.com/doubleclick-advertisers/rel_notes">release notes</a>.<br /><br /> <font size="4">Deprecation and sunset reminder</font><br /> In accordance with our <a href="https://developers.google.com/doubleclick-advertisers/deprecation">deprecation schedule</a>, this release marks the beginning of the deprecation period for v2.8, which will sunset on <b>August 31st, 2018</b>. After this date, any requests made against v2.8 will begin returning errors.<br /><br /> As a final reminder, API version 2.7 will be sunset on <b>December 7th, 2017</b>. To avoid an interruption in service, all users are required to migrate to a newer version before the sunset date.<br /><br /> <font size="4">Learn More</font><br /> As with every new version of the DCM/DFA Reporting and Trafficking API, we encourage you to carefully review all changes in the <a href="https://developers.google.com/doubleclick-advertisers/rel_notes">release notes</a>. For those of you looking to get going right away, updated <a href="https://developers.google.com/doubleclick-advertisers/libraries">client libraries</a> are now available. If you're just starting out, the <a href="https://developers.google.com/doubleclick-advertisers/getting_started">Get Started guide</a> is a great reference to help you get up and running quickly.<br /><br /> <a href="https://developers.google.com/apis-explorer/#p/dfareporting/v3.0/">Give it a try</a> and <a href="https://groups.google.com/forum/#!forum/google-doubleclick-for-advertisers-api">let us know</a> if you have any questions!<br /> <span class="byline-author"><img height="40" src="https://lh4.googleusercontent.com/Un2f8BWacJhml95AIVdBJ5pcEmOGczfUlwNb2bVWqa0PmuIj8rlRxu9CY4y3iN7iHe1pcduocjub_fNlMjeSY-V-KsrWA8YI7kdPwcH97lDBzlpUSFGYkxjAx_Q2meuvRDfbRzjW" style="vertical-align: middle; border:none;" width="40"> - <a target="_blank" href="https://plus.sandbox.google.com/104065598364941870033/posts">Jonathon Imperiosi</a>, DCM API Team</span> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Google Ads Developer Blog:Announcing v3.0 of the DCM/DFA Reporting and Trafficking API&url=http://ads-developers.googleblog.com/2017/11/announcing-v30-of-dcmdfa-reporting-and.html&via=google'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=http://ads-developers.googleblog.com/2017/11/announcing-v30-of-dcmdfa-reporting-and.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='http://ads-developers.googleblog.com/2017/11/announcing-v30-of-dcmdfa-reporting-and.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='http://ads-developers.googleblog.com/search/label/dfa_api' rel='tag'> dfa_api </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/release' rel='tag'> release </a> </span> </div> </div> </div> <div class='post' data-id='2134094219087454853' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='http://ads-developers.googleblog.com/2017/11/announcing-v201711-of-dfp-api.html' itemprop='url' title='Announcing v201711 of the DFP API'> Announcing v201711 of the DFP API </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Tuesday, November 14, 2017 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <p> Today we're pleased to announce several additions and improvements to the DFP API with the release of v201711. This release includes a new service, <a href="https://developers.google.com/doubleclick-publishers/docs/reference/latest/CdnConfigurationService">CdnConfigurationService</a>, which manages the configuration of <a href="https://support.google.com/dfp_premium/answer/6147120?hl=en">DAI</a> (Dynamic Ad Insertion) content ingestion and delivery networks. </p> <p> <strong>Please note</strong> that Ad Exchange historical reports will be run in the Pacific timezone in v201711. This will allow you to report on Bid and Deals metrics. If you need to continue running Ad Exchange historical reports in your network timezone, please stay on v201708. Future versions will support both options. </p> <p> Additionally, the release adds the ability to generate in-site <a href="https://developers.google.com/doubleclick-publishers/docs/reference/latest/LineItemCreativeAssociationService#getPreviewUrlsForNativeStyles">preview URLs</a> for native styles, and you can now determine if an <a href="https://developers.google.com/doubleclick-publishers/docs/reference/latest/InventoryService.AdUnit">AdUnit</a> supports fluid sizes by looking at the new <a href="https://developers.google.com/doubleclick-publishers/docs/reference/latest/InventoryService.AdUnit#isfluid">isFluid</a> attribute. </p> <p> For a full list of API changes in v201711, see the <a href="https://developers.google.com/doubleclick-publishers/docs/rel_notes">release notes</a>. </p> <p> With each new release comes a deprecation. If you're using v201611 or earlier, it's time to look into upgrading. Also remember that v201702 will be sunset at the end of February 2018. </p> <p> As always, if you have any questions, feel free to drop us a line on the <a href="https://groups.google.com/forum/#!forum/google-doubleclick-for-publishers-api">DFP API forum</a>. </p> <span class="post-author"><a target="_blank" href="https://plus.google.com/104308806108090449784"><img height="40" src="https://lh3.googleusercontent.com/Kj_iWaN7EjlBD1SwtCj5lZhCGSg1AMVBbvXyfVt4mQ7QynA1tNCgPTzA-lWSmJikQtDkCu5cPq9o=w2560-h1440-rw-no?sz=120" style="border: none; vertical-align: middle;" width="40"></a> - <a target="_blank" href="https://plus.google.com/104308806108090449784" rel="author">Gabe Rives-Corbett</a>, DFP API Team</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <p> Today we're pleased to announce several additions and improvements to the DFP API with the release of v201711. This release includes a new service, <a href="https://developers.google.com/doubleclick-publishers/docs/reference/latest/CdnConfigurationService">CdnConfigurationService</a>, which manages the configuration of <a href="https://support.google.com/dfp_premium/answer/6147120?hl=en">DAI</a> (Dynamic Ad Insertion) content ingestion and delivery networks. </p> <p> <strong>Please note</strong> that Ad Exchange historical reports will be run in the Pacific timezone in v201711. This will allow you to report on Bid and Deals metrics. If you need to continue running Ad Exchange historical reports in your network timezone, please stay on v201708. Future versions will support both options. </p> <p> Additionally, the release adds the ability to generate in-site <a href="https://developers.google.com/doubleclick-publishers/docs/reference/latest/LineItemCreativeAssociationService#getPreviewUrlsForNativeStyles">preview URLs</a> for native styles, and you can now determine if an <a href="https://developers.google.com/doubleclick-publishers/docs/reference/latest/InventoryService.AdUnit">AdUnit</a> supports fluid sizes by looking at the new <a href="https://developers.google.com/doubleclick-publishers/docs/reference/latest/InventoryService.AdUnit#isfluid">isFluid</a> attribute. </p> <p> For a full list of API changes in v201711, see the <a href="https://developers.google.com/doubleclick-publishers/docs/rel_notes">release notes</a>. </p> <p> With each new release comes a deprecation. If you're using v201611 or earlier, it's time to look into upgrading. Also remember that v201702 will be sunset at the end of February 2018. </p> <p> As always, if you have any questions, feel free to drop us a line on the <a href="https://groups.google.com/forum/#!forum/google-doubleclick-for-publishers-api">DFP API forum</a>. </p> <span class="post-author"><a target="_blank" href="https://plus.google.com/104308806108090449784"><img height="40" src="https://lh3.googleusercontent.com/Kj_iWaN7EjlBD1SwtCj5lZhCGSg1AMVBbvXyfVt4mQ7QynA1tNCgPTzA-lWSmJikQtDkCu5cPq9o=w2560-h1440-rw-no?sz=120" style="border: none; vertical-align: middle;" width="40"></a> - <a target="_blank" href="https://plus.google.com/104308806108090449784" rel="author">Gabe Rives-Corbett</a>, DFP API Team</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Google Ads Developer Blog:Announcing v201711 of the DFP API&url=http://ads-developers.googleblog.com/2017/11/announcing-v201711-of-dfp-api.html&via=google'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=http://ads-developers.googleblog.com/2017/11/announcing-v201711-of-dfp-api.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='http://ads-developers.googleblog.com/2017/11/announcing-v201711-of-dfp-api.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='http://ads-developers.googleblog.com/search/label/dfp_api' rel='tag'> dfp_api </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/dfp_v201711' rel='tag'> dfp_v201711 </a> </span> </div> </div> </div> <div class='post' data-id='3218432605351866761' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='http://ads-developers.googleblog.com/2017/11/changes-to-adwords-express-campaigns-in.html' itemprop='url' title='Changes to AdWords Express campaigns in AdWords API reports'> Changes to AdWords Express campaigns in AdWords API reports </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Friday, November 10, 2017 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <div dir="ltr" style="text-align: left;" trbidi="on"> If you use AdWords API reports to retrieve performance statistics for AdWords Express campaigns, please read on as these changes will affect you.<br /><br /> <font size="4">What's changing?</font><br /> In preparation for upcoming improvements, an ongoing migration process is modifying campaigns managed by AdWords Express.<br /><br /> Currently, when you enable an AdWords Express promotion, it creates up to two AdWords campaigns: <ul> <li> A Search Network campaign with: <ul> <li>AdvertisingChannelType = <code>SEARCH</code> (appears as <code>Search</code>)</li> <li>AdvertisingChannelSubType = <code>SEARCH_EXPRESS</code> (appears as <code>Search Express</code>)</li> </ul> </li> <li> A Display Network campaign with: <ul> <li>AdvertisingChannelType = <code>DISPLAY</code> (appears as <code>Display</code>)</li> <li>AdvertisingChannelSubType = <code>DISPLAY_EXPRESS</code> (appears as <code>Display Express</code>)</li> </ul> </li> </ul> As part of the migration, the two campaigns above will be paused and replaced by a <i>single</i> AdWords campaign with: <ul> <li>AdvertisingChannelType = <code>EXPRESS</code> (appears as <code>Express</code>)</li> <li>AdvertisingChannelSubType = <code>UNKNOWN</code> (appears as an empty string)</li> </ul> After the campaigns for a promotion are migrated, performance statistics for the AdWords Express promotion will be available in reports as follows: <ul> <li>Performance statistics for dates prior to the migration will be attributed to the original campaigns with <code>SEARCH / SEARCH_EXPRESS</code> and <code>DISPLAY / DISPLAY_EXPRESS</code>.</li> <li>Performance statistics for dates after the migration will be attributed to the new campaign with <code>EXPRESS / UNKNOWN</code>. The new campaign will only appear in the <a href="https://developers.google.com/adwords/api/docs/appendix/reports/campaign-performance-report#advertisingchanneltype">CAMPAIGN_PERFORMANCE_REPORT</a>.</li> </ul> For example, assume an AdWords Express promotion manages the following two AdWords campaigns today:<br /><br /> <table style="border-collapse: collapse; border: none; width=100%;"> <tbody> <tr style="background-color: #6199df; border-bottom: solid #4d90fe 1px; border-left: solid #4d90fe 1px; border-right: solid #4d90fe 1px; border-top: solid #4d90fe 1px; height: 0px; vertical-align: top;"> <th style="border-bottom: solid #4d90fe 1px; border-left: solid #4d90fe 1px; border-right: solid #4d90fe 1px; border-top: solid #4d90fe 1px; padding: 7px 7px 7px 7px;"><span style="color: white;">Campaign ID</span> </th> <th style="border-bottom: solid #4d90fe 1px; border-left: solid #4d90fe 1px; border-right: solid #4d90fe 1px; border-top: solid #4d90fe 1px; padding: 7px 7px 7px 7px;"><span style="color: white;">Campaign Status</span> </th> <th style="border-bottom: solid #4d90fe 1px; border-left: solid #4d90fe 1px; border-right: solid #4d90fe 1px; border-top: solid #4d90fe 1px; padding: 7px 7px 7px 7px;"><span style="color: white;">Advertising Channel Type</span> </th> <th style="border-bottom: solid #4d90fe 1px; border-left: solid #4d90fe 1px; border-right: solid #4d90fe 1px; border-top: solid #4d90fe 1px; padding: 7px 7px 7px 7px;"><span style="color: white;">Advertising Channel Sub Type</span> </th> </tr> <tr> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">1000</td> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle; background-color: #33ff77">ENABLED</td> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">SEARCH</td> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">SEARCH_EXPRESS</td> </tr> <tr> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">2000</td> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle; background-color: #33ff77">ENABLED</td> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">DISPLAY</td> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">DISPLAY_EXPRESS</td> </tr> </tbody> </table><br /> After the migration, the account will contain the following campaigns for the AdWords Express promotion:<br /><br /> <table style="border-collapse: collapse; border: none; width=100%;"> <tbody> <tr style="background-color: #6199df; border-bottom: solid #4d90fe 1px; border-left: solid #4d90fe 1px; border-right: solid #4d90fe 1px; border-top: solid #4d90fe 1px; height: 0px; vertical-align: top;"> <th style="border-bottom: solid #4d90fe 1px; border-left: solid #4d90fe 1px; border-right: solid #4d90fe 1px; border-top: solid #4d90fe 1px; padding: 7px 7px 7px 7px;"><span style="color: white;">Campaign ID</span> </th> <th style="border-bottom: solid #4d90fe 1px; border-left: solid #4d90fe 1px; border-right: solid #4d90fe 1px; border-top: solid #4d90fe 1px; padding: 7px 7px 7px 7px;"><span style="color: white;">Campaign Status</span> </th> <th style="border-bottom: solid #4d90fe 1px; border-left: solid #4d90fe 1px; border-right: solid #4d90fe 1px; border-top: solid #4d90fe 1px; padding: 7px 7px 7px 7px;"><span style="color: white;">Advertising Channel Type</span> </th> <th style="border-bottom: solid #4d90fe 1px; border-left: solid #4d90fe 1px; border-right: solid #4d90fe 1px; border-top: solid #4d90fe 1px; padding: 7px 7px 7px 7px;"><span style="color: white;">Advertising Channel Sub Type</span> </th> <th style="border-bottom: solid #4d90fe 1px; border-left: solid #4d90fe 1px; border-right: solid #4d90fe 1px; border-top: solid #4d90fe 1px; padding: 7px 7px 7px 7px;"><span style="color: white;">Performance statistics</span> </th> </tr> <tr> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">1000</td> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle; background-color: #f6ff33">PAUSED</td> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">SEARCH</td> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">SEARCH_EXPRESS</td> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">Before the migration</td> </tr> <tr> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">2000</td> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle; background-color: #f6ff33">PAUSED</td> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">DISPLAY</td> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">DISPLAY_EXPRESS</td> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">Before the migration</td> </tr> <tr> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">3000</td> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle; background-color: #33ff77">ENABLED</td> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">EXPRESS</td> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">UNKNOWN</td> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">After the migration</td> </tr> </tbody> </table><br /> <font size="4">What should you do?</font><br /> Ensure that your application properly handles all three combinations of <code>AdvertisingChannelType</code> and <code>AdvertisingChannelSubType</code>. For example: <ul> <li>If your application <i>inspects</i> <code>AdvertisingChannelType</code> or <code>AdvertisingChannelSubType</code> to handle AdWords Express campaigns, please adjust the logic to handle the new combination of <code>EXPRESS / UNKNOWN</code>.</li> <li>If you use <i>predicates</i> on <code>AdvertisingChannelType</code> or <code>AdvertisingChannelSubType</code> to include or exclude AdWords Express campaigns, make sure that your predicate takes the new combination into account.</li> </ul> <b>Reminder</b>: The AdWords API only supports retrieving AdWords Express entities. You cannot modify AdWords Express entities in your account using the AdWords API.<br /><br /> If you have any questions about this change, please contact us via the <a href="https://developers.google.com/adwords/api/community/">forum</a>. <br /> <span class='byline-author'><img height="40" src="https://lh6.googleusercontent.com/QeXHV-SScZA0aSaUkBR96-GBjQjwxT5HxpWnSEY3iW-170vzU9Ik_2h6sr8u69_lxhRCSRqgBpUTCLyN6rfAzdb3m4WhJlQN99FRpB9EssuzxH9G02Zur-XLayR828IN-lrqB-vS" style="vertical-align: middle; border:none;" width="40"/> - <a href="https://plus.google.com/100205313733177937765/posts">Josh Radcliff</a>, AdWords API Team </span> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <div dir="ltr" style="text-align: left;" trbidi="on"> If you use AdWords API reports to retrieve performance statistics for AdWords Express campaigns, please read on as these changes will affect you.<br /><br /> <font size="4">What's changing?</font><br /> In preparation for upcoming improvements, an ongoing migration process is modifying campaigns managed by AdWords Express.<br /><br /> Currently, when you enable an AdWords Express promotion, it creates up to two AdWords campaigns: <ul> <li> A Search Network campaign with: <ul> <li>AdvertisingChannelType = <code>SEARCH</code> (appears as <code>Search</code>)</li> <li>AdvertisingChannelSubType = <code>SEARCH_EXPRESS</code> (appears as <code>Search Express</code>)</li> </ul> </li> <li> A Display Network campaign with: <ul> <li>AdvertisingChannelType = <code>DISPLAY</code> (appears as <code>Display</code>)</li> <li>AdvertisingChannelSubType = <code>DISPLAY_EXPRESS</code> (appears as <code>Display Express</code>)</li> </ul> </li> </ul> As part of the migration, the two campaigns above will be paused and replaced by a <i>single</i> AdWords campaign with: <ul> <li>AdvertisingChannelType = <code>EXPRESS</code> (appears as <code>Express</code>)</li> <li>AdvertisingChannelSubType = <code>UNKNOWN</code> (appears as an empty string)</li> </ul> After the campaigns for a promotion are migrated, performance statistics for the AdWords Express promotion will be available in reports as follows: <ul> <li>Performance statistics for dates prior to the migration will be attributed to the original campaigns with <code>SEARCH / SEARCH_EXPRESS</code> and <code>DISPLAY / DISPLAY_EXPRESS</code>.</li> <li>Performance statistics for dates after the migration will be attributed to the new campaign with <code>EXPRESS / UNKNOWN</code>. The new campaign will only appear in the <a href="https://developers.google.com/adwords/api/docs/appendix/reports/campaign-performance-report#advertisingchanneltype">CAMPAIGN_PERFORMANCE_REPORT</a>.</li> </ul> For example, assume an AdWords Express promotion manages the following two AdWords campaigns today:<br /><br /> <table style="border-collapse: collapse; border: none; width=100%;"> <tbody> <tr style="background-color: #6199df; border-bottom: solid #4d90fe 1px; border-left: solid #4d90fe 1px; border-right: solid #4d90fe 1px; border-top: solid #4d90fe 1px; height: 0px; vertical-align: top;"> <th style="border-bottom: solid #4d90fe 1px; border-left: solid #4d90fe 1px; border-right: solid #4d90fe 1px; border-top: solid #4d90fe 1px; padding: 7px 7px 7px 7px;"><span style="color: white;">Campaign ID</span> </th> <th style="border-bottom: solid #4d90fe 1px; border-left: solid #4d90fe 1px; border-right: solid #4d90fe 1px; border-top: solid #4d90fe 1px; padding: 7px 7px 7px 7px;"><span style="color: white;">Campaign Status</span> </th> <th style="border-bottom: solid #4d90fe 1px; border-left: solid #4d90fe 1px; border-right: solid #4d90fe 1px; border-top: solid #4d90fe 1px; padding: 7px 7px 7px 7px;"><span style="color: white;">Advertising Channel Type</span> </th> <th style="border-bottom: solid #4d90fe 1px; border-left: solid #4d90fe 1px; border-right: solid #4d90fe 1px; border-top: solid #4d90fe 1px; padding: 7px 7px 7px 7px;"><span style="color: white;">Advertising Channel Sub Type</span> </th> </tr> <tr> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">1000</td> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle; background-color: #33ff77">ENABLED</td> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">SEARCH</td> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">SEARCH_EXPRESS</td> </tr> <tr> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">2000</td> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle; background-color: #33ff77">ENABLED</td> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">DISPLAY</td> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">DISPLAY_EXPRESS</td> </tr> </tbody> </table><br /> After the migration, the account will contain the following campaigns for the AdWords Express promotion:<br /><br /> <table style="border-collapse: collapse; border: none; width=100%;"> <tbody> <tr style="background-color: #6199df; border-bottom: solid #4d90fe 1px; border-left: solid #4d90fe 1px; border-right: solid #4d90fe 1px; border-top: solid #4d90fe 1px; height: 0px; vertical-align: top;"> <th style="border-bottom: solid #4d90fe 1px; border-left: solid #4d90fe 1px; border-right: solid #4d90fe 1px; border-top: solid #4d90fe 1px; padding: 7px 7px 7px 7px;"><span style="color: white;">Campaign ID</span> </th> <th style="border-bottom: solid #4d90fe 1px; border-left: solid #4d90fe 1px; border-right: solid #4d90fe 1px; border-top: solid #4d90fe 1px; padding: 7px 7px 7px 7px;"><span style="color: white;">Campaign Status</span> </th> <th style="border-bottom: solid #4d90fe 1px; border-left: solid #4d90fe 1px; border-right: solid #4d90fe 1px; border-top: solid #4d90fe 1px; padding: 7px 7px 7px 7px;"><span style="color: white;">Advertising Channel Type</span> </th> <th style="border-bottom: solid #4d90fe 1px; border-left: solid #4d90fe 1px; border-right: solid #4d90fe 1px; border-top: solid #4d90fe 1px; padding: 7px 7px 7px 7px;"><span style="color: white;">Advertising Channel Sub Type</span> </th> <th style="border-bottom: solid #4d90fe 1px; border-left: solid #4d90fe 1px; border-right: solid #4d90fe 1px; border-top: solid #4d90fe 1px; padding: 7px 7px 7px 7px;"><span style="color: white;">Performance statistics</span> </th> </tr> <tr> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">1000</td> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle; background-color: #f6ff33">PAUSED</td> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">SEARCH</td> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">SEARCH_EXPRESS</td> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">Before the migration</td> </tr> <tr> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">2000</td> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle; background-color: #f6ff33">PAUSED</td> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">DISPLAY</td> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">DISPLAY_EXPRESS</td> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">Before the migration</td> </tr> <tr> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">3000</td> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle; background-color: #33ff77">ENABLED</td> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">EXPRESS</td> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">UNKNOWN</td> <td style="border-bottom: solid #bbbbbb 1px; border-left: solid #bbbbbb 1px; border-right: solid #bbbbbb 1px; border-top: solid #bbbbbb 1px; padding: 7px 7px 7px 7px; vertical-align: middle;">After the migration</td> </tr> </tbody> </table><br /> <font size="4">What should you do?</font><br /> Ensure that your application properly handles all three combinations of <code>AdvertisingChannelType</code> and <code>AdvertisingChannelSubType</code>. For example: <ul> <li>If your application <i>inspects</i> <code>AdvertisingChannelType</code> or <code>AdvertisingChannelSubType</code> to handle AdWords Express campaigns, please adjust the logic to handle the new combination of <code>EXPRESS / UNKNOWN</code>.</li> <li>If you use <i>predicates</i> on <code>AdvertisingChannelType</code> or <code>AdvertisingChannelSubType</code> to include or exclude AdWords Express campaigns, make sure that your predicate takes the new combination into account.</li> </ul> <b>Reminder</b>: The AdWords API only supports retrieving AdWords Express entities. You cannot modify AdWords Express entities in your account using the AdWords API.<br /><br /> If you have any questions about this change, please contact us via the <a href="https://developers.google.com/adwords/api/community/">forum</a>. <br /> <span class='byline-author'><img height="40" src="https://lh6.googleusercontent.com/QeXHV-SScZA0aSaUkBR96-GBjQjwxT5HxpWnSEY3iW-170vzU9Ik_2h6sr8u69_lxhRCSRqgBpUTCLyN6rfAzdb3m4WhJlQN99FRpB9EssuzxH9G02Zur-XLayR828IN-lrqB-vS" style="vertical-align: middle; border:none;" width="40"/> - <a href="https://plus.google.com/100205313733177937765/posts">Josh Radcliff</a>, AdWords API Team </span> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Google Ads Developer Blog:Changes to AdWords Express campaigns in AdWords API reports&url=http://ads-developers.googleblog.com/2017/11/changes-to-adwords-express-campaigns-in.html&via=google'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=http://ads-developers.googleblog.com/2017/11/changes-to-adwords-express-campaigns-in.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='http://ads-developers.googleblog.com/2017/11/changes-to-adwords-express-campaigns-in.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='http://ads-developers.googleblog.com/search/label/adwords_api' rel='tag'> adwords_api </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/reporting' rel='tag'> reporting </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/reports' rel='tag'> reports </a> </span> </div> </div> </div> <div class='post' data-id='4970070202624543839' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='http://ads-developers.googleblog.com/2017/11/dcmdfa-reporting-and-trafficking-api.html' itemprop='url' title='DCM/DFA Reporting and Trafficking API v2.7 sunset reminder'> DCM/DFA Reporting and Trafficking API v2.7 sunset reminder </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Wednesday, November 8, 2017 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <div dir="ltr" style="text-align: left;" trbidi="on"> DCM/DFA Reporting and Trafficking API v2.7 will be sunset on <b>December 7th, 2017</b>. From this date onwards, all requests made against v2.7 of this API will fail. If you're still actively working with this version, we strongly encourage you to begin migrating to the <a href="https://developers.google.com/doubleclick-advertisers/reporting/rel_notes">most current release</a> to avoid an interruption in service.<br /><br /> For most, migrating will be as easy as adopting the latest version of your preferred <a href="https://developers.google.com/doubleclick-advertisers/libraries">client library</a>. However, all users are advised to review the <a href="https://developers.google.com/doubleclick-advertisers/rel_notes">release notes</a> to learn about important version differences you may need to be aware of.<br /><br /> If you have questions about this or anything else DCM API related, feel free to reach out to us on our <a href="https://developers.google.com/doubleclick-advertisers/community">support forum</a>.<br /> <span class='byline-author'><img height="40" src="https://lh3.googleusercontent.com/5Fx-P8Wnnv_1K9Zc84OkvjbHJ7GlZHc03vkOext_0_yatHaexqvbWGtTze9NZMl5rVWVIij1U7x06y4p6RBUmTMcechxvPrzCze5Nxm3EyqW5pg4Ed2UENj4j7HbYXTRaD1js-9Y" style="vertical-align: middle; border:none;" width="40"/> - <a href="https://plus.sandbox.google.com/104065598364941870033/posts">Jonathon Imperiosi</a>, DCM API Team</span> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <div dir="ltr" style="text-align: left;" trbidi="on"> DCM/DFA Reporting and Trafficking API v2.7 will be sunset on <b>December 7th, 2017</b>. From this date onwards, all requests made against v2.7 of this API will fail. If you're still actively working with this version, we strongly encourage you to begin migrating to the <a href="https://developers.google.com/doubleclick-advertisers/reporting/rel_notes">most current release</a> to avoid an interruption in service.<br /><br /> For most, migrating will be as easy as adopting the latest version of your preferred <a href="https://developers.google.com/doubleclick-advertisers/libraries">client library</a>. However, all users are advised to review the <a href="https://developers.google.com/doubleclick-advertisers/rel_notes">release notes</a> to learn about important version differences you may need to be aware of.<br /><br /> If you have questions about this or anything else DCM API related, feel free to reach out to us on our <a href="https://developers.google.com/doubleclick-advertisers/community">support forum</a>.<br /> <span class='byline-author'><img height="40" src="https://lh3.googleusercontent.com/5Fx-P8Wnnv_1K9Zc84OkvjbHJ7GlZHc03vkOext_0_yatHaexqvbWGtTze9NZMl5rVWVIij1U7x06y4p6RBUmTMcechxvPrzCze5Nxm3EyqW5pg4Ed2UENj4j7HbYXTRaD1js-9Y" style="vertical-align: middle; border:none;" width="40"/> - <a href="https://plus.sandbox.google.com/104065598364941870033/posts">Jonathon Imperiosi</a>, DCM API Team</span> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Google Ads Developer Blog:DCM/DFA Reporting and Trafficking API v2.7 sunset reminder&url=http://ads-developers.googleblog.com/2017/11/dcmdfa-reporting-and-trafficking-api.html&via=google'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=http://ads-developers.googleblog.com/2017/11/dcmdfa-reporting-and-trafficking-api.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='http://ads-developers.googleblog.com/2017/11/dcmdfa-reporting-and-trafficking-api.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='http://ads-developers.googleblog.com/search/label/dfa_api' rel='tag'> dfa_api </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/sunset' rel='tag'> sunset </a> </span> </div> </div> </div> <div class='post' data-id='7347661977439305356' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='http://ads-developers.googleblog.com/2017/11/search-impression-share-data-will-be.html' itemprop='url' title='Search impression share data will be updated more frequently'> Search impression share data will be updated more frequently </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Tuesday, November 7, 2017 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <div dir="ltr" style="text-align: left;" trbidi="on"> Starting mid-November, we’ll be updating AdWords API impression share <a href="https://developers.google.com/adwords/api/docs/guides/reporting">reporting</a> data more frequently. As a result, you'll be able to get the previous day's data by 12 PM (your local time). Previously, you might have had to wait up to 48 hours for the previous day’s data. This change affects the following reporting fields: <ul> <li><code>SearchBudgetLostImpressionShare</code></li> <li><code>SearchExactMatchImpressionShare</code></li> <li><code>SearchImpressionShare</code></li> <li><code>SearchRankLostImpressionShare</code></li> </ul> With this change, you may see data fluctuate for <a href="https://developers.google.com/adwords/api/docs/guides/reporting#create_a_report_definition">report definitions</a> that contain any of the above fields along with one of the following <a href="https://developers.google.com/adwords/api/docs/guides/reporting#date_ranges">date ranges</a>: <ul> <li><code>YESTERDAY, TODAY, LAST_7_DAYS, THIS_MONTH, ALL_TIME, LAST_14_DAYS, LAST_30_DAYS, THIS_WEEK_SUN_TODAY, THIS_WEEK_MON_TODAY</code></li> <li><code>CUSTOM_DATE</code> that includes the current date or the day before the day when you make a report request</li> </ul> This change allows for more real-time monitoring of search impression share. If you prefer to see more stable values, make sure the <a href="https://developers.google.com/adwords/api/docs/guides/reporting#date_ranges">date range</a> in your request doesn’t include the <i>current date or yesterday if it’s not yet 12 PM in your time zone</i>.<br /><br /> As always, if you have any questions, please post on the <a href="https://developers.google.com/adwords/api/community/">forum</a>.<br /> <span class='byline-author'><a href="https://plus.google.com/u/0/114287942279014911885"><img height="40" src="https://lh3.googleusercontent.com/-uGJ74K4l6os/AAAAAAAAAAI/AAAAAAAAADY/-NAP6xAT8Fk/s120-c/photo.jpg" style="vertical-align:middle; border:none;" width="40"></a> - <a href="https://plus.google.com/u/0/114287942279014911885" rel="author">Thanet Praneenararat</a>, AdWords API Team</span> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <div dir="ltr" style="text-align: left;" trbidi="on"> Starting mid-November, we’ll be updating AdWords API impression share <a href="https://developers.google.com/adwords/api/docs/guides/reporting">reporting</a> data more frequently. As a result, you'll be able to get the previous day's data by 12 PM (your local time). Previously, you might have had to wait up to 48 hours for the previous day’s data. This change affects the following reporting fields: <ul> <li><code>SearchBudgetLostImpressionShare</code></li> <li><code>SearchExactMatchImpressionShare</code></li> <li><code>SearchImpressionShare</code></li> <li><code>SearchRankLostImpressionShare</code></li> </ul> With this change, you may see data fluctuate for <a href="https://developers.google.com/adwords/api/docs/guides/reporting#create_a_report_definition">report definitions</a> that contain any of the above fields along with one of the following <a href="https://developers.google.com/adwords/api/docs/guides/reporting#date_ranges">date ranges</a>: <ul> <li><code>YESTERDAY, TODAY, LAST_7_DAYS, THIS_MONTH, ALL_TIME, LAST_14_DAYS, LAST_30_DAYS, THIS_WEEK_SUN_TODAY, THIS_WEEK_MON_TODAY</code></li> <li><code>CUSTOM_DATE</code> that includes the current date or the day before the day when you make a report request</li> </ul> This change allows for more real-time monitoring of search impression share. If you prefer to see more stable values, make sure the <a href="https://developers.google.com/adwords/api/docs/guides/reporting#date_ranges">date range</a> in your request doesn’t include the <i>current date or yesterday if it’s not yet 12 PM in your time zone</i>.<br /><br /> As always, if you have any questions, please post on the <a href="https://developers.google.com/adwords/api/community/">forum</a>.<br /> <span class='byline-author'><a href="https://plus.google.com/u/0/114287942279014911885"><img height="40" src="https://lh3.googleusercontent.com/-uGJ74K4l6os/AAAAAAAAAAI/AAAAAAAAADY/-NAP6xAT8Fk/s120-c/photo.jpg" style="vertical-align:middle; border:none;" width="40"></a> - <a href="https://plus.google.com/u/0/114287942279014911885" rel="author">Thanet Praneenararat</a>, AdWords API Team</span> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Google Ads Developer Blog:Search impression share data will be updated more frequently&url=http://ads-developers.googleblog.com/2017/11/search-impression-share-data-will-be.html&via=google'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=http://ads-developers.googleblog.com/2017/11/search-impression-share-data-will-be.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='http://ads-developers.googleblog.com/2017/11/search-impression-share-data-will-be.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='http://ads-developers.googleblog.com/search/label/adwords_api' rel='tag'> adwords_api </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/reporting' rel='tag'> reporting </a> </span> </div> </div> </div> <div class='post' data-id='7330904736308728807' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='http://ads-developers.googleblog.com/2017/10/kotlin-and-google-mobile-ads-sdk.html' itemprop='url' title='Kotlin and the Google Mobile Ads SDK'> Kotlin and the Google Mobile Ads SDK </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Friday, October 27, 2017 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <p> One of the biggest cheers from the crowd at I/O '17 came in response to Stephanie Saad Cuthbertson's <a href="https://www.youtube.com/watch?v=Y2VF8tmLFHw&t=1h27m25s">announcement</a> that Kotlin would be an officially supported language for Android development starting with Android Studio 3.0. If you're an AdMob or Doubleclick publisher who's been eager to make the leap to a new language, we've got another announcement you might like: now that the new version of Android Studio <a href="https://android-developers.googleblog.com/2017/10/android-studio-30.html">has launched</a>, we've released bunch of new mobile ads resources to support the Kotlin community. </p> <p> If you haven't seen Kotlin yet, it's a statically typed language developed by JetBrains that compiles down to the same JVM bytecode that Java does, but includes a number of new features that can make Android development faster and easier. Things like dedicated data classes with less boilerplate, the Elvis operator, lambdas, SAM conversion, explicit nullability for references, and lots of other modern language features come built-in. For more information, see <a href="https://www.youtube.com/watch?v=X1RVYt2QKQE">Introduction to Kotlin</a> (also from I/O '17) in which Andrey Breslav and Hadi Hariri code up examples of the language's best features: </p> <center><iframe width="560" height="315" src="https://www.youtube.com/embed/X1RVYt2QKQE" frameborder="0" gesture="media" allowfullscreen></iframe></center> <p> When you're done, you can see those same features in action in our new developer resources, which are now available to the AdMob and Doubleclick publisher community. </p> <h2>Samples</h2> <p> The Mobile Ads DevRel team maintains a GitHub repository of <a href="https://github.com/googleads/googleads-mobile-android-examples">Android samples</a> covering our API, and we've pushed Kotlin versions for each ad format. If you been wondering how Kotlin's <a href="https://kotlinlang.org/docs/tutorials/android-plugin.html">Android extensions</a> work with AdMob's banner ad layouts, for example, we've got a new sample app that'll show you. If you're curious how native ads work with all the new nullability stuff, we've got you covered with Kotlin samples for those formats as well. </p> <p> In addition, we've included a new version of our API Demo app, which features a navigation drawer full of individual API demos for things like banner sizes, category exclusions, and more, all in Kotlin. </p> <div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivLwCR37y9mXVfloBmA3VX6hUbzV_ehbsdDeNSpINS9lEt9y83Jr8Y465OKatsE-Nb0tE5AlT8nNCGUPZ75rn-LhuHQrTY8MNiJAQTjE-NixozqD5dbSW54W9XjlpOTnb9_xJuxd-jJoo/s1600/image1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="373" data-original-width="633" height="377" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivLwCR37y9mXVfloBmA3VX6hUbzV_ehbsdDeNSpINS9lEt9y83Jr8Y465OKatsE-Nb0tE5AlT8nNCGUPZ75rn-LhuHQrTY8MNiJAQTjE-NixozqD5dbSW54W9XjlpOTnb9_xJuxd-jJoo/s640/image1.png" width="640" /></a></div> <h2>Implementation Guides</h2> <p> We've also updated our publisher guides with Kotlin snippets wherever code is shown. Similar to the mobile ads guides for iOS (which show either Swift or Objective-C syntax with a click of a tab), the Android guides now let developers easily switch back and forth between Java and Kotlin implementations. </p> <h2>Questions?</h2> <p> If you take a look at the Kotlin guides and samples and find you've got questions about the best way to implement something in Android's first ever new language, stop by our <a href="https://groups.google.com/forum/#!forum/google-admob-ads-sdk">support forum</a>. Our staff there will be happy to help. </p> <div><span class="post-author"><a href="https://plus.google.com/102897862769307054804"><img height="40" src="https://lh4.googleusercontent.com/-F_ImMN4gfQo/AAAAAAAAAAI/AAAAAAAAACw/95ayNBf5kr4/s120-c/photo.jpg?s=40" style="border: none; vertical-align: middle;" width="40" /></a> - <a href="https://plus.google.com/102897862769307054804/" rel="author">Andrew Brogdon</a>, Mobile Ads Developer Relations</span> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <p> One of the biggest cheers from the crowd at I/O '17 came in response to Stephanie Saad Cuthbertson's <a href="https://www.youtube.com/watch?v=Y2VF8tmLFHw&t=1h27m25s">announcement</a> that Kotlin would be an officially supported language for Android development starting with Android Studio 3.0. If you're an AdMob or Doubleclick publisher who's been eager to make the leap to a new language, we've got another announcement you might like: now that the new version of Android Studio <a href="https://android-developers.googleblog.com/2017/10/android-studio-30.html">has launched</a>, we've released bunch of new mobile ads resources to support the Kotlin community. </p> <p> If you haven't seen Kotlin yet, it's a statically typed language developed by JetBrains that compiles down to the same JVM bytecode that Java does, but includes a number of new features that can make Android development faster and easier. Things like dedicated data classes with less boilerplate, the Elvis operator, lambdas, SAM conversion, explicit nullability for references, and lots of other modern language features come built-in. For more information, see <a href="https://www.youtube.com/watch?v=X1RVYt2QKQE">Introduction to Kotlin</a> (also from I/O '17) in which Andrey Breslav and Hadi Hariri code up examples of the language's best features: </p> <center><iframe width="560" height="315" src="https://www.youtube.com/embed/X1RVYt2QKQE" frameborder="0" gesture="media" allowfullscreen></iframe></center> <p> When you're done, you can see those same features in action in our new developer resources, which are now available to the AdMob and Doubleclick publisher community. </p> <h2>Samples</h2> <p> The Mobile Ads DevRel team maintains a GitHub repository of <a href="https://github.com/googleads/googleads-mobile-android-examples">Android samples</a> covering our API, and we've pushed Kotlin versions for each ad format. If you been wondering how Kotlin's <a href="https://kotlinlang.org/docs/tutorials/android-plugin.html">Android extensions</a> work with AdMob's banner ad layouts, for example, we've got a new sample app that'll show you. If you're curious how native ads work with all the new nullability stuff, we've got you covered with Kotlin samples for those formats as well. </p> <p> In addition, we've included a new version of our API Demo app, which features a navigation drawer full of individual API demos for things like banner sizes, category exclusions, and more, all in Kotlin. </p> <div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivLwCR37y9mXVfloBmA3VX6hUbzV_ehbsdDeNSpINS9lEt9y83Jr8Y465OKatsE-Nb0tE5AlT8nNCGUPZ75rn-LhuHQrTY8MNiJAQTjE-NixozqD5dbSW54W9XjlpOTnb9_xJuxd-jJoo/s1600/image1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="373" data-original-width="633" height="377" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivLwCR37y9mXVfloBmA3VX6hUbzV_ehbsdDeNSpINS9lEt9y83Jr8Y465OKatsE-Nb0tE5AlT8nNCGUPZ75rn-LhuHQrTY8MNiJAQTjE-NixozqD5dbSW54W9XjlpOTnb9_xJuxd-jJoo/s640/image1.png" width="640" /></a></div> <h2>Implementation Guides</h2> <p> We've also updated our publisher guides with Kotlin snippets wherever code is shown. Similar to the mobile ads guides for iOS (which show either Swift or Objective-C syntax with a click of a tab), the Android guides now let developers easily switch back and forth between Java and Kotlin implementations. </p> <h2>Questions?</h2> <p> If you take a look at the Kotlin guides and samples and find you've got questions about the best way to implement something in Android's first ever new language, stop by our <a href="https://groups.google.com/forum/#!forum/google-admob-ads-sdk">support forum</a>. Our staff there will be happy to help. </p> <div><span class="post-author"><a href="https://plus.google.com/102897862769307054804"><img height="40" src="https://lh4.googleusercontent.com/-F_ImMN4gfQo/AAAAAAAAAAI/AAAAAAAAACw/95ayNBf5kr4/s120-c/photo.jpg?s=40" style="border: none; vertical-align: middle;" width="40" /></a> - <a href="https://plus.google.com/102897862769307054804/" rel="author">Andrew Brogdon</a>, Mobile Ads Developer Relations</span> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Google Ads Developer Blog:Kotlin and the Google Mobile Ads SDK&url=http://ads-developers.googleblog.com/2017/10/kotlin-and-google-mobile-ads-sdk.html&via=google'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=http://ads-developers.googleblog.com/2017/10/kotlin-and-google-mobile-ads-sdk.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='http://ads-developers.googleblog.com/2017/10/kotlin-and-google-mobile-ads-sdk.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='http://ads-developers.googleblog.com/search/label/admob' rel='tag'> admob </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/android' rel='tag'> android </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/dfp' rel='tag'> dfp </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/dfp_mobile' rel='tag'> dfp_mobile </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/kotlin' rel='tag'> kotlin </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/mobile' rel='tag'> mobile </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/mobile_ads_sdk' rel='tag'> mobile_ads_sdk </a> </span> </div> </div> </div> <div class='post' data-id='6108876222284642611' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='http://ads-developers.googleblog.com/2017/10/ad-exchange-seller-rest-api-deprecation.html' itemprop='url' title='Ad Exchange Seller REST API Deprecation'> Ad Exchange Seller REST API Deprecation </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Thursday, October 26, 2017 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <div dir="ltr" style="text-align: left;" trbidi="on"> The <a href="https://developers.google.com/ad-exchange/seller-rest/">Ad Exchange Seller REST API</a> is being deprecated as of October 26, 2017. No new API clients will be supported after this date. Existing API clients will need to migrate to the <a href="http://developers.google.com/doubleclick-publishers/">DoubleClick for Publishers API</a> before July 26, 2018. After this date, all requests to the Ad Exchange Seller REST API will return errors.<br /> <br /> <h4 style="text-align: left;"> What action is required</h4> <div> <br /></div> Current Ad Exchange Seller REST API users will need to migrate to the <a href="http://developers.google.com/doubleclick-publishers/">DoubleClick for Publishers API</a> before July 26, 2018. This <a href="http://developers.google.com/doubleclick-publishers/docs/adx_reporting_migration">migration guide</a> provides a mapping of each Ad Exchange reporting metric to its equivalent in the DFP API. <br /> <br /> <div> For more details about reporting in the DFP API, see the <a href="http://developers.google.com/doubleclick-publishers/docs/reporting">reporting guide</a>.</div> <div> For general assistance with the DFP API or your migration, reach out on our <a href="https://groups.google.com/forum/#!forum/google-doubleclick-for-publishers-api">developer forum</a>.<br /> <div> <div> <h4> </h4> <h4> Why this is happening</h4> <br /> As a part of our effort to provide a unified tool to manage your ad business and monetize your inventory, the DoubleClick for Publishers API now supports all of the features of the Ad Exchange Seller REST API. The DFP API is more robust and has more frequent updates.<br /> <br /> <h4 style="text-align: left;"> What isn't changing</h4> <br /> Users will not need to create new accounts. All Ad Exchange Seller users already have a <a href="https://www.google.com/dfp">DoubleClick for Publishers</a> account.<br /> <br /> No data is changing. The only change is how you programmatically access that data.<br /> <br /> <span class="post-author"><a href="https://plus.google.com/+ChrisSeeleyDev/"><img height="40" src="https://lh5.googleusercontent.com/-TNi3xzhCCXs/VpbZs1v3sEI/AAAAAAAAgRI/nHHw7e2xKMw4Dsb_ZAgForpL1v-TLyf-A/s402-no/12040026.jpg?sz=120" style="border: none; vertical-align: middle;" width="40" /></a> - <a href="https://plus.google.com/+ChrisSeeleyDev/" rel="author">Chris Seeley</a>, DFP API Team</span> </div> </div> </div> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <div dir="ltr" style="text-align: left;" trbidi="on"> The <a href="https://developers.google.com/ad-exchange/seller-rest/">Ad Exchange Seller REST API</a> is being deprecated as of October 26, 2017. No new API clients will be supported after this date. Existing API clients will need to migrate to the <a href="http://developers.google.com/doubleclick-publishers/">DoubleClick for Publishers API</a> before July 26, 2018. After this date, all requests to the Ad Exchange Seller REST API will return errors.<br /> <br /> <h4 style="text-align: left;"> What action is required</h4> <div> <br /></div> Current Ad Exchange Seller REST API users will need to migrate to the <a href="http://developers.google.com/doubleclick-publishers/">DoubleClick for Publishers API</a> before July 26, 2018. This <a href="http://developers.google.com/doubleclick-publishers/docs/adx_reporting_migration">migration guide</a> provides a mapping of each Ad Exchange reporting metric to its equivalent in the DFP API. <br /> <br /> <div> For more details about reporting in the DFP API, see the <a href="http://developers.google.com/doubleclick-publishers/docs/reporting">reporting guide</a>.</div> <div> For general assistance with the DFP API or your migration, reach out on our <a href="https://groups.google.com/forum/#!forum/google-doubleclick-for-publishers-api">developer forum</a>.<br /> <div> <div> <h4> </h4> <h4> Why this is happening</h4> <br /> As a part of our effort to provide a unified tool to manage your ad business and monetize your inventory, the DoubleClick for Publishers API now supports all of the features of the Ad Exchange Seller REST API. The DFP API is more robust and has more frequent updates.<br /> <br /> <h4 style="text-align: left;"> What isn't changing</h4> <br /> Users will not need to create new accounts. All Ad Exchange Seller users already have a <a href="https://www.google.com/dfp">DoubleClick for Publishers</a> account.<br /> <br /> No data is changing. The only change is how you programmatically access that data.<br /> <br /> <span class="post-author"><a href="https://plus.google.com/+ChrisSeeleyDev/"><img height="40" src="https://lh5.googleusercontent.com/-TNi3xzhCCXs/VpbZs1v3sEI/AAAAAAAAgRI/nHHw7e2xKMw4Dsb_ZAgForpL1v-TLyf-A/s402-no/12040026.jpg?sz=120" style="border: none; vertical-align: middle;" width="40" /></a> - <a href="https://plus.google.com/+ChrisSeeleyDev/" rel="author">Chris Seeley</a>, DFP API Team</span> </div> </div> </div> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Google Ads Developer Blog:Ad Exchange Seller REST API Deprecation&url=http://ads-developers.googleblog.com/2017/10/ad-exchange-seller-rest-api-deprecation.html&via=google'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=http://ads-developers.googleblog.com/2017/10/ad-exchange-seller-rest-api-deprecation.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='http://ads-developers.googleblog.com/2017/10/ad-exchange-seller-rest-api-deprecation.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='http://ads-developers.googleblog.com/search/label/ad_exchange' rel='tag'> ad_exchange </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/ad_exchange_rest' rel='tag'> ad_exchange_rest </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/ad_exchange_seller' rel='tag'> ad_exchange_seller </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/dfp_api' rel='tag'> dfp_api </a> </span> </div> </div> </div> <div class='post' data-id='7776144849188332954' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='http://ads-developers.googleblog.com/2017/10/get-your-ads-ready-for-iphone-x.html' itemprop='url' title='Get your ads ready for iPhone X'> Get your ads ready for iPhone X </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Wednesday, October 25, 2017 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <i>Cross-posted from the <a href="https://admob.googleblog.com/2017/10/get-your-ads-ready-for-iphone-x_23.html">AdMob blog</a>.</i> <p> Every interaction a user has with your app matters. That's why we're constantly evolving our advertising recommendations and policies to ensure that no matter where and on what device users are engaging with your apps, they have good experiences. </p> <div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvjgvyb1HIeIxFdxyl-nW-5Y1jaQRfHumqjwHvCEkO5AddVl09TsLCNi3GryhTczaMXgxEpO6hoEWzN1xTGFoK9SbQf8A3ZyiU0jdYzGme8lGfMw4B7PKy1t9Jpz5uFA3Xxn0U9OHqXv0/s1600/image1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="234" data-original-width="857" height="109" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvjgvyb1HIeIxFdxyl-nW-5Y1jaQRfHumqjwHvCEkO5AddVl09TsLCNi3GryhTczaMXgxEpO6hoEWzN1xTGFoK9SbQf8A3ZyiU0jdYzGme8lGfMw4B7PKy1t9Jpz5uFA3Xxn0U9OHqXv0/s400/image1.png" width="400" /></a></div> <em>Example of ad appearing outside of "safe area" on iPhone X</em> <p> With the launch of the iPhone X, app developers now need to plan for new design considerations as the rounded corners, notch, and home screen indicator on the extended screen can obscure content and lead to poor ad experiences for users when ads are placed in these areas. </p> <p> That's why we've put together a <a href="https://developers.google.com/admob/ios/x-ad-rendering">guide</a> to help you adapt your ad strategy for iPhone X. This includes guidance for how you can shift placement of banner or native ads to designated "safe areas" for this new device. </p> <p> We've also updated our <a href="https://support.google.com/admob/answer/2753860#ad_placement">policies</a> to indicate that ads must not be placed where objects may interfere with the user's typical interaction with the ad or app, such as under the home screen indicator on the iPhone X. </p> <p> Please review these policy updates and our suggested implementation <a href="https://developers.google.com/admob/ios/x-ad-rendering">guide</a> to ensure you're compliant by November 20th. </p> <p> If you have any questions, visit the <a href="https://support.google.com/admob?ctx=blog#topic=7383088">AdMob Help Center</a> or contact your Google account team.</p> <p>Posted by Pablo Alvarez, Product Manager, AdMob</p> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <i>Cross-posted from the <a href="https://admob.googleblog.com/2017/10/get-your-ads-ready-for-iphone-x_23.html">AdMob blog</a>.</i> <p> Every interaction a user has with your app matters. That's why we're constantly evolving our advertising recommendations and policies to ensure that no matter where and on what device users are engaging with your apps, they have good experiences. </p> <div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvjgvyb1HIeIxFdxyl-nW-5Y1jaQRfHumqjwHvCEkO5AddVl09TsLCNi3GryhTczaMXgxEpO6hoEWzN1xTGFoK9SbQf8A3ZyiU0jdYzGme8lGfMw4B7PKy1t9Jpz5uFA3Xxn0U9OHqXv0/s1600/image1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="234" data-original-width="857" height="109" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvjgvyb1HIeIxFdxyl-nW-5Y1jaQRfHumqjwHvCEkO5AddVl09TsLCNi3GryhTczaMXgxEpO6hoEWzN1xTGFoK9SbQf8A3ZyiU0jdYzGme8lGfMw4B7PKy1t9Jpz5uFA3Xxn0U9OHqXv0/s400/image1.png" width="400" /></a></div> <em>Example of ad appearing outside of "safe area" on iPhone X</em> <p> With the launch of the iPhone X, app developers now need to plan for new design considerations as the rounded corners, notch, and home screen indicator on the extended screen can obscure content and lead to poor ad experiences for users when ads are placed in these areas. </p> <p> That's why we've put together a <a href="https://developers.google.com/admob/ios/x-ad-rendering">guide</a> to help you adapt your ad strategy for iPhone X. This includes guidance for how you can shift placement of banner or native ads to designated "safe areas" for this new device. </p> <p> We've also updated our <a href="https://support.google.com/admob/answer/2753860#ad_placement">policies</a> to indicate that ads must not be placed where objects may interfere with the user's typical interaction with the ad or app, such as under the home screen indicator on the iPhone X. </p> <p> Please review these policy updates and our suggested implementation <a href="https://developers.google.com/admob/ios/x-ad-rendering">guide</a> to ensure you're compliant by November 20th. </p> <p> If you have any questions, visit the <a href="https://support.google.com/admob?ctx=blog#topic=7383088">AdMob Help Center</a> or contact your Google account team.</p> <p>Posted by Pablo Alvarez, Product Manager, AdMob</p> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Google Ads Developer Blog:Get your ads ready for iPhone X&url=http://ads-developers.googleblog.com/2017/10/get-your-ads-ready-for-iphone-x.html&via=google'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=http://ads-developers.googleblog.com/2017/10/get-your-ads-ready-for-iphone-x.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='http://ads-developers.googleblog.com/2017/10/get-your-ads-ready-for-iphone-x.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='http://ads-developers.googleblog.com/search/label/admob' rel='tag'> admob </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/iOS' rel='tag'> iOS </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/mobile_ads_sdk' rel='tag'> mobile_ads_sdk </a> </span> </div> </div> </div> <div class='post' data-id='7897247433650840690' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='http://ads-developers.googleblog.com/2017/10/keywordoptimizer-call-for-feature.html' itemprop='url' title='KeywordOptimizer: Call For Feature Requests'> KeywordOptimizer: Call For Feature Requests </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Thursday, October 19, 2017 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <div dir="ltr" style="text-align: left;" trbidi="on"> The <a href="https://github.com/googleads/keyword-optimizer">KeywordOptimizer</a> open-source app demonstrates the exciting possibilities of using the Targeting Idea Service in the <a href="https://developers.google.com/adwords/api/docs/reference/v201710/TargetingIdeaService">AdWords API</a> to identify new keyword suggestions. The app shows how, in combination with estimated traffic volume, to generate new keyword targeting ideas for AdWords using an <a href="https://en.wikipedia.org/wiki/Evolutionary_algorithm">evolutionary approach</a>. We think that there is a lot more that the tool could do to demonstrate these and other features so we’re asking for your ideas to help shape the future development of the app.<br /><br /> If you’re interested in using KeywordOptimizer or are already using it, we would like to hear your ideas on how we can improve the app. Please submit your suggestions via the <a href="https://github.com/googleads/keyword-optimizer/issues">GitHub issues page</a>.<br /> <span class='byline-author'><a href="https://plus.google.com/109796202278783565960"><img height="40" src="https://lh3.googleusercontent.com/htGyHS0L-lFkYLqgaCNL9ZAisSbgq5JjePTYY1hEa1pm32FAA7vooG4tJE-bSsufW4kxT_DMiYpi=w480-h481-rw-no?s=40" style="border: none; vertical-align: middle;" width="40" /></a> - <a href="https://plus.google.com/109796202278783565960" rel="author">Damien Allison</a>, AdWords API Team</span> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <div dir="ltr" style="text-align: left;" trbidi="on"> The <a href="https://github.com/googleads/keyword-optimizer">KeywordOptimizer</a> open-source app demonstrates the exciting possibilities of using the Targeting Idea Service in the <a href="https://developers.google.com/adwords/api/docs/reference/v201710/TargetingIdeaService">AdWords API</a> to identify new keyword suggestions. The app shows how, in combination with estimated traffic volume, to generate new keyword targeting ideas for AdWords using an <a href="https://en.wikipedia.org/wiki/Evolutionary_algorithm">evolutionary approach</a>. We think that there is a lot more that the tool could do to demonstrate these and other features so we’re asking for your ideas to help shape the future development of the app.<br /><br /> If you’re interested in using KeywordOptimizer or are already using it, we would like to hear your ideas on how we can improve the app. Please submit your suggestions via the <a href="https://github.com/googleads/keyword-optimizer/issues">GitHub issues page</a>.<br /> <span class='byline-author'><a href="https://plus.google.com/109796202278783565960"><img height="40" src="https://lh3.googleusercontent.com/htGyHS0L-lFkYLqgaCNL9ZAisSbgq5JjePTYY1hEa1pm32FAA7vooG4tJE-bSsufW4kxT_DMiYpi=w480-h481-rw-no?s=40" style="border: none; vertical-align: middle;" width="40" /></a> - <a href="https://plus.google.com/109796202278783565960" rel="author">Damien Allison</a>, AdWords API Team</span> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Google Ads Developer Blog:KeywordOptimizer: Call For Feature Requests&url=http://ads-developers.googleblog.com/2017/10/keywordoptimizer-call-for-feature.html&via=google'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=http://ads-developers.googleblog.com/2017/10/keywordoptimizer-call-for-feature.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='http://ads-developers.googleblog.com/2017/10/keywordoptimizer-call-for-feature.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='http://ads-developers.googleblog.com/search/label/adwords_api' rel='tag'> adwords_api </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/keyword_optimizer' rel='tag'> keyword_optimizer </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/open_source' rel='tag'> open_source </a> </span> </div> </div> </div> <div class='post' data-id='7474933981299049070' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='http://ads-developers.googleblog.com/2017/10/announcing-v201710-of-adwords-api.html' itemprop='url' title='Announcing v201710 of the AdWords API'> Announcing v201710 of the AdWords API </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Tuesday, October 10, 2017 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <div dir="ltr" style="text-align: left;" trbidi="on"> Today we’re announcing the release of <a href="https://developers.google.com/adwords/api/docs/reference/release-notes/v201710">AdWords API v201710</a>. Here are some of the highlights for key AdWords features: <ul> <li><b>Account-level placement exclusions.</b> The new <a href="https://developers.google.com/adwords/api/docs/reference/v201710/CustomerNegativeCriterionService">CustomerNegativeCriterionService</a> allows you to exclude specific criteria across all campaigns in an account. The <a href="https://developers.google.com/adwords/api/docs/guides/negative-keywords-shared-sets#account-level_negative_criteria">guide</a> contains step-by-step instructions for using this service.</li> <li><b>Promotion extensions.</b> You can now create promotion extensions for <a href="https://developers.google.com/adwords/api/docs/appendix/codes-formats#languages">different languages</a>. Check out the updated <a href="https://developers.google.com/adwords/api/docs/guides/extension-settings#promotion_extensions">Extension Settings guide</a> for examples and instructions.</li> <li><b>Shared sets for manager accounts.</b> The AdWords API now supports the creation of <a href="https://developers.google.com/adwords/api/docs/guides/negative-keywords-shared-sets#shared_sets">shared negative keyword sets</a> for manager accounts. Previously, creation of <a href="https://developers.google.com/adwords/api/docs/reference/latest/SharedSetService.SharedSet">SharedSets</a> via the AdWords API was only supported for client accounts.</li> <li><b>Ad rotation settings.</b> You can now manage the new ad rotation settings <a href="https://adwords.googleblog.com/2017/08/introducing-better-simpler-ad-rotation.html">announced in August</a> via the AdWords API. The updated <a href="https://developers.google.com/adwords/api/docs/clientlibraries">code examples</a> for adding <a href="https://developers.google.com/adwords/api/docs/reference/latest/AdGroupService.AdGroup">AdGroups</a> demonstrate how to set the new rotation options.</li> <li><b>Customer match by phone number.</b> You can now include phone numbers when uploading <a href="https://developers.google.com/adwords/api/docs/reference/v201710/AdwordsUserListService.Member">Members</a> of a <a href="https://developers.google.com/adwords/api/docs/reference/v201710/AdwordsUserListService.CrmBasedUserList">CrmBasedUserList</a>. The updated <a href="https://developers.google.com/adwords/api/docs/guides/remarketing#customer_match_with_phone_number">remarketing guide</a> contains requirements and details.</li> <li><b>Batch job support for shared sets.</b> <a href="https://developers.google.com/adwords/api/docs/reference/latest/BatchJobService">BatchJobService</a> now supports <a href="https://developers.google.com/adwords/api/docs/reference/latest/CampaignSharedSetService.CampaignSharedSetOperation">CampaignSharedSetOperations</a>, <a href="https://developers.google.com/adwords/api/docs/reference/latest/SharedCriterionService.SharedCriterionOperation">SharedCriterionOperations</a>, and <a href="https://developers.google.com/adwords/api/docs/reference/latest/SharedSetService.SharedSetOperation">SharedSetOperations</a> for managing <a href="https://developers.google.com/adwords/api/docs/guides/negative-keywords-shared-sets#shared_sets">shared sets</a>. Check out the updated <a href="https://developers.google.com/adwords/api/docs/guides/batch-jobs">Batch Processing guide</a> for details.</li> </ul> If you’re using v201702 of the AdWords API, please note that it will <a href="https://developers.google.com/adwords/api/docs/sunset-dates">be sunset</a> on <b>February 14, 2018</b>. We encourage you to skip v201705 and v201708 and migrate straight to v201710. Please note that v201705 is deprecated. As mentioned in the <a href="https://googleadsdeveloper.blogspot.com/2017/10/adwords-api-release-and-sunset-schedule.html">recent blog post on the sunset and release schedule</a>, <b>both v201705 and v201708</b> will be sunset on <b>March 28, 2018</b>.<br /><br /> As with every new version of the AdWords API, please carefully review all changes in the <a href="https://developers.google.com/adwords/api/docs/reference/release-notes/v201710">release notes</a> and the <a href="https://developers.google.com/adwords/api/docs/guides/migration/v201710">v201710 migration guide</a>. The updated <a href="https://developers.google.com/adwords/api/docs/clientlibraries">client libraries</a> and code examples will be published within the next 48 hours.<br /><br /> If you have any questions or need help with migration, please post on the <a href="https://developers.google.com/adwords/api/community/">forum</a> or the <a href="https://plus.google.com/+GoogleAdsDevelopers">Ads Developers Plus Page</a>.<br /> <span class='byline-author'><img height="40" src="https://lh4.googleusercontent.com/Hb__krHgcbJNUfGdmkwOhufxlp_wOGvJz25j1_vSySBMInYSOF4-XjjsQ9SU4XPJZ33_z-dZ3Sfbqcw5OkpGWhzzKsoGne5zDCNSOZBelNG-M4JtiqQxMVm73rsxmhPx1UY-nfER" style="vertical-align: middle; border:none;" width="40"/> - <a href="https://plus.google.com/100205313733177937765/posts">Josh Radcliff</a> on behalf of the AdWords API Team</span> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <div dir="ltr" style="text-align: left;" trbidi="on"> Today we’re announcing the release of <a href="https://developers.google.com/adwords/api/docs/reference/release-notes/v201710">AdWords API v201710</a>. Here are some of the highlights for key AdWords features: <ul> <li><b>Account-level placement exclusions.</b> The new <a href="https://developers.google.com/adwords/api/docs/reference/v201710/CustomerNegativeCriterionService">CustomerNegativeCriterionService</a> allows you to exclude specific criteria across all campaigns in an account. The <a href="https://developers.google.com/adwords/api/docs/guides/negative-keywords-shared-sets#account-level_negative_criteria">guide</a> contains step-by-step instructions for using this service.</li> <li><b>Promotion extensions.</b> You can now create promotion extensions for <a href="https://developers.google.com/adwords/api/docs/appendix/codes-formats#languages">different languages</a>. Check out the updated <a href="https://developers.google.com/adwords/api/docs/guides/extension-settings#promotion_extensions">Extension Settings guide</a> for examples and instructions.</li> <li><b>Shared sets for manager accounts.</b> The AdWords API now supports the creation of <a href="https://developers.google.com/adwords/api/docs/guides/negative-keywords-shared-sets#shared_sets">shared negative keyword sets</a> for manager accounts. Previously, creation of <a href="https://developers.google.com/adwords/api/docs/reference/latest/SharedSetService.SharedSet">SharedSets</a> via the AdWords API was only supported for client accounts.</li> <li><b>Ad rotation settings.</b> You can now manage the new ad rotation settings <a href="https://adwords.googleblog.com/2017/08/introducing-better-simpler-ad-rotation.html">announced in August</a> via the AdWords API. The updated <a href="https://developers.google.com/adwords/api/docs/clientlibraries">code examples</a> for adding <a href="https://developers.google.com/adwords/api/docs/reference/latest/AdGroupService.AdGroup">AdGroups</a> demonstrate how to set the new rotation options.</li> <li><b>Customer match by phone number.</b> You can now include phone numbers when uploading <a href="https://developers.google.com/adwords/api/docs/reference/v201710/AdwordsUserListService.Member">Members</a> of a <a href="https://developers.google.com/adwords/api/docs/reference/v201710/AdwordsUserListService.CrmBasedUserList">CrmBasedUserList</a>. The updated <a href="https://developers.google.com/adwords/api/docs/guides/remarketing#customer_match_with_phone_number">remarketing guide</a> contains requirements and details.</li> <li><b>Batch job support for shared sets.</b> <a href="https://developers.google.com/adwords/api/docs/reference/latest/BatchJobService">BatchJobService</a> now supports <a href="https://developers.google.com/adwords/api/docs/reference/latest/CampaignSharedSetService.CampaignSharedSetOperation">CampaignSharedSetOperations</a>, <a href="https://developers.google.com/adwords/api/docs/reference/latest/SharedCriterionService.SharedCriterionOperation">SharedCriterionOperations</a>, and <a href="https://developers.google.com/adwords/api/docs/reference/latest/SharedSetService.SharedSetOperation">SharedSetOperations</a> for managing <a href="https://developers.google.com/adwords/api/docs/guides/negative-keywords-shared-sets#shared_sets">shared sets</a>. Check out the updated <a href="https://developers.google.com/adwords/api/docs/guides/batch-jobs">Batch Processing guide</a> for details.</li> </ul> If you’re using v201702 of the AdWords API, please note that it will <a href="https://developers.google.com/adwords/api/docs/sunset-dates">be sunset</a> on <b>February 14, 2018</b>. We encourage you to skip v201705 and v201708 and migrate straight to v201710. Please note that v201705 is deprecated. As mentioned in the <a href="https://googleadsdeveloper.blogspot.com/2017/10/adwords-api-release-and-sunset-schedule.html">recent blog post on the sunset and release schedule</a>, <b>both v201705 and v201708</b> will be sunset on <b>March 28, 2018</b>.<br /><br /> As with every new version of the AdWords API, please carefully review all changes in the <a href="https://developers.google.com/adwords/api/docs/reference/release-notes/v201710">release notes</a> and the <a href="https://developers.google.com/adwords/api/docs/guides/migration/v201710">v201710 migration guide</a>. The updated <a href="https://developers.google.com/adwords/api/docs/clientlibraries">client libraries</a> and code examples will be published within the next 48 hours.<br /><br /> If you have any questions or need help with migration, please post on the <a href="https://developers.google.com/adwords/api/community/">forum</a> or the <a href="https://plus.google.com/+GoogleAdsDevelopers">Ads Developers Plus Page</a>.<br /> <span class='byline-author'><img height="40" src="https://lh4.googleusercontent.com/Hb__krHgcbJNUfGdmkwOhufxlp_wOGvJz25j1_vSySBMInYSOF4-XjjsQ9SU4XPJZ33_z-dZ3Sfbqcw5OkpGWhzzKsoGne5zDCNSOZBelNG-M4JtiqQxMVm73rsxmhPx1UY-nfER" style="vertical-align: middle; border:none;" width="40"/> - <a href="https://plus.google.com/100205313733177937765/posts">Josh Radcliff</a> on behalf of the AdWords API Team</span> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Google Ads Developer Blog:Announcing v201710 of the AdWords API&url=http://ads-developers.googleblog.com/2017/10/announcing-v201710-of-adwords-api.html&via=google'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=http://ads-developers.googleblog.com/2017/10/announcing-v201710-of-adwords-api.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='http://ads-developers.googleblog.com/2017/10/announcing-v201710-of-adwords-api.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='http://ads-developers.googleblog.com/search/label/adwords_api' rel='tag'> adwords_api </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/adwords_api_v201710' rel='tag'> adwords_api_v201710 </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/release' rel='tag'> release </a> </span> </div> </div> </div> <div class='post' data-id='187219119724197348' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='http://ads-developers.googleblog.com/2017/10/adwords-api-release-and-sunset-schedule.html' itemprop='url' title='AdWords API release and sunset schedule in 2018'> AdWords API release and sunset schedule in 2018 </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Monday, October 9, 2017 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <div dir="ltr" style="text-align: left;" trbidi="on"> In <a href="http://googleadsdeveloper.blogspot.com/2016/01/new-release-schedule-for-adwords-api.html">2016</a> and <a href="http://googleadsdeveloper.blogspot.com/2016/12/updated-release-schedule-for-adwords-api.html">2017</a> we supported at least three versions of the AdWords API at any given time and four versions for a brief period after each new release. This led to older versions of the API supporting outdated functionality and lacking new features.<br /><br /> To improve your AdWords API experience, we will be updating our release schedule. Starting in March 2018 we will only support two releases concurrently at all times, and three releases for a brief period of four weeks, allowing developers to skip a version. To get us back on schedule, we <b>will concurrently sunset v201705 and v201708 in March 2018</b>. This brings the average lifespan of every API version released in 2018 down to nine months.<br /><br /> Additionally, we will be moving back to a schedule that releases <a href="http://googleadsdeveloper.blogspot.com/2012/08/release-schedule-for-adwords-api.html">three versions per year</a>. The 2018 releases are scheduled for February, June and September.<br /> <img height="100%" src="https://lh5.googleusercontent.com/ySYJtnxcDt8TkGvIoyp7lde1uTzPXmeQb6_94KcBe-s2V39aoRRmHrTmYemPBfVQ9yfJG6emKwsiHfNfy7OxuKrp2X2hkYvNXvTF6LXlE_25GVYQ9ixB3Td5uBA0nQx9JsF8037o" width="100%" /><br /> As usual, make sure to check our <a href="https://developers.google.com/adwords/api/docs/sunset-dates">deprecation schedule</a> for more details on sunsets. If you have any questions about the new schedule, please reach out to us on the <a href="https://groups.google.com/forum/#!forum/adwords-api">AdWords API forum</a> or the <a href="https://plus.google.com/+GoogleAdsDevelopers">Ads Developers Plus Page</a>.<br /> <span class='byline-author'><a href="https://plus.google.com/117740010720386793830/posts"><img height="40" src="https://lh3.googleusercontent.com/-k_4zNIw6ktcE1Lj7mltjKIBli6Cwaa_INYaBAzV8_qBOWVx-x63fa4HMUwt1BpHg8x9sAC6Wsmlj-DuhH2ZbmQ3wU6SJ8gXKMyIrm0POqlMzrQrDBXvNHvRd7etO3_uO7U1gX8S" style="vertical-align: middle; border:none;" width="40"/> Herlen Zoljargal</a>, AdWords API Team</span> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <div dir="ltr" style="text-align: left;" trbidi="on"> In <a href="http://googleadsdeveloper.blogspot.com/2016/01/new-release-schedule-for-adwords-api.html">2016</a> and <a href="http://googleadsdeveloper.blogspot.com/2016/12/updated-release-schedule-for-adwords-api.html">2017</a> we supported at least three versions of the AdWords API at any given time and four versions for a brief period after each new release. This led to older versions of the API supporting outdated functionality and lacking new features.<br /><br /> To improve your AdWords API experience, we will be updating our release schedule. Starting in March 2018 we will only support two releases concurrently at all times, and three releases for a brief period of four weeks, allowing developers to skip a version. To get us back on schedule, we <b>will concurrently sunset v201705 and v201708 in March 2018</b>. This brings the average lifespan of every API version released in 2018 down to nine months.<br /><br /> Additionally, we will be moving back to a schedule that releases <a href="http://googleadsdeveloper.blogspot.com/2012/08/release-schedule-for-adwords-api.html">three versions per year</a>. The 2018 releases are scheduled for February, June and September.<br /> <img height="100%" src="https://lh5.googleusercontent.com/ySYJtnxcDt8TkGvIoyp7lde1uTzPXmeQb6_94KcBe-s2V39aoRRmHrTmYemPBfVQ9yfJG6emKwsiHfNfy7OxuKrp2X2hkYvNXvTF6LXlE_25GVYQ9ixB3Td5uBA0nQx9JsF8037o" width="100%" /><br /> As usual, make sure to check our <a href="https://developers.google.com/adwords/api/docs/sunset-dates">deprecation schedule</a> for more details on sunsets. If you have any questions about the new schedule, please reach out to us on the <a href="https://groups.google.com/forum/#!forum/adwords-api">AdWords API forum</a> or the <a href="https://plus.google.com/+GoogleAdsDevelopers">Ads Developers Plus Page</a>.<br /> <span class='byline-author'><a href="https://plus.google.com/117740010720386793830/posts"><img height="40" src="https://lh3.googleusercontent.com/-k_4zNIw6ktcE1Lj7mltjKIBli6Cwaa_INYaBAzV8_qBOWVx-x63fa4HMUwt1BpHg8x9sAC6Wsmlj-DuhH2ZbmQ3wU6SJ8gXKMyIrm0POqlMzrQrDBXvNHvRd7etO3_uO7U1gX8S" style="vertical-align: middle; border:none;" width="40"/> Herlen Zoljargal</a>, AdWords API Team</span> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Google Ads Developer Blog:AdWords API release and sunset schedule in 2018&url=http://ads-developers.googleblog.com/2017/10/adwords-api-release-and-sunset-schedule.html&via=google'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=http://ads-developers.googleblog.com/2017/10/adwords-api-release-and-sunset-schedule.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='http://ads-developers.googleblog.com/2017/10/adwords-api-release-and-sunset-schedule.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='http://ads-developers.googleblog.com/search/label/adwords_api' rel='tag'> adwords_api </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/adwords_api_v201705' rel='tag'> adwords_api_v201705 </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/adwords_api_v201708' rel='tag'> adwords_api_v201708 </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/new_features' rel='tag'> new_features </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/release' rel='tag'> release </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/sunset' rel='tag'> sunset </a> </span> </div> </div> </div> <div class='post' data-id='6009530944763669811' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='http://ads-developers.googleblog.com/2017/10/sunset-of-dfp-api-v201611-on-thursday.html' itemprop='url' title='Sunset of DFP API v201611'> Sunset of DFP API v201611 </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Monday, October 9, 2017 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <div dir="ltr" style="text-align: left;" trbidi="on"> <div dir="ltr" style="text-align: left;" trbidi="on"> <br /> On Thursday, <b>November 30th, 2017</b>, in accordance with the <a href="https://developers.google.com/doubleclick-publishers/docs/deprecation">deprecation schedule</a>, v201611 of the DFP API will be sunset. At that time, any requests made to this version will return errors.<br /> <br /> If you’re still using this version, now’s the time to upgrade to the <a href="https://developers.google.com/doubleclick-publishers/docs/rel_notes">latest release</a> and take advantage of new features like support for creating <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201705/CreativeService.ImageOverlayCreative">ImageOverlayCreatives</a>, new Ad Exchange reporting <a href="https://developers.google.com/doubleclick-publishers/docs/adx_reporting_migration">dimensions and columns</a>, and the <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201702/PublisherQueryLanguageService#Change_History">change history table</a>. In order to upgrade, check the <a href="https://developers.google.com/doubleclick-publishers/docs/rel_notes">release notes</a> to identify any breaking changes, grab the latest version of your client library, and update your code.<br /> <br /> Significant changes include:<br /> <br /> <ul style="text-align: left;"> <li>Reporting <a href="https://developers.google.com/doubleclick-publishers/docs/adx_reporting_migration">dimensions and columns</a> are now at parity with Ad Exchange.</li> <li>Editing <a href="https://developers.google.com/doubleclick-publishers/docs/reference/latest/InventoryService.AdUnit">AdUnit</a> assignments to <a href="https://developers.google.com/doubleclick-publishers/docs/reference/latest/PlacementService.Placement">Placements</a> now happens in the <a href="https://developers.google.com/doubleclick-publishers/docs/reference/latest/PlacementService.Placement">Placement</a> service.</li> <li><a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201702/InventoryService.AdUnit#inheritedadsensesettings">AdUnit.inheritedAdSenseSettings</a> has been replaced with <a href="https://developers.google.com/doubleclick-publishers/docs/reference/latest/InventoryService.AdUnit#adsensesettings">AdUnit.adSenseSettings</a> and <a href="https://developers.google.com/doubleclick-publishers/docs/reference/latest/InventoryService.AdUnit#adsensesettingssource">AdUnit.adSenseSettingsSource</a>.</li> <li>The <a href="https://developers.google.com/doubleclick-publishers/docs/reference/latest/InventoryService.AdUnit">AdUnit</a> fields <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201702/InventoryService.AdUnit#mobileplatform">mobilePlatform</a>, <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201702/InventoryService.AdUnit#partnerid">partnerId</a>, <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201702/InventoryService.AdUnit#issharedbydistributor">isSharedByDistributor</a>, and <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201702/InventoryService.AdUnit#crosssellingdistributor">crossSellingDistributor</a> have been removed.</li> <li><a href="https://developers.google.com/doubleclick-publishers/docs/reference/latest/PlacementService.Placement">Placement</a> fields <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201702/PlacementService.Placement#adsensetargetinglocale">adSenseTargetingLocale</a>, <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201702/PlacementService.Placement#isadsensetargetingenabled">isAdsenseTargetingEnabled</a>, <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201702/PlacementService.Placement#targetingdescription">targetingDescription</a>, <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201702/PlacementService.Placement#targetingsitename">targetingSiteName</a>, and <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201702/PlacementService.Placement#targetingadlocation">targetingAdLocation</a> have been removed to align with the UI.</li> <li>Company.Type enumerations <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201702/CompanyService.Company.Type#AFFILIATE_DISTRIBUTION_PARTNER">AFFILIATE_DISTRIBUTION_PARTNER</a> and <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201702/CompanyService.Company.Type#CONTENT_PARTNER">CONTENT_PARTNER</a> have been removed.</li> <li><a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201702/InventoryService.CrossSellingDistributor">CrossSellingDistributor</a> has been removed.</li> <li>Old partner metrics have been replaced by new <a href="https://developers.google.com/doubleclick-publishers/docs/reference/latest/ReportService.Column#PARTNER_MANAGEMENT_HOST_IMPRESSIONS">PARTNER_MANAGEMENT</a> fields.</li> </ul> <br /> This is not an exhaustive list, so as always, don't hesitate to <a href="https://groups.google.com/d/forum/google-doubleclick-for-publishers-api">reach out to us</a> with any questions. To be notified of future deprecations and sunsets, join the <a href="https://groups.google.com/forum/#!forum/dfpapi-sunset-announce">DFP API Sunset Announcements</a> group and adjust your notification settings.<br /> <br /></div> <span class="post-author"><a href="https://plus.google.com/104308806108090449784" target="_blank"><img height="40" src="https://lh3.googleusercontent.com/Kj_iWaN7EjlBD1SwtCj5lZhCGSg1AMVBbvXyfVt4mQ7QynA1tNCgPTzA-lWSmJikQtDkCu5cPq9o=w2560-h1440-rw-no?sz=120" style="border: none; vertical-align: middle;" width="40" /></a> - <a href="https://plus.google.com/104308806108090449784" rel="author" target="_blank">Gabe Rives-Corbett</a>, DFP API Team</span></div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <div dir="ltr" style="text-align: left;" trbidi="on"> <div dir="ltr" style="text-align: left;" trbidi="on"> <br /> On Thursday, <b>November 30th, 2017</b>, in accordance with the <a href="https://developers.google.com/doubleclick-publishers/docs/deprecation">deprecation schedule</a>, v201611 of the DFP API will be sunset. At that time, any requests made to this version will return errors.<br /> <br /> If you’re still using this version, now’s the time to upgrade to the <a href="https://developers.google.com/doubleclick-publishers/docs/rel_notes">latest release</a> and take advantage of new features like support for creating <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201705/CreativeService.ImageOverlayCreative">ImageOverlayCreatives</a>, new Ad Exchange reporting <a href="https://developers.google.com/doubleclick-publishers/docs/adx_reporting_migration">dimensions and columns</a>, and the <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201702/PublisherQueryLanguageService#Change_History">change history table</a>. In order to upgrade, check the <a href="https://developers.google.com/doubleclick-publishers/docs/rel_notes">release notes</a> to identify any breaking changes, grab the latest version of your client library, and update your code.<br /> <br /> Significant changes include:<br /> <br /> <ul style="text-align: left;"> <li>Reporting <a href="https://developers.google.com/doubleclick-publishers/docs/adx_reporting_migration">dimensions and columns</a> are now at parity with Ad Exchange.</li> <li>Editing <a href="https://developers.google.com/doubleclick-publishers/docs/reference/latest/InventoryService.AdUnit">AdUnit</a> assignments to <a href="https://developers.google.com/doubleclick-publishers/docs/reference/latest/PlacementService.Placement">Placements</a> now happens in the <a href="https://developers.google.com/doubleclick-publishers/docs/reference/latest/PlacementService.Placement">Placement</a> service.</li> <li><a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201702/InventoryService.AdUnit#inheritedadsensesettings">AdUnit.inheritedAdSenseSettings</a> has been replaced with <a href="https://developers.google.com/doubleclick-publishers/docs/reference/latest/InventoryService.AdUnit#adsensesettings">AdUnit.adSenseSettings</a> and <a href="https://developers.google.com/doubleclick-publishers/docs/reference/latest/InventoryService.AdUnit#adsensesettingssource">AdUnit.adSenseSettingsSource</a>.</li> <li>The <a href="https://developers.google.com/doubleclick-publishers/docs/reference/latest/InventoryService.AdUnit">AdUnit</a> fields <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201702/InventoryService.AdUnit#mobileplatform">mobilePlatform</a>, <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201702/InventoryService.AdUnit#partnerid">partnerId</a>, <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201702/InventoryService.AdUnit#issharedbydistributor">isSharedByDistributor</a>, and <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201702/InventoryService.AdUnit#crosssellingdistributor">crossSellingDistributor</a> have been removed.</li> <li><a href="https://developers.google.com/doubleclick-publishers/docs/reference/latest/PlacementService.Placement">Placement</a> fields <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201702/PlacementService.Placement#adsensetargetinglocale">adSenseTargetingLocale</a>, <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201702/PlacementService.Placement#isadsensetargetingenabled">isAdsenseTargetingEnabled</a>, <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201702/PlacementService.Placement#targetingdescription">targetingDescription</a>, <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201702/PlacementService.Placement#targetingsitename">targetingSiteName</a>, and <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201702/PlacementService.Placement#targetingadlocation">targetingAdLocation</a> have been removed to align with the UI.</li> <li>Company.Type enumerations <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201702/CompanyService.Company.Type#AFFILIATE_DISTRIBUTION_PARTNER">AFFILIATE_DISTRIBUTION_PARTNER</a> and <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201702/CompanyService.Company.Type#CONTENT_PARTNER">CONTENT_PARTNER</a> have been removed.</li> <li><a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201702/InventoryService.CrossSellingDistributor">CrossSellingDistributor</a> has been removed.</li> <li>Old partner metrics have been replaced by new <a href="https://developers.google.com/doubleclick-publishers/docs/reference/latest/ReportService.Column#PARTNER_MANAGEMENT_HOST_IMPRESSIONS">PARTNER_MANAGEMENT</a> fields.</li> </ul> <br /> This is not an exhaustive list, so as always, don't hesitate to <a href="https://groups.google.com/d/forum/google-doubleclick-for-publishers-api">reach out to us</a> with any questions. To be notified of future deprecations and sunsets, join the <a href="https://groups.google.com/forum/#!forum/dfpapi-sunset-announce">DFP API Sunset Announcements</a> group and adjust your notification settings.<br /> <br /></div> <span class="post-author"><a href="https://plus.google.com/104308806108090449784" target="_blank"><img height="40" src="https://lh3.googleusercontent.com/Kj_iWaN7EjlBD1SwtCj5lZhCGSg1AMVBbvXyfVt4mQ7QynA1tNCgPTzA-lWSmJikQtDkCu5cPq9o=w2560-h1440-rw-no?sz=120" style="border: none; vertical-align: middle;" width="40" /></a> - <a href="https://plus.google.com/104308806108090449784" rel="author" target="_blank">Gabe Rives-Corbett</a>, DFP API Team</span></div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Google Ads Developer Blog:Sunset of DFP API v201611&url=http://ads-developers.googleblog.com/2017/10/sunset-of-dfp-api-v201611-on-thursday.html&via=google'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=http://ads-developers.googleblog.com/2017/10/sunset-of-dfp-api-v201611-on-thursday.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='http://ads-developers.googleblog.com/2017/10/sunset-of-dfp-api-v201611-on-thursday.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='http://ads-developers.googleblog.com/search/label/dfp_api' rel='tag'> dfp_api </a> </span> </div> </div> </div> <div class='post' data-id='7580384582830510748' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='http://ads-developers.googleblog.com/2017/09/google-mobile-ads-sdk-release-7241.html' itemprop='url' title='Google Mobile Ads SDK release 7.24.1 supports iOS 11'> Google Mobile Ads SDK release 7.24.1 supports iOS 11 </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Thursday, September 28, 2017 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <p> We're happy to announce that with this week's release of version 7.24.1, the Google Mobile Ads SDK is officially iOS 11 ready. You can get the latest version via <a href="http://cocoapods.org/pods/Google-Mobile-Ads-SDK">CocoaPods</a> or via <a href="https://developers.google.com/admob/ios/download">manual download</a>. </p> <p> Check the <a href="https://developers.google.com/admob/ios/rel-notes">release notes</a> for a full list of updates. One prominent issue that this SDK release resolves is the banner ad views rendering out of bounds in some situations on iOS 11. </p> <p> Stay tuned for another SDK update ahead of the iPhone X release. Speaking of which... </p> <p> <strong>iPhone X</strong> </p> <p> At this year's launch event, Apple announced a new iPhone, the <a href="https://www.apple.com/newsroom/2017/09/the-future-is-here-iphone-x/">iPhone X</a>. With this new device comes a new form factor and some additional design considerations for developers, as the rounded corners, notch, and soft home button on the extended screen can obscure content. </p> <p> With this in mind, we want to highlight some best practices for Google Mobile Ads publishers to ensure that ad placement conforms to Apple's new <a href="https://developer.apple.com/ios/human-interface-guidelines/overview/iphone-x/">design guidelines</a> for the iPhone X and iOS 11. </p> <p> Banner and native ads should be placed inside the <a href="https://developer.apple.com/documentation/uikit/uiview/positioning_content_relative_to_the_safe_area">safe area</a>, a concept new to iOS 11. This ensures that ad content is not obscured. Additionally, the safe area respects UI elements such as navigation bars, the status bar, and tab bars on all iOS 11 devices. </p> <div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPFvAUin7zi_n__jTK946dGzmpLpi7z8uiwHtI3Kta0E1mTMho-QcemMH4H1aIYUBl4f_suMZGcOQupsymOPserdOAi0L-zjqUJUp3NjMpVszNs7xFIn0_P7XJxNyYD30UWQI3FlLjIEw/s1600/safe_area.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1010" data-original-width="1546" height="418" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPFvAUin7zi_n__jTK946dGzmpLpi7z8uiwHtI3Kta0E1mTMho-QcemMH4H1aIYUBl4f_suMZGcOQupsymOPserdOAi0L-zjqUJUp3NjMpVszNs7xFIn0_P7XJxNyYD30UWQI3FlLjIEw/s640/safe_area.png" width="640" /></a></div> <p> When using autolayout, ensure any constraints are relative to safe area layout guides. If you're using manual layout, check that banners and native ads fit within the <a href="https://developer.apple.com/documentation/uikit/uiview/2891103-safeareainsets">safeAreaInsets</a>. </p> <p> For interstitials and rewarded video ads, we're working to ensure all controls and important content are also placed within the safe area. Keep an eye out for another Google Mobile Ads SDK release ahead of the iPhone X release date. </p> <p> If you have any questions about iOS 11 support in the Google Mobile Ads SDK, please drop us a line at the <a href="https://groups.google.com/forum/#!forum/google-admob-ads-sdk">developer forum</a>. </p> <p><span class="byline-author"><a href="https://plus.google.com/101455296779500923259/"><img height="20" src="https://lh3.googleusercontent.com/-mgNtN0xFJPo/AAAAAAAAAAI/AAAAAAAADVs/8q77C1VygCo/photo.jpg?sz=20" style="vertical-align:middle; border:none;" width="20"></a> - <a href="https://plus.google.com/101455296779500923259/" rel="author">Samuel Stow</a>, Mobile Ads Developer Relations</span></p> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <p> We're happy to announce that with this week's release of version 7.24.1, the Google Mobile Ads SDK is officially iOS 11 ready. You can get the latest version via <a href="http://cocoapods.org/pods/Google-Mobile-Ads-SDK">CocoaPods</a> or via <a href="https://developers.google.com/admob/ios/download">manual download</a>. </p> <p> Check the <a href="https://developers.google.com/admob/ios/rel-notes">release notes</a> for a full list of updates. One prominent issue that this SDK release resolves is the banner ad views rendering out of bounds in some situations on iOS 11. </p> <p> Stay tuned for another SDK update ahead of the iPhone X release. Speaking of which... </p> <p> <strong>iPhone X</strong> </p> <p> At this year's launch event, Apple announced a new iPhone, the <a href="https://www.apple.com/newsroom/2017/09/the-future-is-here-iphone-x/">iPhone X</a>. With this new device comes a new form factor and some additional design considerations for developers, as the rounded corners, notch, and soft home button on the extended screen can obscure content. </p> <p> With this in mind, we want to highlight some best practices for Google Mobile Ads publishers to ensure that ad placement conforms to Apple's new <a href="https://developer.apple.com/ios/human-interface-guidelines/overview/iphone-x/">design guidelines</a> for the iPhone X and iOS 11. </p> <p> Banner and native ads should be placed inside the <a href="https://developer.apple.com/documentation/uikit/uiview/positioning_content_relative_to_the_safe_area">safe area</a>, a concept new to iOS 11. This ensures that ad content is not obscured. Additionally, the safe area respects UI elements such as navigation bars, the status bar, and tab bars on all iOS 11 devices. </p> <div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPFvAUin7zi_n__jTK946dGzmpLpi7z8uiwHtI3Kta0E1mTMho-QcemMH4H1aIYUBl4f_suMZGcOQupsymOPserdOAi0L-zjqUJUp3NjMpVszNs7xFIn0_P7XJxNyYD30UWQI3FlLjIEw/s1600/safe_area.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1010" data-original-width="1546" height="418" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPFvAUin7zi_n__jTK946dGzmpLpi7z8uiwHtI3Kta0E1mTMho-QcemMH4H1aIYUBl4f_suMZGcOQupsymOPserdOAi0L-zjqUJUp3NjMpVszNs7xFIn0_P7XJxNyYD30UWQI3FlLjIEw/s640/safe_area.png" width="640" /></a></div> <p> When using autolayout, ensure any constraints are relative to safe area layout guides. If you're using manual layout, check that banners and native ads fit within the <a href="https://developer.apple.com/documentation/uikit/uiview/2891103-safeareainsets">safeAreaInsets</a>. </p> <p> For interstitials and rewarded video ads, we're working to ensure all controls and important content are also placed within the safe area. Keep an eye out for another Google Mobile Ads SDK release ahead of the iPhone X release date. </p> <p> If you have any questions about iOS 11 support in the Google Mobile Ads SDK, please drop us a line at the <a href="https://groups.google.com/forum/#!forum/google-admob-ads-sdk">developer forum</a>. </p> <p><span class="byline-author"><a href="https://plus.google.com/101455296779500923259/"><img height="20" src="https://lh3.googleusercontent.com/-mgNtN0xFJPo/AAAAAAAAAAI/AAAAAAAADVs/8q77C1VygCo/photo.jpg?sz=20" style="vertical-align:middle; border:none;" width="20"></a> - <a href="https://plus.google.com/101455296779500923259/" rel="author">Samuel Stow</a>, Mobile Ads Developer Relations</span></p> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Google Ads Developer Blog:Google Mobile Ads SDK release 7.24.1 supports iOS 11&url=http://ads-developers.googleblog.com/2017/09/google-mobile-ads-sdk-release-7241.html&via=google'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=http://ads-developers.googleblog.com/2017/09/google-mobile-ads-sdk-release-7241.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='http://ads-developers.googleblog.com/2017/09/google-mobile-ads-sdk-release-7241.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> </div> </div> </div> <div class='post' data-id='1847947303389225879' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='http://ads-developers.googleblog.com/2017/09/exoplayer-releases-ima-extension.html' itemprop='url' title='ExoPlayer Releases IMA Extension'> ExoPlayer Releases IMA Extension </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Wednesday, September 27, 2017 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <p> Users of ExoPlayer, an extensible, open-source media player for Android, can now easily integrate with the IMA SDK using the new <a href="https://github.com/google/ExoPlayer/tree/release-v2/extensions/ima">ExoPlayer IMA extension</a>. The IMA extension, released alongside ExoPlayer 2.5, wraps the IMA SDK for Android and provides seamless ad playback. </p> <p> The extension ensures that ads are integrated into ExoPlayer's video timeline, and UI components are ad-aware. It also reduces buffering by eliminating the need to swap out and rebuffer the video player's source when transitioning between ads and content. </p> <p> You can find more details on the extension in <a href="https://medium.com/google-exoplayer/playing-ads-with-exoplayer-and-ima-868dfd767ea">ExoPlayer's blog post on Medium</a>, and find the extension on <a href="https://github.com/google/ExoPlayer/tree/release-v2/extensions/ima">GitHub</a>. If you have any questions or issues, please file them on <a href="https://github.com/google/ExoPlayer/issues">ExoPlayer's issue tracker</a>. </p> <span class='byline-author'><a href="https://plus.google.com/u/0/115192712137004592087"><img height="20" src="https://lh3.googleusercontent.com/-fBnDgmUOklY/AAAAAAAAAAI/AAAAAAAAABo/Y7fukcxel1w/s120-c/photo.jpg?sz=20" style="vertical-align:middle; border:none;" width="20"></a> - <a href="https://plus.google.com/u/0/115192712137004592087" rel="author">Yury Pavlotsky</a>, IMA SDK Team</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <p> Users of ExoPlayer, an extensible, open-source media player for Android, can now easily integrate with the IMA SDK using the new <a href="https://github.com/google/ExoPlayer/tree/release-v2/extensions/ima">ExoPlayer IMA extension</a>. The IMA extension, released alongside ExoPlayer 2.5, wraps the IMA SDK for Android and provides seamless ad playback. </p> <p> The extension ensures that ads are integrated into ExoPlayer's video timeline, and UI components are ad-aware. It also reduces buffering by eliminating the need to swap out and rebuffer the video player's source when transitioning between ads and content. </p> <p> You can find more details on the extension in <a href="https://medium.com/google-exoplayer/playing-ads-with-exoplayer-and-ima-868dfd767ea">ExoPlayer's blog post on Medium</a>, and find the extension on <a href="https://github.com/google/ExoPlayer/tree/release-v2/extensions/ima">GitHub</a>. If you have any questions or issues, please file them on <a href="https://github.com/google/ExoPlayer/issues">ExoPlayer's issue tracker</a>. </p> <span class='byline-author'><a href="https://plus.google.com/u/0/115192712137004592087"><img height="20" src="https://lh3.googleusercontent.com/-fBnDgmUOklY/AAAAAAAAAAI/AAAAAAAAABo/Y7fukcxel1w/s120-c/photo.jpg?sz=20" style="vertical-align:middle; border:none;" width="20"></a> - <a href="https://plus.google.com/u/0/115192712137004592087" rel="author">Yury Pavlotsky</a>, IMA SDK Team</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Google Ads Developer Blog:ExoPlayer Releases IMA Extension&url=http://ads-developers.googleblog.com/2017/09/exoplayer-releases-ima-extension.html&via=google'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=http://ads-developers.googleblog.com/2017/09/exoplayer-releases-ima-extension.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='http://ads-developers.googleblog.com/2017/09/exoplayer-releases-ima-extension.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='http://ads-developers.googleblog.com/search/label/android' rel='tag'> android </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/exoplayer' rel='tag'> exoplayer </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/ima_sdk' rel='tag'> ima_sdk </a> </span> </div> </div> </div> <div class='post' data-id='3877392572929017741' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='http://ads-developers.googleblog.com/2017/09/changes-to-data-feed-management-in.html' itemprop='url' title='Changes to data feed management in the Content API for Shopping'> Changes to data feed management in the Content API for Shopping </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Monday, September 25, 2017 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <div dir="ltr" style="text-align: left;" trbidi="on"> Starting <b>today</b>, the <a href="https://developers.google.com/shopping-content/v2/reference/v2/datafeeds">Datafeeds</a> service will allow you to use the Content API for Shopping to set up data feeds that target multiple countries and/or languages, which <a href="https://support.google.com/merchants/answer/7503577">a recent update</a> added to the Merchant Center. The update to the Datafeeds service will also allow you more control over the destinations for products in data feeds managed via the Content API.<br /><br /> <font size="4">What's changing?</font><br /> To handle feeds that target multiple countries and/or languages, a new <a href="https://developers.google.com/shopping-content/v2/reference/v2/datafeeds#targets"><code>targets</code></a> field is being added. This field contains a list of targets, and each target contains the following fields: <ul> <li><a href="https://developers.google.com/shopping-content/v2/reference/v2/datafeeds#targets.country">country</a> - the target country</li> <li><a href="https://developers.google.com/shopping-content/v2/reference/v2/datafeeds#targets.language">language</a> - the content language for this target</li> <li><a href="https://developers.google.com/shopping-content/v2/reference/v2/datafeeds#targets.includedDestinations">includedDestinations</a> - a list of destinations to include for this target</li> <li><a href="https://developers.google.com/shopping-content/v2/reference/v2/datafeeds#targets.excludedDestinations">excludedDestinations</a> - a list of destinations to exclude for this target</li> </ul> <b>Note</b>: The above links to the reference documentation for the new fields will go live on the same day that the feature is introduced.<br /><br /> The following now-redundant fields are being deprecated: <ul> <li><a href="https://developers.google.com/shopping-content/v2/reference/v2/datafeeds#targetCountry">targetCountry</a></li> <li><a href="https://developers.google.com/shopping-content/v2/reference/v2/datafeeds#contentLanguage">contentLanguage</a></li> <li><a href="https://developers.google.com/shopping-content/v2/reference/v2/datafeeds#intendedDestinations">intendedDestinations</a></li> </ul> Currently, code that uses these deprecated fields will continue to work as before for managing feeds with a single target. Any changes made via these deprecated fields will also appear as a single target in the new <code>targets</code> field, and vice versa if the <code>targets</code> field contains a single target. These deprecated fields will not be returned when retrieving feeds with multiple targets. Since these deprecated fields may be removed in the future, we recommend migrating your code to use the new <code>targets</code> field now.<br /><br /> To support feeds that have multiple targets, the <a href="https://developers.google.com/shopping-content/v2/reference/v2/datafeedstatuses/get">Datafeedstatuses.get</a> method now takes two additional parameters: <ul> <li><a href="https://developers.google.com/shopping-content/v2/reference/v2/datafeedstatuses/get#country">country</a> - the target country</li> <li><a href="https://developers.google.com/shopping-content/v2/reference/v2/datafeedstatuses/get#language">language</a> - the content language</li> </ul> These new parameters <b>must</b> be supplied for feeds that have multiple targets, since the status of a feed may differ depending on the target. These parameters can be omitted when retrieving the status of a feed with a single target.<br /><br /> Similarly, when retrieving all feed statuses using the <a href="https://developers.google.com/shopping-content/v2/reference/v2/datafeedstatuses/list">Datafeedstatuses.list</a> method, you will receive multiple entries for a feed with multiple targets, where each entry corresponds to a particular target.<br /><br /> <font size="4">What do I need to do?</font><br /> To manage feeds that use any of the following features, you must update your code to use the new <code>targets</code> field: <ul> <li>Feeds that target multiple countries and/or languages</li> <li>Feeds that exclude destinations that are included by default</li> </ul> In addition, you must supply the new <code>country</code> and <code>language</code> parameters when retrieving the status of a feed that has multiple targets.<br /><br /> Otherwise, your existing code will continue to work as before. However, since we may remove the old fields in the future, we recommend you update your code for managing data feeds to use the new <code>targets</code> field.<br /><br /> <b>Note</b>: To use the new <code>targets</code> field and the new <code>country</code> and <code>language</code> parameters if you are using one of the Content API <a href="https://developers.google.com/shopping-content/v2/libraries">client libraries</a>, update to a version published on or after <b>Sep 21, 2017</b>.<br /><br /> If you have any questions or feedback about the changes to data feed management or other questions about the Content API for Shopping, please let us know on the <a href="https://groups.google.com/forum/#!forum/google-content-api-for-shopping">forum</a>.<br /> <span class="byline-author"><a href="https://plus.google.com/110017903700682803890"><img height="40" src="https://lh3.googleusercontent.com/-RAinpujspU4/AAAAAAAAAAI/AAAAAAAAABU/TNcLnP-c4ok/s60-p-rw-no/photo.jpg" style="vertical-align:middle; border:none;" width="40"></a> - <a href="https://plus.google.com/110017903700682803890" rel="author">Stevie Strickland</a>, Content API for Shopping Team</span> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <div dir="ltr" style="text-align: left;" trbidi="on"> Starting <b>today</b>, the <a href="https://developers.google.com/shopping-content/v2/reference/v2/datafeeds">Datafeeds</a> service will allow you to use the Content API for Shopping to set up data feeds that target multiple countries and/or languages, which <a href="https://support.google.com/merchants/answer/7503577">a recent update</a> added to the Merchant Center. The update to the Datafeeds service will also allow you more control over the destinations for products in data feeds managed via the Content API.<br /><br /> <font size="4">What's changing?</font><br /> To handle feeds that target multiple countries and/or languages, a new <a href="https://developers.google.com/shopping-content/v2/reference/v2/datafeeds#targets"><code>targets</code></a> field is being added. This field contains a list of targets, and each target contains the following fields: <ul> <li><a href="https://developers.google.com/shopping-content/v2/reference/v2/datafeeds#targets.country">country</a> - the target country</li> <li><a href="https://developers.google.com/shopping-content/v2/reference/v2/datafeeds#targets.language">language</a> - the content language for this target</li> <li><a href="https://developers.google.com/shopping-content/v2/reference/v2/datafeeds#targets.includedDestinations">includedDestinations</a> - a list of destinations to include for this target</li> <li><a href="https://developers.google.com/shopping-content/v2/reference/v2/datafeeds#targets.excludedDestinations">excludedDestinations</a> - a list of destinations to exclude for this target</li> </ul> <b>Note</b>: The above links to the reference documentation for the new fields will go live on the same day that the feature is introduced.<br /><br /> The following now-redundant fields are being deprecated: <ul> <li><a href="https://developers.google.com/shopping-content/v2/reference/v2/datafeeds#targetCountry">targetCountry</a></li> <li><a href="https://developers.google.com/shopping-content/v2/reference/v2/datafeeds#contentLanguage">contentLanguage</a></li> <li><a href="https://developers.google.com/shopping-content/v2/reference/v2/datafeeds#intendedDestinations">intendedDestinations</a></li> </ul> Currently, code that uses these deprecated fields will continue to work as before for managing feeds with a single target. Any changes made via these deprecated fields will also appear as a single target in the new <code>targets</code> field, and vice versa if the <code>targets</code> field contains a single target. These deprecated fields will not be returned when retrieving feeds with multiple targets. Since these deprecated fields may be removed in the future, we recommend migrating your code to use the new <code>targets</code> field now.<br /><br /> To support feeds that have multiple targets, the <a href="https://developers.google.com/shopping-content/v2/reference/v2/datafeedstatuses/get">Datafeedstatuses.get</a> method now takes two additional parameters: <ul> <li><a href="https://developers.google.com/shopping-content/v2/reference/v2/datafeedstatuses/get#country">country</a> - the target country</li> <li><a href="https://developers.google.com/shopping-content/v2/reference/v2/datafeedstatuses/get#language">language</a> - the content language</li> </ul> These new parameters <b>must</b> be supplied for feeds that have multiple targets, since the status of a feed may differ depending on the target. These parameters can be omitted when retrieving the status of a feed with a single target.<br /><br /> Similarly, when retrieving all feed statuses using the <a href="https://developers.google.com/shopping-content/v2/reference/v2/datafeedstatuses/list">Datafeedstatuses.list</a> method, you will receive multiple entries for a feed with multiple targets, where each entry corresponds to a particular target.<br /><br /> <font size="4">What do I need to do?</font><br /> To manage feeds that use any of the following features, you must update your code to use the new <code>targets</code> field: <ul> <li>Feeds that target multiple countries and/or languages</li> <li>Feeds that exclude destinations that are included by default</li> </ul> In addition, you must supply the new <code>country</code> and <code>language</code> parameters when retrieving the status of a feed that has multiple targets.<br /><br /> Otherwise, your existing code will continue to work as before. However, since we may remove the old fields in the future, we recommend you update your code for managing data feeds to use the new <code>targets</code> field.<br /><br /> <b>Note</b>: To use the new <code>targets</code> field and the new <code>country</code> and <code>language</code> parameters if you are using one of the Content API <a href="https://developers.google.com/shopping-content/v2/libraries">client libraries</a>, update to a version published on or after <b>Sep 21, 2017</b>.<br /><br /> If you have any questions or feedback about the changes to data feed management or other questions about the Content API for Shopping, please let us know on the <a href="https://groups.google.com/forum/#!forum/google-content-api-for-shopping">forum</a>.<br /> <span class="byline-author"><a href="https://plus.google.com/110017903700682803890"><img height="40" src="https://lh3.googleusercontent.com/-RAinpujspU4/AAAAAAAAAAI/AAAAAAAAABU/TNcLnP-c4ok/s60-p-rw-no/photo.jpg" style="vertical-align:middle; border:none;" width="40"></a> - <a href="https://plus.google.com/110017903700682803890" rel="author">Stevie Strickland</a>, Content API for Shopping Team</span> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Google Ads Developer Blog:Changes to data feed management in the Content API for Shopping&url=http://ads-developers.googleblog.com/2017/09/changes-to-data-feed-management-in.html&via=google'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=http://ads-developers.googleblog.com/2017/09/changes-to-data-feed-management-in.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='http://ads-developers.googleblog.com/2017/09/changes-to-data-feed-management-in.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='http://ads-developers.googleblog.com/search/label/content_api' rel='tag'> content_api </a> </span> </div> </div> </div> <div class='post' data-id='2274352974086677388' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='http://ads-developers.googleblog.com/2017/09/upgrade-to-adwords-universal-app.html' itemprop='url' title='Upgrade to AdWords Universal App campaigns from mobile app install campaigns before October 16th'> Upgrade to AdWords Universal App campaigns from mobile app install campaigns before October 16th </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Tuesday, September 19, 2017 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <div dir="ltr" style="text-align: left;" trbidi="on"> <font size="4">What’s changing?</font><br /> On August 14th, we <a href="https://adwords.googleblog.com/2017/08/propel-your-mobile-app-growth-with.html">announced</a> that AdWords users should start migrating their <a href="https://developers.google.com/adwords/api/docs/guides/mobile-app-campaigns#mobile_app_installs_campaigns">mobile app install campaigns</a> to <a href="https://developers.google.com/adwords/api/docs/guides/mobile-app-campaigns#universal_app_campaigns">Universal App campaigns</a> (UACs). <b>Starting on October 16, 2017, all requests to create new mobile app install campaigns will fail, and all requests to add ads and ad groups to these existing campaigns will fail with an <code>ADD_OP_NOT_PERMITTED</code> error.</b> Edits to these existing campaigns will still be allowed. Starting on November 14, 2017, these mobile app install campaigns <b>will be deleted and will stop serving</b>. Reporting stats for these campaigns will still be available. <a href="https://developers.google.com/adwords/api/docs/guides/mobile-app-campaigns#mobile_app_engagement_campaigns">Mobile app engagement campaigns</a> will not be affected.<br /><br /> <font size="4">Why is this happening?</font><br /> If you want to learn more about these changes, check out our <a href="https://adwords.googleblog.com/2017/08/propel-your-mobile-app-growth-with.html">Propel your mobile app growth with Universal App campaigns</a> announcement.<br /><br /> <font size="4">What should I do?</font><br /> To avoid errors when managing your mobile app campaigns, here’s what you need to do by <b>October 16th</b>: <ul> <li>Modify your code to enable the creation of Universal App campaigns. Check out <a href="https://developers.google.com/adwords/api/docs/guides/mobile-app-campaigns#universal_app_campaigns">our guide</a> on creating Universal App campaigns, which includes code samples in all <a href="https://developers.google.com/adwords/api/docs/clientlibraries">client library languages</a>.</li> <li>Disable the creation of mobile app install campaigns and adding ad groups or ads in these campaigns. Edits will still be allowed.</li> </ul> To keep your ads serving beyond <b>November 14th</b>: <ul> <li>Search for all campaigns in your accounts that have campaign <a href="https://developers.google.com/adwords/api/docs/reference/v201708/CampaignService.Campaign#status">status</a> <code>ENABLED</code> or <code>PAUSED</code> with <a href="https://developers.google.com/adwords/api/docs/reference/v201708/CampaignService.Campaign#advertisingchannelsubtype">advertisingChannelSubType</a> <code>DISPLAY_MOBILE_APP</code> or <code>SEARCH_MOBILE_APP</code>. After <b>November 14th</b>, these campaigns will have a status of <code>REMOVED</code> because they will be deleted automatically by the AdWords system.</li> <li>Create a new <a href="https://developers.google.com/adwords/api/docs/guides/mobile-app-campaigns#universal_app_campaigns">Universal App campaign</a> to replace each campaign you find.</li> <li>Once that Universal App campaign is online and serving, remove the mobile app install campaign.</li> </ul> <font size="4">Where can I learn more?</font><br /> Here are a few resources to get you started: <ul> <li><a href="https://developers.google.com/adwords/api/docs/guides/mobile-app-campaigns#universal_app_campaigns">Mobile app campaigns guide</a></li> <li><a href="https://support.google.com/adwords/answer/6247380">Universal App campaigns</a></li> <li><a href="https://developers.google.com/adwords/api/docs/clientlibraries">Client Libraries</a>: Code examples are available in <a href="https://developers.google.com/adwords/api/docs/samples/java/advanced-operations#add-a-universal-app-campaign">Java</a>, <a href="https://developers.google.com/adwords/api/docs/samples/php/advanced-operations#add-a-universal-app-campaign">PHP</a>, <a href="https://developers.google.com/adwords/api/docs/samples/python/advanced-operations#add-a-universal-app-campaign">Python</a>, <a href="https://developers.google.com/adwords/api/docs/samples/ruby/advanced-operations#add-a-universal-app-campaign">Ruby</a>, <a href="https://developers.google.com/adwords/api/docs/samples/perl/advanced-operations#add-a-universal-app-campaign">Perl</a>, <a href="https://developers.google.com/adwords/api/docs/samples/csharp/advanced-operations#add-a-universal-app-campaign">C#</a>, and <a href="https://developers.google.com/adwords/api/docs/samples/vb/advanced-operations#add-a-universal-app-campaign">VB.NET</a>.</li> </ul> If you have questions while you’re upgrading, please reach out to us on the <a href="https://groups.google.com/forum/#!forum/adwords-api">AdWords API forum</a>.<br /> <span class='byline-author'><a href="https://plus.google.com/109542956637533475940/posts"><img height="40" src="https://lh4.googleusercontent.com/_jG3nrG_WIX2fa1entJqHXlLKiFBGSVCaJA12-pYM5lodwlX6v0nG3cr9LjsU8J1Y1u0aZiSv_atG2iDVxmeFL4b-0S5moUsWooi1b0jIPv6ofuTlsPzTa2M9XOCPL72TJvbh8H9" style="vertical-align: middle; border:none;" width="40"/> Nadine Sundquist</a>, AdWords API Team</span> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <div dir="ltr" style="text-align: left;" trbidi="on"> <font size="4">What’s changing?</font><br /> On August 14th, we <a href="https://adwords.googleblog.com/2017/08/propel-your-mobile-app-growth-with.html">announced</a> that AdWords users should start migrating their <a href="https://developers.google.com/adwords/api/docs/guides/mobile-app-campaigns#mobile_app_installs_campaigns">mobile app install campaigns</a> to <a href="https://developers.google.com/adwords/api/docs/guides/mobile-app-campaigns#universal_app_campaigns">Universal App campaigns</a> (UACs). <b>Starting on October 16, 2017, all requests to create new mobile app install campaigns will fail, and all requests to add ads and ad groups to these existing campaigns will fail with an <code>ADD_OP_NOT_PERMITTED</code> error.</b> Edits to these existing campaigns will still be allowed. Starting on November 14, 2017, these mobile app install campaigns <b>will be deleted and will stop serving</b>. Reporting stats for these campaigns will still be available. <a href="https://developers.google.com/adwords/api/docs/guides/mobile-app-campaigns#mobile_app_engagement_campaigns">Mobile app engagement campaigns</a> will not be affected.<br /><br /> <font size="4">Why is this happening?</font><br /> If you want to learn more about these changes, check out our <a href="https://adwords.googleblog.com/2017/08/propel-your-mobile-app-growth-with.html">Propel your mobile app growth with Universal App campaigns</a> announcement.<br /><br /> <font size="4">What should I do?</font><br /> To avoid errors when managing your mobile app campaigns, here’s what you need to do by <b>October 16th</b>: <ul> <li>Modify your code to enable the creation of Universal App campaigns. Check out <a href="https://developers.google.com/adwords/api/docs/guides/mobile-app-campaigns#universal_app_campaigns">our guide</a> on creating Universal App campaigns, which includes code samples in all <a href="https://developers.google.com/adwords/api/docs/clientlibraries">client library languages</a>.</li> <li>Disable the creation of mobile app install campaigns and adding ad groups or ads in these campaigns. Edits will still be allowed.</li> </ul> To keep your ads serving beyond <b>November 14th</b>: <ul> <li>Search for all campaigns in your accounts that have campaign <a href="https://developers.google.com/adwords/api/docs/reference/v201708/CampaignService.Campaign#status">status</a> <code>ENABLED</code> or <code>PAUSED</code> with <a href="https://developers.google.com/adwords/api/docs/reference/v201708/CampaignService.Campaign#advertisingchannelsubtype">advertisingChannelSubType</a> <code>DISPLAY_MOBILE_APP</code> or <code>SEARCH_MOBILE_APP</code>. After <b>November 14th</b>, these campaigns will have a status of <code>REMOVED</code> because they will be deleted automatically by the AdWords system.</li> <li>Create a new <a href="https://developers.google.com/adwords/api/docs/guides/mobile-app-campaigns#universal_app_campaigns">Universal App campaign</a> to replace each campaign you find.</li> <li>Once that Universal App campaign is online and serving, remove the mobile app install campaign.</li> </ul> <font size="4">Where can I learn more?</font><br /> Here are a few resources to get you started: <ul> <li><a href="https://developers.google.com/adwords/api/docs/guides/mobile-app-campaigns#universal_app_campaigns">Mobile app campaigns guide</a></li> <li><a href="https://support.google.com/adwords/answer/6247380">Universal App campaigns</a></li> <li><a href="https://developers.google.com/adwords/api/docs/clientlibraries">Client Libraries</a>: Code examples are available in <a href="https://developers.google.com/adwords/api/docs/samples/java/advanced-operations#add-a-universal-app-campaign">Java</a>, <a href="https://developers.google.com/adwords/api/docs/samples/php/advanced-operations#add-a-universal-app-campaign">PHP</a>, <a href="https://developers.google.com/adwords/api/docs/samples/python/advanced-operations#add-a-universal-app-campaign">Python</a>, <a href="https://developers.google.com/adwords/api/docs/samples/ruby/advanced-operations#add-a-universal-app-campaign">Ruby</a>, <a href="https://developers.google.com/adwords/api/docs/samples/perl/advanced-operations#add-a-universal-app-campaign">Perl</a>, <a href="https://developers.google.com/adwords/api/docs/samples/csharp/advanced-operations#add-a-universal-app-campaign">C#</a>, and <a href="https://developers.google.com/adwords/api/docs/samples/vb/advanced-operations#add-a-universal-app-campaign">VB.NET</a>.</li> </ul> If you have questions while you’re upgrading, please reach out to us on the <a href="https://groups.google.com/forum/#!forum/adwords-api">AdWords API forum</a>.<br /> <span class='byline-author'><a href="https://plus.google.com/109542956637533475940/posts"><img height="40" src="https://lh4.googleusercontent.com/_jG3nrG_WIX2fa1entJqHXlLKiFBGSVCaJA12-pYM5lodwlX6v0nG3cr9LjsU8J1Y1u0aZiSv_atG2iDVxmeFL4b-0S5moUsWooi1b0jIPv6ofuTlsPzTa2M9XOCPL72TJvbh8H9" style="vertical-align: middle; border:none;" width="40"/> Nadine Sundquist</a>, AdWords API Team</span> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Google Ads Developer Blog:Upgrade to AdWords Universal App campaigns from mobile app install campaigns before October 16th&url=http://ads-developers.googleblog.com/2017/09/upgrade-to-adwords-universal-app.html&via=google'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=http://ads-developers.googleblog.com/2017/09/upgrade-to-adwords-universal-app.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='http://ads-developers.googleblog.com/2017/09/upgrade-to-adwords-universal-app.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='http://ads-developers.googleblog.com/search/label/adwords_api' rel='tag'> adwords_api </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/adwords_CampaignService' rel='tag'> adwords_CampaignService </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/sunset' rel='tag'> sunset </a> </span> </div> </div> </div> <div class='post' data-id='6467580115232090321' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='http://ads-developers.googleblog.com/2017/08/changes-to-sub-account-deletion-in.html' itemprop='url' title='Changes to sub-account deletion in the Content API for Shopping'> Changes to sub-account deletion in the Content API for Shopping </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Tuesday, August 29, 2017 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <div dir="ltr" style="text-align: left;" trbidi="on"> <span style="font-size: large;"><br /></span> <span style="font-size: large;">What's changing?</span><br /> <br /> Currently, the <a href="https://developers.google.com/shopping-content/v2/reference/v2/accounts/delete">Accounts.delete</a> method deletes sub-accounts whether or not they contain products. On <b>Sep 28, 2017</b>, we will change the default behavior of <code>Accounts.delete</code> to only delete empty sub-accounts. We are introducing this change to help avoid accidental deletion of sub-accounts that are still serving products.<br /> <br /> To override this behavior, we have introduced a <code>force</code> parameter, which currently defaults to true. On <b>Sep 28, 2017</b>, the default value will change to false. After this change, you must set this parameter to true to delete non-empty sub-accounts. Attempts to delete non-empty sub-accounts with <code>force = false</code> will result in a 403 Forbidden error. The error will also explain how to delete the non-empty account.<br /> <br /> <span style="font-size: large;">What do I need to do?</span><br /> <br /> Right now, we suggest you familiarize yourself with the new <span style="font-family: monospace;">force</span> parameter. If you regularly delete non-empty accounts, you should adjust your code to set <span style="font-family: monospace;">force</span> to true to avoid errors when the default behavior changes. If you want to inspect the error that you will receive after the default behavior changes, you can manually set the <span style="font-family: monospace;">force</span> parameter to false and attempt to delete a non-empty account. (Of course, we suggest you create a new sub-account and add some products to it to try out this new behavior, instead of calling it on an existing live account.)<br /> <br /> Once this change is live on <b>Sep 28, 2017</b>:<br /> <ul style="text-align: left;"> <li>To delete an empty sub-account, you do not need to make any changes.</li> <li><b>To delete a sub-account that contains products</b>, you must set the new <span style="font-family: monospace;">force</span> flag to true when calling <span style="font-family: monospace;">Accounts.delete</span>.</li> </ul> <br /> <div> <b>Note</b>: If you are using one of the Content API <a href="https://developers.google.com/shopping-content/v2/libraries">client libraries</a>, you will need to update to a version published after <b>Aug 28, 2017</b> to take advantage of this new parameter.<br /> <br /> If you have any questions or feedback about the changes to account deletion or other questions about the Content API for Shopping, please let us know on the <a href="https://groups.google.com/forum/#!forum/google-content-api-for-shopping">forum</a>.<br /> <br /> <span class="byline-author"><a href="https://plus.google.com/110017903700682803890"><img height="40" src="https://lh3.googleusercontent.com/-RAinpujspU4/AAAAAAAAAAI/AAAAAAAAABU/TNcLnP-c4ok/s60-p-rw-no/photo.jpg" style="border: none; vertical-align: middle;" width="40" /></a> - <a href="https://plus.google.com/110017903700682803890" rel="author">Stevie Strickland</a>, Content API for Shopping Team</span></div> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <div dir="ltr" style="text-align: left;" trbidi="on"> <span style="font-size: large;"><br /></span> <span style="font-size: large;">What's changing?</span><br /> <br /> Currently, the <a href="https://developers.google.com/shopping-content/v2/reference/v2/accounts/delete">Accounts.delete</a> method deletes sub-accounts whether or not they contain products. On <b>Sep 28, 2017</b>, we will change the default behavior of <code>Accounts.delete</code> to only delete empty sub-accounts. We are introducing this change to help avoid accidental deletion of sub-accounts that are still serving products.<br /> <br /> To override this behavior, we have introduced a <code>force</code> parameter, which currently defaults to true. On <b>Sep 28, 2017</b>, the default value will change to false. After this change, you must set this parameter to true to delete non-empty sub-accounts. Attempts to delete non-empty sub-accounts with <code>force = false</code> will result in a 403 Forbidden error. The error will also explain how to delete the non-empty account.<br /> <br /> <span style="font-size: large;">What do I need to do?</span><br /> <br /> Right now, we suggest you familiarize yourself with the new <span style="font-family: monospace;">force</span> parameter. If you regularly delete non-empty accounts, you should adjust your code to set <span style="font-family: monospace;">force</span> to true to avoid errors when the default behavior changes. If you want to inspect the error that you will receive after the default behavior changes, you can manually set the <span style="font-family: monospace;">force</span> parameter to false and attempt to delete a non-empty account. (Of course, we suggest you create a new sub-account and add some products to it to try out this new behavior, instead of calling it on an existing live account.)<br /> <br /> Once this change is live on <b>Sep 28, 2017</b>:<br /> <ul style="text-align: left;"> <li>To delete an empty sub-account, you do not need to make any changes.</li> <li><b>To delete a sub-account that contains products</b>, you must set the new <span style="font-family: monospace;">force</span> flag to true when calling <span style="font-family: monospace;">Accounts.delete</span>.</li> </ul> <br /> <div> <b>Note</b>: If you are using one of the Content API <a href="https://developers.google.com/shopping-content/v2/libraries">client libraries</a>, you will need to update to a version published after <b>Aug 28, 2017</b> to take advantage of this new parameter.<br /> <br /> If you have any questions or feedback about the changes to account deletion or other questions about the Content API for Shopping, please let us know on the <a href="https://groups.google.com/forum/#!forum/google-content-api-for-shopping">forum</a>.<br /> <br /> <span class="byline-author"><a href="https://plus.google.com/110017903700682803890"><img height="40" src="https://lh3.googleusercontent.com/-RAinpujspU4/AAAAAAAAAAI/AAAAAAAAABU/TNcLnP-c4ok/s60-p-rw-no/photo.jpg" style="border: none; vertical-align: middle;" width="40" /></a> - <a href="https://plus.google.com/110017903700682803890" rel="author">Stevie Strickland</a>, Content API for Shopping Team</span></div> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Google Ads Developer Blog:Changes to sub-account deletion in the Content API for Shopping&url=http://ads-developers.googleblog.com/2017/08/changes-to-sub-account-deletion-in.html&via=google'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=http://ads-developers.googleblog.com/2017/08/changes-to-sub-account-deletion-in.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='http://ads-developers.googleblog.com/2017/08/changes-to-sub-account-deletion-in.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='http://ads-developers.googleblog.com/search/label/content_api' rel='tag'> content_api </a> </span> </div> </div> </div> <div class='post' data-id='1336412973730785177' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='http://ads-developers.googleblog.com/2017/08/adwords-api-v201609-sunset-reminder.html' itemprop='url' title='AdWords API v201609 sunset reminder'> AdWords API v201609 sunset reminder </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Thursday, August 24, 2017 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <div dir="ltr" style="text-align: left;" trbidi="on"> <b>AdWords API v201609 will be <a href="https://developers.google.com/adwords/api/docs/sunset-dates">sunset</a> on October 2, 2017. After this date, all v201609 API requests will begin to fail.</b> This AdWords API version was <a href="http://googleadsdeveloper.blogspot.com/2017/05/announcing-v201705-of-adwords-api.html">deprecated</a> on May 31st, 2017. If you are still using v201609, we recommend that you skip v201702 and v201705 and migrate directly to v201708. Please migrate prior to October 2, 2017 to ensure your API access is unaffected.<br /><br /> We've prepared various resources to help you with the migration: <ul> <li><a href="https://developers.google.com/adwords/api/docs/guides/migration/v201708">v201708 migration guide</a></li> <li><a href="https://developers.google.com/adwords/api/docs/guides/migration/v201705">v201705 migration guide</a></li> <li><a href="https://developers.google.com/adwords/api/docs/guides/migration/v201702">v201702 migration guide</a></li> <li><a href="https://developers.google.com/adwords/api/docs/reference/">Release notes</a></li> </ul> As always, if you have any questions about this migration, please contact us via the <a href="https://groups.google.com/forum/#!forum/adwords-api">forum</a>.<br /> <span class="byline-author"><a target="_blank" href="https://plus.google.com/113314522956332161579"><img height="40" src="https://lh3.googleusercontent.com/aMB3q9V2ZUFicMmSHmO5WM-EP16dXhruPUl1oVSCsPgd8m5PP8UVHpDlWilzM2CBVM_oWhUf3g=w1920-h1200-rw-no" style="vertical-align: middle; border:none;" width="40"></a> - <a target="_blank" href="https://plus.google.com/113314522956332161579">Mike Cloonan</a>, AdWords API Team</span> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <div dir="ltr" style="text-align: left;" trbidi="on"> <b>AdWords API v201609 will be <a href="https://developers.google.com/adwords/api/docs/sunset-dates">sunset</a> on October 2, 2017. After this date, all v201609 API requests will begin to fail.</b> This AdWords API version was <a href="http://googleadsdeveloper.blogspot.com/2017/05/announcing-v201705-of-adwords-api.html">deprecated</a> on May 31st, 2017. If you are still using v201609, we recommend that you skip v201702 and v201705 and migrate directly to v201708. Please migrate prior to October 2, 2017 to ensure your API access is unaffected.<br /><br /> We've prepared various resources to help you with the migration: <ul> <li><a href="https://developers.google.com/adwords/api/docs/guides/migration/v201708">v201708 migration guide</a></li> <li><a href="https://developers.google.com/adwords/api/docs/guides/migration/v201705">v201705 migration guide</a></li> <li><a href="https://developers.google.com/adwords/api/docs/guides/migration/v201702">v201702 migration guide</a></li> <li><a href="https://developers.google.com/adwords/api/docs/reference/">Release notes</a></li> </ul> As always, if you have any questions about this migration, please contact us via the <a href="https://groups.google.com/forum/#!forum/adwords-api">forum</a>.<br /> <span class="byline-author"><a target="_blank" href="https://plus.google.com/113314522956332161579"><img height="40" src="https://lh3.googleusercontent.com/aMB3q9V2ZUFicMmSHmO5WM-EP16dXhruPUl1oVSCsPgd8m5PP8UVHpDlWilzM2CBVM_oWhUf3g=w1920-h1200-rw-no" style="vertical-align: middle; border:none;" width="40"></a> - <a target="_blank" href="https://plus.google.com/113314522956332161579">Mike Cloonan</a>, AdWords API Team</span> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Google Ads Developer Blog:AdWords API v201609 sunset reminder&url=http://ads-developers.googleblog.com/2017/08/adwords-api-v201609-sunset-reminder.html&via=google'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=http://ads-developers.googleblog.com/2017/08/adwords-api-v201609-sunset-reminder.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='http://ads-developers.googleblog.com/2017/08/adwords-api-v201609-sunset-reminder.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='http://ads-developers.googleblog.com/search/label/adwords_api' rel='tag'> adwords_api </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/adwords_api_v201609' rel='tag'> adwords_api_v201609 </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/sunset' rel='tag'> sunset </a> </span> </div> </div> </div> <div class='post' data-id='5600254806557399406' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='http://ads-developers.googleblog.com/2017/08/share-your-feedback-about-adwords-api.html' itemprop='url' title='Share your feedback about the AdWords API'> Share your feedback about the AdWords API </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Wednesday, August 16, 2017 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <div dir="ltr" style="text-align: left;" trbidi="on"> Since the early days of the <a href="https://developers.google.com/adwords/api">AdWords API</a>, we've continually evolved the platform to help you more efficiently and creatively manage large or complex AdWords accounts and campaigns.<br /><br /> To learn more about what's working well and what could be improved, we're running our first AdWords API feedback survey. Your answers will be completely anonymous, so we hope you'll take the opportunity to let us know about any changes you'd like to see to help make managing campaigns even easier.<br /><br /> <center><a href="https://google.qualtrics.com/jfe/form/SV_8Ds9qxpeP9WpdwF">SHARE YOUR FEEDBACK</a></center><br /> The survey will close on August 30, 2017, and should take about 15 minutes to complete. Thanks in advance for sharing your thoughts to help us improve the AdWords API Developer experience for everyone.<br /> <span class="byline-author"><a target="_blank" href="https://plus.google.com/u/0/105163643823526218896"><img height="40" src="https://lh3.googleusercontent.com/-ATp0EXPzHGI/AAAAAAAAAAI/AAAAAAAAABE/WTPgy_xmzuE/s120-c/photo.jpg?sz=40" style="vertical-align: middle; border:none;" width="40"></a> - <a target="_blank" href="https://plus.google.com/u/0/105163643823526218896">Anash P. Oommen</a>, AdWords API Team</span> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <div dir="ltr" style="text-align: left;" trbidi="on"> Since the early days of the <a href="https://developers.google.com/adwords/api">AdWords API</a>, we've continually evolved the platform to help you more efficiently and creatively manage large or complex AdWords accounts and campaigns.<br /><br /> To learn more about what's working well and what could be improved, we're running our first AdWords API feedback survey. Your answers will be completely anonymous, so we hope you'll take the opportunity to let us know about any changes you'd like to see to help make managing campaigns even easier.<br /><br /> <center><a href="https://google.qualtrics.com/jfe/form/SV_8Ds9qxpeP9WpdwF">SHARE YOUR FEEDBACK</a></center><br /> The survey will close on August 30, 2017, and should take about 15 minutes to complete. Thanks in advance for sharing your thoughts to help us improve the AdWords API Developer experience for everyone.<br /> <span class="byline-author"><a target="_blank" href="https://plus.google.com/u/0/105163643823526218896"><img height="40" src="https://lh3.googleusercontent.com/-ATp0EXPzHGI/AAAAAAAAAAI/AAAAAAAAABE/WTPgy_xmzuE/s120-c/photo.jpg?sz=40" style="vertical-align: middle; border:none;" width="40"></a> - <a target="_blank" href="https://plus.google.com/u/0/105163643823526218896">Anash P. Oommen</a>, AdWords API Team</span> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Google Ads Developer Blog:Share your feedback about the AdWords API&url=http://ads-developers.googleblog.com/2017/08/share-your-feedback-about-adwords-api.html&via=google'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=http://ads-developers.googleblog.com/2017/08/share-your-feedback-about-adwords-api.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='http://ads-developers.googleblog.com/2017/08/share-your-feedback-about-adwords-api.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='http://ads-developers.googleblog.com/search/label/adwords_api' rel='tag'> adwords_api </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/feedback' rel='tag'> feedback </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/survey' rel='tag'> survey </a> </span> </div> </div> </div> <div class='post' data-id='1506997790697269946' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='http://ads-developers.googleblog.com/2017/08/announcing-v201708-of-dfp-api.html' itemprop='url' title='Announcing v201708 of the DFP API'> Announcing v201708 of the DFP API </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Tuesday, August 15, 2017 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <div dir="ltr" style="text-align: left;" trbidi="on"> Today we’re pleased to announce several additions and improvements to the DFP API with the release of v201708.<br /><br /> <b>CreativeService:</b> The API now supports the <a href="https://developer.google.com/doubleclick-publishers/docs/reference/v201708/CreativeService.VideoCreative#skippableadtype">skippableAdType</a> attribute on VideoCreatives and the <a href="https://developer.google.com/doubleclick-publishers/docs/reference/v201708/CreativeService.VideoRedirectCreative#mezzaninefile">mezzanineFile</a> asset on VideoRedirectCreatives.<br /><br /> <b>CreativeWrapperService:</b> The HTML header and footer fields have been renamed to <a href="https://developer.google.com/doubleclick-publishers/docs/reference/v201708/CreativeWrapperService.CreativeWrapper#htmlheader">htmlHeader</a> and <a href="https://developer.google.com/doubleclick-publishers/docs/reference/v201708/CreativeWrapperService.CreativeWrapper#htmlfooter">htmlFooter</a>, and they are now strings instead of <a href="https://developer.google.com/doubleclick-publishers/docs/reference/v201705/CreativeWrapperService.CreativeWrapperHtmlSnippet">CreativeWrapperHtmlSnippets</a>.<br /><br /> <b>ProposalService:</b> Proposals are now automatically synced with marketplace. Therefore, the proposal action <a href="https://developer.google.com/doubleclick-publishers/docs/reference/v201705/ProposalService.SyncProposalsWithMarketplace">SyncProposalsWithMarketplace</a> has been removed (sending this action with <a href="https://developer.google.com/doubleclick-publishers/docs/reference/v201705/ProposalService#performProposalAction">performProposalAction</a> is now a no-op in previous API versions).<br /><br /> <b>PublisherQueryLanguageService:</b> In <a href="http://googleadsdeveloper.blogspot.com/2017/02/announcing-v201702-of-dfp-api.html">v201702</a> the <a href="https://developer.google.com/doubleclick-publishers/docs/reference/v201708/PublisherQueryLanguageService#Change_History">Change_History</a> table was introduced. Now, new entities for Sales Management have been added to the <a href="https://developer.google.com/doubleclick-publishers/docs/reference/v201708/PublisherQueryLanguageService.ChangeHistoryEntityType">EntityType</a> column. The new entities are <code>BASE_RATE</code>, <code>PREMIUM_RATE</code>, <code>PRODUCT</code>, <code>PRODUCT_PACKAGE</code>, <code>PRODUCT_PACKAGE_ITEM</code>, <code>PRODUCT_TEMPLATE</code>, <code>PROPOSAL</code>, <code>PROPOSAL_LINK</code>, <code>PROPOSAL_LINE_ITEM</code>, <code>PACKAGE</code>, <code>RATE_CARD</code>, and <code>WORKFLOW</code>.<br /><br /> <b>ReportService:</b> DateRangeType now supports a new <a href="https://developer.google.com/doubleclick-publishers/docs/reference/v201708/ReportService.DateRangeType#LAST_3_MONTHS">LAST_3_MONTHS</a> option. Also, several <a href="https://developer.google.com/doubleclick-publishers/docs/reference/v201705/ReportService.Column#AD_SERVER_IMPRESSIONS_OUT_OF_NETWORK">deprecated reporting metrics</a> have been removed. They can be replaced with their corresponding <a href="https://developer.google.com/doubleclick-publishers/docs/reference/v201708/ReportService.Column#PARTNER_MANAGEMENT_HOST_IMPRESSIONS">partner management metrics</a>, so you will need to update any code using those fields. For more information, check out the <a href="https://support.google.com/dfp_premium/answer/6317660">support entry for partner management reporting metrics</a>.<br /><br /> For a full list of API changes in v201708, see the <a href="https://developers.google.com/doubleclick-publishers/docs/rel_notes">release notes</a>.<br /><br /> With each new release comes a new <a href="https://developers.google.com/doubleclick-publishers/docs/deprecation">deprecation</a>. If you're using v201611 or earlier, it's time to look into upgrading. Also, remember that v201608 will be sunset at the <b>end of August 2017</b>.<br /><br /> As always, if you have any questions, feel free to reach out to us on the <a href="https://groups.google.com/forum/#!forum/google-doubleclick-for-publishers-api">DFP API forums</a> or the <a href="https://plus.google.com/+GoogleAdsDevelopers/posts">Ads Developer Google+ page</a>.<br /> <span class="post-author"><a href="https://plus.google.com/103616857309733406429"><img height="40" src="https://lh3.googleusercontent.com/dRbCh_4xSpOtA9y2Mq4DB0C7CMrpFX7oOmTlsLAYkezLjOq-7zkNs8l2-_zZE8RovQ_iuMXbD3PAk35V7XvlY9M4sKMhEw50IxA4jn-yAa-Ricvv1qa9GFK81UE2EZoi5hHg0chz" style="border: none; vertical-align: middle;" width="40" /></a> - <a href="https://plus.google.com/103616857309733406429" rel="author">Donovan McMurray</a>, DFP API Team</span> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <div dir="ltr" style="text-align: left;" trbidi="on"> Today we’re pleased to announce several additions and improvements to the DFP API with the release of v201708.<br /><br /> <b>CreativeService:</b> The API now supports the <a href="https://developer.google.com/doubleclick-publishers/docs/reference/v201708/CreativeService.VideoCreative#skippableadtype">skippableAdType</a> attribute on VideoCreatives and the <a href="https://developer.google.com/doubleclick-publishers/docs/reference/v201708/CreativeService.VideoRedirectCreative#mezzaninefile">mezzanineFile</a> asset on VideoRedirectCreatives.<br /><br /> <b>CreativeWrapperService:</b> The HTML header and footer fields have been renamed to <a href="https://developer.google.com/doubleclick-publishers/docs/reference/v201708/CreativeWrapperService.CreativeWrapper#htmlheader">htmlHeader</a> and <a href="https://developer.google.com/doubleclick-publishers/docs/reference/v201708/CreativeWrapperService.CreativeWrapper#htmlfooter">htmlFooter</a>, and they are now strings instead of <a href="https://developer.google.com/doubleclick-publishers/docs/reference/v201705/CreativeWrapperService.CreativeWrapperHtmlSnippet">CreativeWrapperHtmlSnippets</a>.<br /><br /> <b>ProposalService:</b> Proposals are now automatically synced with marketplace. Therefore, the proposal action <a href="https://developer.google.com/doubleclick-publishers/docs/reference/v201705/ProposalService.SyncProposalsWithMarketplace">SyncProposalsWithMarketplace</a> has been removed (sending this action with <a href="https://developer.google.com/doubleclick-publishers/docs/reference/v201705/ProposalService#performProposalAction">performProposalAction</a> is now a no-op in previous API versions).<br /><br /> <b>PublisherQueryLanguageService:</b> In <a href="http://googleadsdeveloper.blogspot.com/2017/02/announcing-v201702-of-dfp-api.html">v201702</a> the <a href="https://developer.google.com/doubleclick-publishers/docs/reference/v201708/PublisherQueryLanguageService#Change_History">Change_History</a> table was introduced. Now, new entities for Sales Management have been added to the <a href="https://developer.google.com/doubleclick-publishers/docs/reference/v201708/PublisherQueryLanguageService.ChangeHistoryEntityType">EntityType</a> column. The new entities are <code>BASE_RATE</code>, <code>PREMIUM_RATE</code>, <code>PRODUCT</code>, <code>PRODUCT_PACKAGE</code>, <code>PRODUCT_PACKAGE_ITEM</code>, <code>PRODUCT_TEMPLATE</code>, <code>PROPOSAL</code>, <code>PROPOSAL_LINK</code>, <code>PROPOSAL_LINE_ITEM</code>, <code>PACKAGE</code>, <code>RATE_CARD</code>, and <code>WORKFLOW</code>.<br /><br /> <b>ReportService:</b> DateRangeType now supports a new <a href="https://developer.google.com/doubleclick-publishers/docs/reference/v201708/ReportService.DateRangeType#LAST_3_MONTHS">LAST_3_MONTHS</a> option. Also, several <a href="https://developer.google.com/doubleclick-publishers/docs/reference/v201705/ReportService.Column#AD_SERVER_IMPRESSIONS_OUT_OF_NETWORK">deprecated reporting metrics</a> have been removed. They can be replaced with their corresponding <a href="https://developer.google.com/doubleclick-publishers/docs/reference/v201708/ReportService.Column#PARTNER_MANAGEMENT_HOST_IMPRESSIONS">partner management metrics</a>, so you will need to update any code using those fields. For more information, check out the <a href="https://support.google.com/dfp_premium/answer/6317660">support entry for partner management reporting metrics</a>.<br /><br /> For a full list of API changes in v201708, see the <a href="https://developers.google.com/doubleclick-publishers/docs/rel_notes">release notes</a>.<br /><br /> With each new release comes a new <a href="https://developers.google.com/doubleclick-publishers/docs/deprecation">deprecation</a>. If you're using v201611 or earlier, it's time to look into upgrading. Also, remember that v201608 will be sunset at the <b>end of August 2017</b>.<br /><br /> As always, if you have any questions, feel free to reach out to us on the <a href="https://groups.google.com/forum/#!forum/google-doubleclick-for-publishers-api">DFP API forums</a> or the <a href="https://plus.google.com/+GoogleAdsDevelopers/posts">Ads Developer Google+ page</a>.<br /> <span class="post-author"><a href="https://plus.google.com/103616857309733406429"><img height="40" src="https://lh3.googleusercontent.com/dRbCh_4xSpOtA9y2Mq4DB0C7CMrpFX7oOmTlsLAYkezLjOq-7zkNs8l2-_zZE8RovQ_iuMXbD3PAk35V7XvlY9M4sKMhEw50IxA4jn-yAa-Ricvv1qa9GFK81UE2EZoi5hHg0chz" style="border: none; vertical-align: middle;" width="40" /></a> - <a href="https://plus.google.com/103616857309733406429" rel="author">Donovan McMurray</a>, DFP API Team</span> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Google Ads Developer Blog:Announcing v201708 of the DFP API&url=http://ads-developers.googleblog.com/2017/08/announcing-v201708-of-dfp-api.html&via=google'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=http://ads-developers.googleblog.com/2017/08/announcing-v201708-of-dfp-api.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='http://ads-developers.googleblog.com/2017/08/announcing-v201708-of-dfp-api.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='http://ads-developers.googleblog.com/search/label/dfp_api' rel='tag'> dfp_api </a> </span> </div> </div> </div> <div class='post' data-id='1308378864937367830' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='http://ads-developers.googleblog.com/2017/08/announcing-v201708-of-adwords-api.html' itemprop='url' title='Announcing v201708 of the AdWords API'> Announcing v201708 of the AdWords API </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Wednesday, August 9, 2017 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <div dir="ltr" style="text-align: left;" trbidi="on"> Today we’re announcing the release of <a href="https://developers.google.com/adwords/api/docs/reference">AdWords API v201708</a>. Here are some of the highlights for key AdWords features: <ul> <li><b>Externally attributed conversion import.</b> Support for importing <a href="https://support.google.com/adwords/answer/7014069">partial conversion credits</a> has been added to <a href="https://developers.google.com/adwords/api/docs/reference/v201708/ConversionTrackerService">ConversionTrackerService</a> and <a href="https://developers.google.com/adwords/api/docs/reference/v201708/OfflineConversionFeedService">OfflineConversionFeedService</a>. Our updated <a href="https://developers.google.com/adwords/api/docs/guides/conversion-tracking">conversion tracking guide</a> contains step-by-step instructions to help you get started.</li> <li><b>Maximize conversions bid strategy.</b> The new <code>MAXIMIZE_CONVERSIONS</code> bidding strategy allows you to opt in to and control settings for the <a href="https://support.google.com/adwords/answer/7381968">Maximize conversions automated bidding strategy</a>. Check out the <a href="https://developers.google.com/adwords/api/docs/guides/bidding">updated bidding guide</a> for more details.</li> <li><b>Remarketing lists.</b> The new <a href="https://developers.google.com/adwords/api/docs/reference/v201708/AdwordsUserListService.CombinedRuleUserList">CombinedRuleUserList</a> allows you to create audiences based on users who visited a combination of pages on your site.</li> <li><b>Responsive ads for Display.</b> Additional attributes were added to <a href="https://developers.google.com/adwords/api/docs/reference/v201708/AdGroupAdService.ResponsiveDisplayAd">ResponsiveDisplayAd</a> for call to action text and ad images. Check out the <a href="https://developers.google.com/adwords/api/docs/guides/responsive-ads">updated guide</a> for details.</li> </ul> If you’re using v201609 of the AdWords API, please note that it will <a href="https://developers.google.com/adwords/api/docs/sunset-dates">be sunset</a> on <b>October 2, 2017</b>. We encourage you to skip v201702 and v201705 and migrate straight to v201708. Please note that v201702 is deprecated and will be sunset on <b>February 14, 2018</b>.<br /><br /> As with every new version of the AdWords API, please carefully review all changes in the <a href="https://developers.google.com/adwords/api/docs/reference/release-notes/v201708">release notes</a> and the <a href="https://developers.google.com/adwords/api/docs/guides/migration/v201708">v201708 migration guide</a>. The updated <a href="https://developers.google.com/adwords/api/docs/clientlibraries">client libraries</a> and code examples will be published within the next 48 hours.<br /><br /> If you have any questions or need help with migration, please post on the <a href="https://developers.google.com/adwords/api/community/">forum</a> or the <a href="https://plus.google.com/+GoogleAdsDevelopers">Ads Developers Plus Page</a>.<br /> <span class='byline-author'><img height="40" src="https://lh3.googleusercontent.com/v6vOiIK-wuO1NH_a1H_G1Z7uFT584tcKY-dTlRlTOaLhBPPqQD-lBl69ypAeKIU1PB8jCtV9ChLeRjlQLIALO5s-Q7q6rQCCFDp6H5rxcysL_lWL5h9I-wht0C6AyUGCm7muvrSy" style="vertical-align: middle; border:none;" width="40"/> - <a href="https://plus.google.com/100205313733177937765/posts">Josh Radcliff</a> on behalf of the AdWords API Team</span> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <div dir="ltr" style="text-align: left;" trbidi="on"> Today we’re announcing the release of <a href="https://developers.google.com/adwords/api/docs/reference">AdWords API v201708</a>. Here are some of the highlights for key AdWords features: <ul> <li><b>Externally attributed conversion import.</b> Support for importing <a href="https://support.google.com/adwords/answer/7014069">partial conversion credits</a> has been added to <a href="https://developers.google.com/adwords/api/docs/reference/v201708/ConversionTrackerService">ConversionTrackerService</a> and <a href="https://developers.google.com/adwords/api/docs/reference/v201708/OfflineConversionFeedService">OfflineConversionFeedService</a>. Our updated <a href="https://developers.google.com/adwords/api/docs/guides/conversion-tracking">conversion tracking guide</a> contains step-by-step instructions to help you get started.</li> <li><b>Maximize conversions bid strategy.</b> The new <code>MAXIMIZE_CONVERSIONS</code> bidding strategy allows you to opt in to and control settings for the <a href="https://support.google.com/adwords/answer/7381968">Maximize conversions automated bidding strategy</a>. Check out the <a href="https://developers.google.com/adwords/api/docs/guides/bidding">updated bidding guide</a> for more details.</li> <li><b>Remarketing lists.</b> The new <a href="https://developers.google.com/adwords/api/docs/reference/v201708/AdwordsUserListService.CombinedRuleUserList">CombinedRuleUserList</a> allows you to create audiences based on users who visited a combination of pages on your site.</li> <li><b>Responsive ads for Display.</b> Additional attributes were added to <a href="https://developers.google.com/adwords/api/docs/reference/v201708/AdGroupAdService.ResponsiveDisplayAd">ResponsiveDisplayAd</a> for call to action text and ad images. Check out the <a href="https://developers.google.com/adwords/api/docs/guides/responsive-ads">updated guide</a> for details.</li> </ul> If you’re using v201609 of the AdWords API, please note that it will <a href="https://developers.google.com/adwords/api/docs/sunset-dates">be sunset</a> on <b>October 2, 2017</b>. We encourage you to skip v201702 and v201705 and migrate straight to v201708. Please note that v201702 is deprecated and will be sunset on <b>February 14, 2018</b>.<br /><br /> As with every new version of the AdWords API, please carefully review all changes in the <a href="https://developers.google.com/adwords/api/docs/reference/release-notes/v201708">release notes</a> and the <a href="https://developers.google.com/adwords/api/docs/guides/migration/v201708">v201708 migration guide</a>. The updated <a href="https://developers.google.com/adwords/api/docs/clientlibraries">client libraries</a> and code examples will be published within the next 48 hours.<br /><br /> If you have any questions or need help with migration, please post on the <a href="https://developers.google.com/adwords/api/community/">forum</a> or the <a href="https://plus.google.com/+GoogleAdsDevelopers">Ads Developers Plus Page</a>.<br /> <span class='byline-author'><img height="40" src="https://lh3.googleusercontent.com/v6vOiIK-wuO1NH_a1H_G1Z7uFT584tcKY-dTlRlTOaLhBPPqQD-lBl69ypAeKIU1PB8jCtV9ChLeRjlQLIALO5s-Q7q6rQCCFDp6H5rxcysL_lWL5h9I-wht0C6AyUGCm7muvrSy" style="vertical-align: middle; border:none;" width="40"/> - <a href="https://plus.google.com/100205313733177937765/posts">Josh Radcliff</a> on behalf of the AdWords API Team</span> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Google Ads Developer Blog:Announcing v201708 of the AdWords API&url=http://ads-developers.googleblog.com/2017/08/announcing-v201708-of-adwords-api.html&via=google'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=http://ads-developers.googleblog.com/2017/08/announcing-v201708-of-adwords-api.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='http://ads-developers.googleblog.com/2017/08/announcing-v201708-of-adwords-api.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='http://ads-developers.googleblog.com/search/label/adwords_api' rel='tag'> adwords_api </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/adwords_api_v201708' rel='tag'> adwords_api_v201708 </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/release' rel='tag'> release </a> </span> </div> </div> </div> <div class='post' data-id='5139632913504682280' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='http://ads-developers.googleblog.com/2017/08/accountstatuses-now-includes-account.html' itemprop='url' title='Accountstatuses now includes account-level issues in the Content API for Shopping'> Accountstatuses now includes account-level issues in the Content API for Shopping </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Wednesday, August 9, 2017 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <div dir="ltr" style="text-align: left;" trbidi="on"> Starting <b>today</b>, calls to the <a href="https://developers.google.com/shopping-content/v2/reference/v2/accountstatuses">Accountstatuses</a> service return not only product-level issues, but also <b>account-level</b> issues. This means all account-level issues present in <a href="https://merchants.google.com/mc/insights">the Diagnostics tab</a> of the Merchant Center can now be retrieved using the Content API. Account-level issues are located in a new <code>accountLevelIssues</code> field, so existing code should be unaffected by this change. For more details, see the <a href="https://developers.google.com/shopping-content/v2/reference/v2/accountstatuses#resource-representations">accountStatus resource representation</a> in the reference documentation.<br /><br /> <b>Note</b>: Some account-level issues, like unclaimed websites, were already returned as product-level issues. Currently, these issues still show up at the product level as well as at the account level, but this may change in the future.<br /><br /> If you have any questions or feedback about the changes to issue reporting or other questions about the Content API for Shopping, please let us know on the <a href="https://groups.google.com/forum/#!forum/google-content-api-for-shopping">forum</a>.<br /> <span class="byline-author"><a href="https://plus.google.com/110017903700682803890"><img height="40" src="https://lh3.googleusercontent.com/-RAinpujspU4/AAAAAAAAAAI/AAAAAAAAABU/TNcLnP-c4ok/s60-p-rw-no/photo.jpg" style="vertical-align:middle; border:none;" width="40"></a> - <a href="https://plus.google.com/110017903700682803890" rel="author">Stevie Strickland</a>, Content API for Shopping Team</span> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <div dir="ltr" style="text-align: left;" trbidi="on"> Starting <b>today</b>, calls to the <a href="https://developers.google.com/shopping-content/v2/reference/v2/accountstatuses">Accountstatuses</a> service return not only product-level issues, but also <b>account-level</b> issues. This means all account-level issues present in <a href="https://merchants.google.com/mc/insights">the Diagnostics tab</a> of the Merchant Center can now be retrieved using the Content API. Account-level issues are located in a new <code>accountLevelIssues</code> field, so existing code should be unaffected by this change. For more details, see the <a href="https://developers.google.com/shopping-content/v2/reference/v2/accountstatuses#resource-representations">accountStatus resource representation</a> in the reference documentation.<br /><br /> <b>Note</b>: Some account-level issues, like unclaimed websites, were already returned as product-level issues. Currently, these issues still show up at the product level as well as at the account level, but this may change in the future.<br /><br /> If you have any questions or feedback about the changes to issue reporting or other questions about the Content API for Shopping, please let us know on the <a href="https://groups.google.com/forum/#!forum/google-content-api-for-shopping">forum</a>.<br /> <span class="byline-author"><a href="https://plus.google.com/110017903700682803890"><img height="40" src="https://lh3.googleusercontent.com/-RAinpujspU4/AAAAAAAAAAI/AAAAAAAAABU/TNcLnP-c4ok/s60-p-rw-no/photo.jpg" style="vertical-align:middle; border:none;" width="40"></a> - <a href="https://plus.google.com/110017903700682803890" rel="author">Stevie Strickland</a>, Content API for Shopping Team</span> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Google Ads Developer Blog:Accountstatuses now includes account-level issues in the Content API for Shopping&url=http://ads-developers.googleblog.com/2017/08/accountstatuses-now-includes-account.html&via=google'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=http://ads-developers.googleblog.com/2017/08/accountstatuses-now-includes-account.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='http://ads-developers.googleblog.com/2017/08/accountstatuses-now-includes-account.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='http://ads-developers.googleblog.com/search/label/content_api' rel='tag'> content_api </a> </span> </div> </div> </div> <div class='blog-pager' id='blog-pager'> <a class='home-link' href='http://ads-developers.googleblog.com/'> <i class='material-icons'>  </i> </a> <span id='blog-pager-newer-link'> <a class='blog-pager-newer-link' href='http://ads-developers.googleblog.com/search?updated-max=2018-02-06T09:40:00-08:00&max-results=7&reverse-paginate=true' id='Blog1_blog-pager-newer-link' title='Newer Posts'> <i class='material-icons'>  </i> </a> </span> <span id='blog-pager-older-link'> <a class='blog-pager-older-link' href='http://ads-developers.googleblog.com/search?updated-max=2017-08-09T09:21:00-07:00&max-results=7' id='Blog1_blog-pager-older-link' title='Older Posts'> <i class='material-icons'>  </i> </a> </span> </div> <div class='clear'></div> </div></div> </div> </div> <div class='col-right'> <div class='section' id='sidebar-top'><div class='widget HTML' data-version='1' id='HTML8'> <div class='widget-content'> <div class='searchBox'> <input type='text' title='Search This Blog' placeholder='Search blog ...' /> </div> </div> <div class='clear'></div> </div></div> <div id='aside'> <div class='section' id='sidebar'><div class='widget Label' data-version='1' id='Label1'> <div class='tab'> <img class='sidebar-icon' src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAYpJREFUeNrs2aFuwzAQBmAvKRkMKRjZA4QMDJaWFgyMjuzFRg37DIUlA3uFkoGQSaWzJU+tpri5O9+l/zSfdFJlpe59yTmyVedq1PjfcZMZ70NuQnaF8w8htyE/rABtpviXkLcK88c5HhLkMBfgVan43zfFBNGMjHVGT/s55KP2pAvidbGHd+nzKt1RKSLG3rKF1iPFv6UWiPke8i7kEqGdGsI1O+LYVdqJAjgirwkKYD0ytkJBUNbAMvX8V3q9PhUsYvU1sWD8SO/sQvx2ahxOiNoJCSBCoAHYCEQAC4EKICOQASQEOmAS8RcAFxFN5hiIiugpgC3wk9hQAHH/70EBHXUN7IER5EWMiBgo2+nzOKQv9SCAeEM/OQAkhE/ncccFICB87qzQMia5FsJfOui0zMnmRvipU1ormHQuxGTxUsAcCFLxJQBLBLn4UoAFglW8BkATwS5eC6CBEBWvCShBiIvXBkgQRcVbADiI4uKtABSESvGWgB9EzHt3+tNwyO0qa9SoIYtvAQYAqDJhaWWeMecAAAAASUVORK5CYII='/> <h2> Labels </h2> <i class='material-icons arrow'>  </i> </div> <div class='widget-content list-label-widget-content'> <ul> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/account_management'> account_management </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_clicks'> ad_clicks </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_customizers'> ad_customizers </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_exchange'> ad_exchange </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_exchange_buyer'> ad_exchange_buyer </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_exchange_optimization-series'> ad_exchange_optimization-series </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_exchange_rest'> ad_exchange_rest </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_exchange_rtb'> ad_exchange_rtb </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_exchange_seller'> ad_exchange_seller </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_exchange_soap'> ad_exchange_soap </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_extensions'> ad_extensions </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_inspector'> ad_inspector </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager'> ad_manager </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api'> ad_manager_api </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v201805'> ad_manager_api_v201805 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v201808'> ad_manager_api_v201808 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v201811'> ad_manager_api_v201811 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v201902'> ad_manager_api_v201902 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v201905'> ad_manager_api_v201905 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v201908'> ad_manager_api_v201908 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v201911'> ad_manager_api_v201911 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v202002'> ad_manager_api_v202002 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v202005'> ad_manager_api_v202005 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v202008'> ad_manager_api_v202008 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v202011'> ad_manager_api_v202011 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v202102'> ad_manager_api_v202102 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v202105'> ad_manager_api_v202105 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v202108'> ad_manager_api_v202108 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v202111'> ad_manager_api_v202111 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v202202'> ad_manager_api_v202202 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v202205'> ad_manager_api_v202205 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v202208'> ad_manager_api_v202208 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v202211'> ad_manager_api_v202211 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v202302'> ad_manager_api_v202302 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v202305'> ad_manager_api_v202305 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v202308'> ad_manager_api_v202308 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v202311'> ad_manager_api_v202311 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v202402'> ad_manager_api_v202402 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v202405'> ad_manager_api_v202405 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v202408'> ad_manager_api_v202408 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v202411'> ad_manager_api_v202411 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_param'> ad_param </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_speed'> ad_speed </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adexchangebuyer'> adexchangebuyer </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/AdGroup'> AdGroup </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/AdGroupAd'> AdGroupAd </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/admanager_api'> admanager_api </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/admob'> admob </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/admob_api'> admob_api </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/admob_api_v1'> admob_api_v1 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/admob_mediation'> admob_mediation </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/admob_sdk'> admob_sdk </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/admob_v4.3.1'> admob_v4.3.1 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/admob_v5.0.5'> admob_v5.0.5 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/admob_v6.0.1'> admob_v6.0.1 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ads'> ads </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adsense'> adsense </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adsense_api'> adsense_api </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adsense_host_api'> adsense_host_api </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adsense_host_api_v3'> adsense_host_api_v3 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adsense_management_api'> adsense_management_api </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adsense_management_api_v1'> adsense_management_api_v1 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adsense_management_api_v1.1'> adsense_management_api_v1.1 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adsense_management_api_v1.2'> adsense_management_api_v1.2 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adsense_management_api_v1.3'> adsense_management_api_v1.3 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adsense_management_api_v1.4'> adsense_management_api_v1.4 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/advanced_apis'> advanced_apis </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwhirl'> adwhirl </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwhirl_v3.1.1'> adwhirl_v3.1.1 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords'> adwords </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/AdWords%20Scripts'> AdWords Scripts </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_AdGroupCriterionService'> adwords_AdGroupCriterionService </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_api'> adwords_api </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_api_v201302'> adwords_api_v201302 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_api_v201306'> adwords_api_v201306 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_api_v201309'> adwords_api_v201309 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_api_v201402'> adwords_api_v201402 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_api_v201406'> adwords_api_v201406 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_api_v201409'> adwords_api_v201409 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_api_v201502'> adwords_api_v201502 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_api_v201506'> adwords_api_v201506 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_api_v201509'> adwords_api_v201509 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_api_v201601'> adwords_api_v201601 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_api_v201603'> adwords_api_v201603 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_api_v201605'> adwords_api_v201605 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_api_v201607'> adwords_api_v201607 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_api_v201609'> adwords_api_v201609 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_api_v201702'> adwords_api_v201702 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_api_v201705'> adwords_api_v201705 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_api_v201708'> adwords_api_v201708 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_api_v201710'> adwords_api_v201710 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_api_v201802'> adwords_api_v201802 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_api_v201806'> adwords_api_v201806 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_api_v201809'> adwords_api_v201809 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_api_workshops'> adwords_api_workshops </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_BatchJobService'> adwords_BatchJobService </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_CampaignService'> adwords_CampaignService </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_CreateAccountService'> adwords_CreateAccountService </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_for_video'> adwords_for_video </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_ManagedCustomerService'> adwords_ManagedCustomerService </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_MutateJobService'> adwords_MutateJobService </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_ReportDefinitionService'> adwords_ReportDefinitionService </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_scripts'> adwords_scripts </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_v201109'> adwords_v201109 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_v201206'> adwords_v201206 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_v201209'> adwords_v201209 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_v201302'> adwords_v201302 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_v201306'> adwords_v201306 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_v201309'> adwords_v201309 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_v201601'> adwords_v201601 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_v201605'> adwords_v201605 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_v201607'> adwords_v201607 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_v201609'> adwords_v201609 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_v201702'> adwords_v201702 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_v201802'> adwords_v201802 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_v201806'> adwords_v201806 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_v201809'> adwords_v201809 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/alerting'> alerting </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/amp'> amp </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/analytics'> analytics </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/analyticsapi'> analyticsapi </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/android'> android </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/android_layout'> android_layout </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/animation'> animation </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/announcement'> announcement </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/annual%20developer%20survey'> annual developer survey </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/api'> api </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/app_engine'> app_engine </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/asset_group'> asset_group </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/asset_group_listing_group_filter'> asset_group_listing_group_filter </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/asset_group_signal'> asset_group_signal </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/assets'> assets </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/attribution_reporting_api'> attribution_reporting_api </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/audiences'> audiences </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/authentication'> authentication </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/authorization'> authorization </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/authorized_buyer'> authorized_buyer </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/authorized_buyers'> authorized_buyers </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/aw_reporting'> aw_reporting </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/awql'> awql </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/batch_processing'> batch_processing </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/beacon_api'> beacon_api </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/best_practices'> best_practices </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/beta'> beta </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/bid_manager_api'> bid_manager_api </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/bid_modifiers'> bid_modifiers </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/bidding'> bidding </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/billing'> billing </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/brand%20guidelines'> brand guidelines </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/brand_guidelines'> brand_guidelines </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/budget_order_service'> budget_order_service </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/budgets'> budgets </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/builders'> builders </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/bulk_upload'> bulk_upload </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/c%23'> c# </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/caf_sdk'> caf_sdk </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/call_extensions'> call_extensions </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/call_metrics'> call_metrics </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/call_only'> call_only </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/call_tracking'> call_tracking </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/call-only'> call-only </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/callout_extensions'> callout_extensions </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/campaign'> campaign </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/CampaignCriterion'> CampaignCriterion </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/case_study'> case_study </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/cast'> cast </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/certificates'> certificates </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/certification'> certification </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/chart_tools'> chart_tools </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/chrome'> chrome </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/chromecast'> chromecast </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/click'> click </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/click_tracking'> click_tracking </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/click_type'> click_type </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/click-to-download'> click-to-download </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/clicks'> clicks </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/client_libraries'> client_libraries </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/client_library'> client_library </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/cm360'> cm360 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/code_examples'> code_examples </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/common_questions'> common_questions </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/conference'> conference </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/content'> content </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/content_api'> content_api </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/conversion'> conversion </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/conversions'> conversions </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ConversionTrackerService'> ConversionTrackerService </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/converted_clicks'> converted_clicks </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/creative_platforms'> creative_platforms </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/creatives'> creatives </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/custom_fields'> custom_fields </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/customer_match'> customer_match </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/DAI'> DAI </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dart'> dart </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dbm_api'> dbm_api </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/debugging'> debugging </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/decorators'> decorators </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/deprecation'> deprecation </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/developer'> developer </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfa_ad_service'> dfa_ad_service </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfa_api'> dfa_api </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfa_api_v118'> dfa_api_v118 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfa_creative_service'> dfa_creative_service </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfa_reporting_api'> dfa_reporting_api </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfa_site_service'> dfa_site_service </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfa_v1.16'> dfa_v1.16 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfa_v1.17'> dfa_v1.17 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfa_v1.18'> dfa_v1.18 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfa_v1.19'> dfa_v1.19 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfa_v1.20'> dfa_v1.20 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfp'> dfp </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfp_api'> dfp_api </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfp_appengine'> dfp_appengine </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfp_creatives'> dfp_creatives </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfp_inventory'> dfp_inventory </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfp_mobile'> dfp_mobile </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfp_pql'> dfp_pql </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfp_reports'> dfp_reports </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfp_sales'> dfp_sales </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfp_teams'> dfp_teams </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfp_v201111'> dfp_v201111 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfp_v201201'> dfp_v201201 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfp_v201203'> dfp_v201203 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfp_v201204'> dfp_v201204 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfp_v201206'> dfp_v201206 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfp_v201208'> dfp_v201208 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfp_v201211'> dfp_v201211 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfp_v201302'> dfp_v201302 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfp_v201308'> dfp_v201308 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfp_v201608'> dfp_v201608 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfp_v201711'> dfp_v201711 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/display'> display </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/display_network'> display_network </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/display_select'> display_select </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/display_smart_campaign'> display_smart_campaign </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/docs'> docs </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dotnet'> dotnet </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/doubleclick'> doubleclick </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/DoubleClick_Rich_Media'> DoubleClick_Rich_Media </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/doubleclick_studio'> doubleclick_studio </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/drafts'> drafts </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dsa'> dsa </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dv360'> dv360 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dv360_api'> dv360_api </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dynamic_creative'> dynamic_creative </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/enhanced_campaigns'> enhanced_campaigns </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/entity_read_files'> entity_read_files </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/erf'> erf </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/error%20handling'> error handling </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/eta'> eta </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/examples'> examples </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/excluded_placement_lists'> excluded_placement_lists </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/exoplayer'> exoplayer </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/expanded_text_ads'> expanded_text_ads </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/experiment'> experiment </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/experiments'> experiments </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/faq'> faq </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/feedback'> feedback </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/feeds'> feeds </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/firebase'> firebase </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/flash'> flash </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/flash_sdk'> flash_sdk </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/floc'> floc </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/flutter'> flutter </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/forecast_service'> forecast_service </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/games'> games </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/gaql'> gaql </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/gclid'> gclid </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/gdc'> gdc </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/gdl'> gdl </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/geo_targets'> geo_targets </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/geotargeting'> geotargeting </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/gmail_ads'> gmail_ads </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/gmail_image_ads'> gmail_image_ads </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/gmail_multi_product_ads'> gmail_multi_product_ads </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/gmail_single_promotion_ads'> gmail_single_promotion_ads </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/GMF'> GMF </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/gmp'> gmp </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/golang'> golang </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_ads'> google_ads </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_ads_api'> google_ads_api </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_ads_api_migration_workshop'> google_ads_api_migration_workshop </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_ads_api_v0'> google_ads_api_v0 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_ads_api_v0_1'> google_ads_api_v0_1 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_ads_api_v0_3'> google_ads_api_v0_3 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_ads_api_v0_4'> google_ads_api_v0_4 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_ads_api_v0_5'> google_ads_api_v0_5 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_ads_api_v0_6'> google_ads_api_v0_6 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_ads_api_v0_7'> google_ads_api_v0_7 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_ads_api_v1_0'> google_ads_api_v1_0 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_ads_api_v1_1'> google_ads_api_v1_1 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_ads_api_v1_2'> google_ads_api_v1_2 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_ads_api_v1_3'> google_ads_api_v1_3 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_ads_api_v2_1'> google_ads_api_v2_1 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_ads_api_v3_0'> google_ads_api_v3_0 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_ads_api_v3_1'> google_ads_api_v3_1 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_ads_api_v4'> google_ads_api_v4 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_ads_api_v5'> google_ads_api_v5 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_ads_api_v6'> google_ads_api_v6 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_ads_scripts'> google_ads_scripts </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_ads_solutions'> google_ads_solutions </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_apis'> google_apis </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_apps_script'> google_apps_script </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_drive'> google_drive </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_play_services'> google_play_services </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_plus'> google_plus </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/gpt'> gpt </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/guide'> guide </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/guides'> guides </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/hangout'> hangout </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/hotel_ads'> hotel_ads </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/hotel_campaigns'> hotel_campaigns </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/html5'> html5 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/html5_ads'> html5_ads </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/https'> https </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/i18n'> i18n </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ids'> ids </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ima_android'> ima_android </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ima_flash'> ima_flash </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ima_html5'> ima_html5 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ima_ios'> ima_ios </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ima_roku'> ima_roku </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ima_sdk'> ima_sdk </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/image'> image </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/image_ads'> image_ads </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/implementation'> implementation </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/impression_share'> impression_share </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/interstitial'> interstitial </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/interview'> interview </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/io13'> io13 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/iOS'> iOS </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/iOS9'> iOS9 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/java_app_engine'> java_app_engine </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/java_dart_api'> java_dart_api </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/jdbc'> jdbc </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/keyword_optimizer'> keyword_optimizer </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/keywords'> keywords </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/kotlin'> kotlin </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/labels'> labels </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/limits'> limits </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/line_item'> line_item </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/linq'> linq </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/listing_groups'> listing_groups </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/location_extensions'> location_extensions </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/location_feeds'> location_feeds </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/LocationExtensionOperand'> LocationExtensionOperand </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/LocationGroups'> LocationGroups </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/logging'> logging </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/manager_accounts'> manager_accounts </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/maps_api'> maps_api </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/marketplace'> marketplace </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/maximize'> maximize </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/mcc'> mcc </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/media'> media </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/media_bundle'> media_bundle </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/mediation_test_suite'> mediation_test_suite </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/merchant_api'> merchant_api </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/migration'> migration </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/mobile'> mobile </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/mobile_ads'> mobile_ads </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/mobile_ads_garage'> mobile_ads_garage </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/mobile_ads_sdk'> mobile_ads_sdk </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/mobile_sites'> mobile_sites </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/mobile_speed'> mobile_speed </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/mobile_targeting'> mobile_targeting </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/mobile_ux'> mobile_ux </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/monitoring'> monitoring </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/native'> native </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/native_ads_express'> native_ads_express </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/new_features'> new_features </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/oath2'> oath2 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/oauth'> oauth </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/oauth2'> oauth2 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/offline_conversions'> offline_conversions </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/OfflineConversionFeedService'> OfflineConversionFeedService </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/open_source'> open_source </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/openrtb'> openrtb </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/optimization'> optimization </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/Performance%20Max'> Performance Max </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/performance_max'> performance_max </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/performance_max_api_workshop'> performance_max_api_workshop </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/php'> php </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/PLA'> PLA </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/placements'> placements </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/PMax'> PMax </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/policy'> policy </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/policy_violation'> policy_violation </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/PQL'> PQL </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/price_extension'> price_extension </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/privacy'> privacy </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/privacy_sandbox'> privacy_sandbox </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/product_listing_ads'> product_listing_ads </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/proguard'> proguard </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/promotion_line'> promotion_line </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/publisher_ads_audits'> publisher_ads_audits </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/python'> python </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/qa'> qa </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/quality_score'> quality_score </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/query_builder_blog_series'> query_builder_blog_series </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/query_language'> query_language </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/quota'> quota </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/rate_limiter'> rate_limiter </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/rate_sheet'> rate_sheet </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/RateExceededError'> RateExceededError </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/realtime_bidding'> realtime_bidding </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/realtime_bidding_api'> realtime_bidding_api </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/realtime_bidding_protocol'> realtime_bidding_protocol </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/realtimebidding'> realtimebidding </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/recommendations'> recommendations </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/referer'> referer </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/release'> release </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/remarketing'> remarketing </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/reporting'> reporting </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/reports'> reports </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/responsive_ads'> responsive_ads </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/rewarded_video'> rewarded_video </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/rmf'> rmf </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ruby'> ruby </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/sa360'> sa360 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/sandbox'> sandbox </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/scripts'> scripts </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/sdf'> sdf </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/sdkless'> sdkless </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/search'> search </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/search%20audience'> search audience </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/search%20terms'> search terms </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/search_audience'> search_audience </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/search_network'> search_network </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/search_theme'> search_theme </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/selector'> selector </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/sendbeacon'> sendbeacon </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/service_accounts'> service_accounts </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/shared_negative_keywords'> shared_negative_keywords </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/shopping'> shopping </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/simulations'> simulations </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/sitelinks'> sitelinks </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/smart'> smart </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/snds'> snds </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/spend'> spend </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ssl'> ssl </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/StepInsideAdWords'> StepInsideAdWords </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/success_stories'> success_stories </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/suggested_ad_units'> suggested_ad_units </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/sunset'> sunset </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/survey'> survey </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/swift'> swift </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/swiftui'> swiftui </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/target'> target </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/target_cpa'> target_cpa </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/targeting'> targeting </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/template_ads'> template_ads </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/terms'> terms </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/test_accounts'> test_accounts </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/test_network'> test_network </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/testing'> testing </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/text_ads'> text_ads </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/text_asset_automation'> text_asset_automation </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/tools'> tools </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/trials'> trials </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/turtledove'> turtledove </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ui'> ui </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/unity'> unity </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/update'> update </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/updates'> updates </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/upgrade'> upgrade </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/upgraded_urls'> upgraded_urls </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/v201509'> v201509 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/vast3'> vast3 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/vcpm'> vcpm </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/video'> video </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/viewable-cpm'> viewable-cpm </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/webinar'> webinar </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/workshop'> workshop </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/workshops'> workshops </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/wp8'> wp8 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/xml'> xml </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/youtube'> youtube </a> </li> </ul> <div class='clear'></div> </div> </div><div class='widget BlogArchive' data-version='1' id='BlogArchive1'> <div class='tab'> <i class='material-icons icon'>  </i> <h2> Archive </h2> <i class='material-icons arrow'>  </i> </div> <div class='widget-content'> <div id='ArchiveList'> <div id='BlogArchive1_ArchiveList'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'>  </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'>  </i>   </span> </a> <a class='post-count-link' href='http://ads-developers.googleblog.com/2025/'> 2025 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2025/02/'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2025/01/'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'>  </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'>  </i>   </span> </a> <a class='post-count-link' href='http://ads-developers.googleblog.com/2024/'> 2024 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2024/12/'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2024/11/'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2024/10/'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2024/09/'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2024/08/'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2024/07/'> Jul </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2024/06/'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2024/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2024/04/'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2024/03/'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2024/02/'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2024/01/'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'>  </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'>  </i>   </span> </a> <a class='post-count-link' href='http://ads-developers.googleblog.com/2023/'> 2023 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2023/12/'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2023/11/'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2023/10/'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2023/09/'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2023/08/'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2023/07/'> Jul </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2023/06/'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2023/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2023/04/'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2023/03/'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2023/02/'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2023/01/'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'>  </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'>  </i>   </span> </a> <a class='post-count-link' href='http://ads-developers.googleblog.com/2022/'> 2022 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2022/12/'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2022/11/'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2022/10/'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2022/09/'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2022/08/'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2022/07/'> Jul </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2022/06/'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2022/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2022/04/'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2022/03/'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2022/02/'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2022/01/'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'>  </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'>  </i>   </span> </a> <a class='post-count-link' href='http://ads-developers.googleblog.com/2021/'> 2021 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2021/12/'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2021/11/'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2021/10/'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2021/09/'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2021/08/'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2021/07/'> Jul </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2021/06/'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2021/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2021/04/'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2021/03/'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2021/02/'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2021/01/'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'>  </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'>  </i>   </span> </a> <a class='post-count-link' href='http://ads-developers.googleblog.com/2020/'> 2020 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2020/12/'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2020/11/'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2020/10/'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2020/09/'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2020/08/'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2020/07/'> Jul </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2020/06/'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2020/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2020/04/'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2020/03/'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2020/02/'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2020/01/'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'>  </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'>  </i>   </span> </a> <a class='post-count-link' href='http://ads-developers.googleblog.com/2019/'> 2019 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2019/12/'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2019/11/'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2019/10/'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2019/09/'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2019/08/'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2019/07/'> Jul </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2019/06/'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2019/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2019/04/'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2019/03/'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2019/02/'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2019/01/'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'>  </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'>  </i>   </span> </a> <a class='post-count-link' href='http://ads-developers.googleblog.com/2018/'> 2018 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2018/12/'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2018/11/'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2018/10/'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2018/09/'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2018/08/'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2018/07/'> Jul </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2018/06/'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2018/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2018/04/'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2018/03/'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2018/02/'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2018/01/'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate expanded'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'>  </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy toggle-open'> <i class='material-icons'>  </i>   </span> </a> <a class='post-count-link' href='http://ads-developers.googleblog.com/2017/'> 2017 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate expanded'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2017/12/'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2017/11/'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2017/10/'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2017/09/'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2017/08/'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2017/07/'> Jul </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2017/06/'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2017/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2017/04/'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2017/03/'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2017/02/'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2017/01/'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'>  </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'>  </i>   </span> </a> <a class='post-count-link' href='http://ads-developers.googleblog.com/2016/'> 2016 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2016/12/'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2016/11/'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2016/10/'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2016/09/'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2016/08/'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2016/07/'> Jul </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2016/06/'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2016/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2016/04/'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2016/03/'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2016/02/'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2016/01/'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'>  </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'>  </i>   </span> </a> <a class='post-count-link' href='http://ads-developers.googleblog.com/2015/'> 2015 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2015/12/'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2015/11/'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2015/10/'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2015/09/'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2015/08/'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2015/07/'> Jul </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2015/06/'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2015/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2015/04/'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2015/03/'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2015/02/'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2015/01/'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'>  </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'>  </i>   </span> </a> <a class='post-count-link' href='http://ads-developers.googleblog.com/2014/'> 2014 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2014/12/'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2014/11/'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2014/10/'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2014/09/'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2014/08/'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2014/07/'> Jul </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2014/06/'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2014/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2014/04/'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2014/03/'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2014/02/'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2014/01/'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'>  </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'>  </i>   </span> </a> <a class='post-count-link' href='http://ads-developers.googleblog.com/2013/'> 2013 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2013/12/'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2013/11/'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2013/10/'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2013/09/'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2013/08/'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2013/07/'> Jul </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2013/06/'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2013/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2013/04/'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2013/03/'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2013/02/'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2013/01/'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'>  </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'>  </i>   </span> </a> <a class='post-count-link' href='http://ads-developers.googleblog.com/2012/'> 2012 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2012/12/'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2012/11/'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2012/10/'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2012/09/'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2012/08/'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2012/07/'> Jul </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2012/06/'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2012/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2012/04/'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2012/03/'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2012/02/'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2012/01/'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'>  </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'>  </i>   </span> </a> <a class='post-count-link' href='http://ads-developers.googleblog.com/2011/'> 2011 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2011/12/'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2011/11/'> Nov </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> </div> </div> <div class='clear'></div> </div> </div></div> <div class='section' id='sidebar-bottom'><div class='widget HTML' data-version='1' id='HTML5'> <div class='widget-content'> <div class='followgooglewrapper'> <script src="https://apis.google.com/js/plusone.js"></script> <div class="g-ytsubscribe" data-channel="AdsDevelopers" data-layout="full"></div> </div> </div> <div class='clear'></div> </div><div class='widget HTML' data-version='1' id='HTML7'> <div class='widget-content'> Give us feedback in our developer product forums:<br /><br /> <a href="https://groups.google.com/forum/#!forum/adwords-api">Google Ads API</a><br /> <a href="https://groups.google.com/forum/#!forum/adwords-scripts">Google Ads scripts</a><br /> <a href="https://groups.google.com/forum/#!forum/google-doubleclick-for-publishers-api">Google Ad Manager API</a><br /> <a href="https://groups.google.com/forum/#!forum/google-doubleclick-for-advertisers-api">DCM API</a><br /> <a href="https://groups.google.com/forum/#!forum/google-admob-ads-sdk">Google Mobile Ads SDK</a><br /> <a href="https://groups.google.com/g/google-admob-api-developer-forum">Google AdMob API</a><br /> <a href="https://groups.google.com/forum/#!forum/ima-sdk">Google Interactive Media Ads SDK</a><br /> <a href="https://groups.google.com/forum/#!forum/google-content-api-for-shopping">Google Content API for Shopping</a><br /> <a href="https://groups.google.com/forum/#!forum/google-doubleclick-ad-exchange-buyer-api">Authorized Buyers API</a><br /> </div> <div class='clear'></div> </div></div> </div> </div> <div style='clear:both;'></div> </div> <!-- Footer --> <div class='google-footer-outer loading'> <div id='google-footer'> <a href='//www.google.com/'> <img class='google-logo-dark' height='36' src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALgAAABICAYAAABFoT/eAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAACLVJREFUeNrsXd+L20YQ3vOprdLqiMXFXE2qB7dcwEcTSB7ykIc+9A/PQx/yEMq1TWhNuYIpJriNr7XpmZ5IxFEvmW2EKs3Ornb1w50PxIFP0kiz387OzM6uhGAwGAxGP3Ho+f7x7ri1O7LdccPqZjSNA4dEHsLfaHcEFedJom93x9Xu2OyOFTcBo6sED3fHZHeMEELrkAHJF0B8Rr+gDFsZ5n0luLTQ95AXs4W06D/tjpR50xtM4CjD0y48YGB4rnyZxNOzyA7zBHr+nLnDaJLg0mo/ALekCasg3Z4XbM0ZdTEgnDPeHY8bIne+Qz2GvwyGNwsuyT218KWvIIBMcwGpLiipcolecjMxfBDchNyS1EvxLiOSIecp31q6IJ/C3yrIrMqMm4jhg+AxkdwbIO3aUO4KjqqMjCT3uaazMBhWBJfuxH3CtRfiXf66DhSRZWbmlMnNaILgZxrXJQO/eO3wORZwvwm4JUxuhheCjzVBYAbW1ces45YDSoZrFNOEE835M8FT6oyeEnws8Fz3QnBxFKPHBMem4GU+m6fPGb0leCTwWcM5B36MPgeZI01gudyDdw3hPeXfo8L/rmCUWnuMMdqUL2WqWeRbhf+twfVsO7YagZGNC79fw7OthEVtkiJ4jJzTd3KPwf3CRqhhiTu23AP5sl0/0xiwISQXpNwLIJK87mHF+U8ddzzdmgKlGzlPYjyxGJQouIhNT4k9AqWEFkqfguIvagTWbcq3KW1WE3xS3m8NtA9WS451xofwjKT5kkDoK/b6mDk5FfXr1lWDL4BofZEv2/SRsK/EHGlGdBdu8QNRb8HMCFwt7Yy3DDI/QP7fx5z3VLhdlJEIs4rKNuXXJXdxZPdB7kfCzWqwCO4V1LHgLjInX3tQ1KzCR52Cz+vDj1dydeRuS74rcvs2Pi6fT5H8OaaUQPQPYcWwRSGXyhhscn5dpAnEFMkuEZetbfkTAnlSuH4DxisE+aMGeJAQ3lFl7C4LJE6QWCaCd583ORQ1jYAwjFctal7nOs2ZZvicwvlZx+RHGrcoAwKUVX8uwcc/9TT65INeDOr5shL9LDRB6QTeIy3zwfdh3WOi6axLCEhSjXU7F3h6LqggUtvyJxpynwu8tDkD98fXApOxRj8zoZ9MnGveYVIVZKaGrkBXCY65BCYNN9NkjpKOyQ81Q79JgdxS+Jn3SDTEXRI7SWzaiSTB32oI3nU3BvMfM0urhOVYgwKhuiAfc4tM07wXwm1ZRoQYSl2NUwiu01fEAHVcpixd745FvVz4dzUUc0o8rwoLy8ZSwU6CyFx1RP5II9+1bFPEFs9HWbNLiimDXE+vCm7u1CS47cofzD3aEhVY57mxRo5zlqdt+RFC1JUH2S7bcVXg4liTMakaBZZVxiTICRoivcn1sEUBlk24JmaC6kxUbYmWoqvyfck2xZGGnDFYa9MMzkYQ1ijkCX6qidybrgePiQ0QIQqoi6qRLeqQfIoRsEHaQJLBdHOnLGetSdm/IPcymJuS1PAnbQPH0MOw/39C1vL11DiLOqIsbDI8QcHvGiLnySi2qUXBicaqUSxN5LEB0g7Jt3ENXJLPJ5S1tnaZBoWbpRqrmjRE7qHmpSmNHdQcYrEUadoh+TbBnc9ri7iycI1kzPeNcLDIvbiqXpez9Tmdq6zGREPuzECBoxrPMiI2WtvyNwhJba2wy3JZ6ky5dD1lSvmZS3e4SPA1wcf1VTFHKX+cGwZzdUYcqpvUtvwrD/InDttVlyZeAKlNN5MKbAiurHhKIPlUuJvlTCCiDjSKSCsUmCFWbGLZwCESfK07JB8LvMYWVtw0D00JEHV8Mq2HkqPbE0oHLvvK2g0o8ETg+4cfwTlZDT9JDoWygu4uQQE/ivIvtcnfPkaCqhiupz7jWOAzqL/vjtcdkv9G4MVMt+EaylfuImiPAXEUjRF3pjjaHiPPZ6If9TGGAO4ZY0am6jOCb+DQ+ZCqLkIpOIPrdNfIjnFPY6nyFut7TS/fanrziOBOKMupKw94WaLMtuVnSFt9CPrWWdJE6PeltCX432DEBoh+5Dv8RRhdis8YAv9uyq4/JAwtlEApgBe9Cw9xDD3tdk4Jn0MDfiHwPHcRPxBePCMER3GuIx7kGlv9fkZ4V9lolx2Uv4X7hEj7qJ3LDoAMGbTRMRibu4L2xQ8bgt8AyU+Q+x7nYrvDnH4iuO5LxKsYwPVbkPMvKF9Zky9wXzRfVWizi62r9X5VHf55h+WHhDjGBZ4WRhyTr6z5SlCoLMxLSpBZFsQ9F80uQFbF/6aFWi+Ev51vzzsuX+msyzuQXXjUz8zEBy+zpq9yweXAoxJW4JbYrDS6gYDqGHxPl+TKeiBfxj9/EBIElPYeOA4y8/qRQfknjvSzgRgtq0Pw/M1eQeMdOSb2Bnrhr6Led+1vcp2x7oTFHMnedFW+Ivlty062BUt74oHgSj+vHepnhunn0JJAMtBZgDI/qmGtMujRv8DDpo47zBJ8UtPOuAR/7rKn8t9AJ0tBdmBAmJ/Fu71yxp4I3qh+DhyRqbi5Y1ShVPlSb8X7bRNcfgZFl+WRGYo7uecrWq1r8X5bhmzP5OdlDwsGRm1suSxkg5rYm7ConyGQ3Zl+DgSD8V/kPwrWBMG9YcBtyShBnTLdTiHgttw7qAW7cqh/ZnmPKr/6ignOaKsdyxbsToT5UkPsW00bJjijDXficcX/JsLs6w2BwGtherdckH3w/kNXRPVI0OqJQoHX42/66IMfMj/2huRjxIidgKV/W0JS+bsstDoTeAHcrI8E5zTh/sDkqxL5rZup55/3USlswfcHf4IrQplVDgW9XFlOqnwr6pVPMMEZTuC60EttvdzbLbaZ4PsFVa3nohhO+vW+yn/ZB2fUhpysmQrzBcTSai9EszuZMcEZ1lCFVrp9zGXhm69iLyY4oxFIa178lPe12I/P2DAYDAaDwWAwGAwGg8FgMBgMBoPBYDD2Cf8IMADDRGoQTe+E9AAAAABJRU5ErkJggg==' style='margin-top: -16px;' width='92'/> </a> <ul> <li> <a href='//www.google.com/'> Google </a> </li> <li> <a href='//www.google.com/policies/privacy/'> Privacy </a> </li> <li> <a href='//www.google.com/policies/terms/'> Terms </a> </li> </ul> </div> </div> <script type='text/javascript'> //<![CDATA[ // Social sharing popups. var postEl = document.getElementsByClassName('social-wrapper'); var postCount = postEl.length; for(i=0; i<postCount;i++){ postEl[i].addEventListener("click", function(event){ var postUrl = this.getAttribute("data-href"); window.open( postUrl,'popUpWindow','height=500,width=500,left=10,top=10,resizable=yes,scrollbars=yes,toolbar=yes,menubar=no,location=no,directories=no,status=yes'); });} //]]> </script> <script type='text/javascript'> //<![CDATA[ var BreakpointHandler = function() { this.initted = false; this.isHomePage = false; this.isMobile = false; }; BreakpointHandler.prototype.finalizeSummary = function(summaryHtml, lastNode) { // Use $.trim for IE8 compatibility summaryHtml = $.trim(summaryHtml).replace(/(<br>|\s)+$/,''); if (lastNode.nodeType == 3) { var lastChar = summaryHtml.slice(-1); if (!lastChar.match(/[.”"?]/)) { if (!lastChar.match(/[A-Za-z]/)) { summaryHtml = summaryHtml.slice(0, -1); } summaryHtml += ' ...'; } } else if (lastNode.nodeType == 1 && (lastNode.nodeName == 'I' || lastNode.nodeName == 'A')) { summaryHtml += ' ...'; } return summaryHtml; }; BreakpointHandler.prototype.generateSummaryFromContent = function(content, numWords) { var seenWords = 0; var summaryHtml = ''; for (var i=0; i < content.childNodes.length; i++) { var node = content.childNodes[i]; var nodeText; if (node.nodeType == 1) { if (node.hasAttribute('data-about-pullquote')) { continue; } nodeText = node.textContent; if (nodeText === undefined) { // innerText for IE8 nodeText = node.innerText; } if (node.nodeName == 'DIV' || node.nodeName == 'B') { // Don't end early if we haven't seen enough words. if (seenWords < 10) { continue; } if (i > 0) { summaryHtml = this.finalizeSummary(summaryHtml, content.childNodes[i-1]); } break; } summaryHtml += node.outerHTML; } else if (node.nodeType == 3) { nodeText = node.nodeValue; summaryHtml += nodeText + ' '; } var words = nodeText.match(/\S+\s*/g); if (!words) { continue; } var remain = numWords - seenWords; if (words.length >= remain) { summaryHtml = this.finalizeSummary(summaryHtml, node); break; } seenWords += words.length; } return summaryHtml; }; BreakpointHandler.prototype.detect = function() { var match, pl = /\+/g, search = /([^&=]+)=?([^&]*)/g, decode = function (s) { return decodeURIComponent(s.replace(pl, " ")); }, query = window.location.search.substring(1); var urlParams = {}; while (match = search.exec(query)) urlParams[decode(match[1])] = decode(match[2]); this.isListPage = $('html').hasClass('list-page'); this.isMobile = urlParams['m'] === '1'; this.isHomePage = window.location.pathname == '/'; }; BreakpointHandler.prototype.initContent = function() { var self = this; $('.post').each(function(index) { var body = $(this).children('.post-body')[0]; var content = $(body).children('.post-content')[0]; $(content).addClass('post-original'); var data = $(content).children('script').html(); data = self.rewriteForSSL(data); // If exists, extract specified editor's preview. var match = data.match(/([\s\S]+?)<div data-is-preview.+?>([\s\S]+)<\/div>/m); if (match) { data = match[1]; } // Prevent big images from loading when they aren't needed. // This must be done as a pre-injection step, since image loading can't be // canceled once embedded into the DOM. if (self.isListPage && self.isMobile) { data = data.replace(/<(img|iframe) .+?>/g, ''); } // Insert template to be rendered as nodes. content.innerHTML = data; if (self.isListPage) { var summary = document.createElement('div'); $(summary).addClass('post-content'); $(summary).addClass('post-summary'); body.insertBefore(summary, content); if (match) { // Use provided summary. summary.innerHTML = match[2]; } else { // Generate a summary. // Summary generation relies on DOM, so it must occur after content is // inserted into the page. summary.innerHTML = self.generateSummaryFromContent(content, 30); } // Add read more link to summary. var titleAnchor = $(this).find('.title a')[0]; var link = titleAnchor.cloneNode(true); link.innerHTML = 'Read More'; $(link).addClass('read-more'); summary.appendChild(link); } }); // Firefox does not allow for proper styling of BR. if (navigator.userAgent.indexOf('Firefox') > -1) { $('.post-content br').replaceWith('<span class="space"></span>'); } $('.loading').removeClass('loading'); }; BreakpointHandler.prototype.process = function() { if (!this.initted) { var makeInsecureImageRegex = function(hosts) { var whitelist = hosts.join('|').replace(/\./g,'\\.'); // Normal image tags, plus input images (yes, this is possible!) return new RegExp('(<(img|input)[^>]+?src=("|\'))http:\/\/(' + whitelist +')', 'g'); }; this.sslImageRegex = makeInsecureImageRegex(BreakpointHandler.KNOWN_HTTPS_HOSTS); this.sslImageCurrentDomainRegex = makeInsecureImageRegex([window.location.hostname]); this.detect(); this.initContent(); this.initted = true; } }; BreakpointHandler.KNOWN_HTTPS_HOSTS = [ "www.google.org", "www.google.com", "services.google.com", "blogger.com", "draft.blogger.com", "www.blogger.com", "photos1.blogger.com", "photos2.blogger.com", "photos3.blogger.com", "blogblog.com", "img1.blogblog.com", "img2.blogblog.com", "www.blogblog.com", "www1.blogblog.com", "www2.blogblog.com", "0.bp.blogspot.com", "1.bp.blogspot.com", "2.bp.blogspot.com", "3.bp.blogspot.com", "4.bp.blogspot.com", "lh3.googleusercontent.com", "lh4.googleusercontent.com", "lh5.googleusercontent.com", "lh6.googleusercontent.com", "themes.googleusercontent.com", ]; BreakpointHandler.prototype.rewriteForSSL = function(html) { // Handle HTTP -> HTTPS source replacement of images, movies, and other embedded content. return html.replace(this.sslImageRegex, '$1https://$4') .replace(this.sslImageCurrentDomainRegex, '$1//$4') .replace(/(<(embed|iframe)[^>]+?src=("|'))http:\/\/([^"']*?(youtube|picasaweb\.google)\.com)/g, '$1https://$4') // Slideshow SWF takes a image host, so we need to rewrite that parameter. .replace(/(<embed[^>]+?feed=http(?=[^s]))/g, '$1s'); }; $(document).ready(function() { var handler = new BreakpointHandler(); handler.process(); // Top-level navigation. $(".BlogArchive .tab").click(function(ev) { ev.preventDefault(); $(this).parent().toggleClass('active'); $(this).siblings().slideToggle(300); }); $(".Label .tab").click(function(ev) { ev.preventDefault(); $(this).parent().toggleClass('active'); $(this).siblings().slideToggle(300); }); // Blog archive year expansion. $('.BlogArchive .intervalToggle').click(function(ev) { ev.preventDefault(); if ($(this).parent().hasClass('collapsed')) { $(this).parent().removeClass('collapsed'); $(this).parent().addClass('expanded'); } else { $(this).parent().removeClass('expanded'); $(this).parent().addClass('collapsed'); } }); // Reverse order of months. $('.BlogArchive .intervalToggle + div').each(function(_, items) { var year = $(this); year.children().each(function(_, month) { year.prepend(month); }); }); // Set anchors to open in new tab. $('.post-content img').parent().each(function(_, node) { if (node.nodeName == 'A') { $(this).attr('target', '_blank'); } }); // Process search requests. $('.searchBox input').on("keypress", function(ev) { if (ev.which == 13) { window.location.href = 'https://www.google.com/search?q=site%3A' + window.location.hostname + '%20' + encodeURIComponent ($(this).val()); } }); }); //]]> </script> <script type="text/javascript" src="https://www.blogger.com/static/v1/widgets/1704033933-widgets.js"></script> <script type='text/javascript'> window['__wavt'] = 'AOuZoY7nE9jCGzzImJSryZjCY9YGjmhKGQ:1740435020427';_WidgetManager._Init('//www.blogger.com/rearrange?blogID\x3d7815614485808579332','//ads-developers.googleblog.com/2017/','7815614485808579332'); _WidgetManager._SetDataContext([{'name': 'blog', 'data': {'blogId': '7815614485808579332', 'title': 'Google Ads Developer Blog', 'url': 'http://ads-developers.googleblog.com/2017/', 'canonicalUrl': 'http://ads-developers.googleblog.com/2017/', 'homepageUrl': 'http://ads-developers.googleblog.com/', 'searchUrl': 'http://ads-developers.googleblog.com/search', 'canonicalHomepageUrl': 'http://ads-developers.googleblog.com/', 'blogspotFaviconUrl': 'http://ads-developers.googleblog.com/favicon.ico', 'bloggerUrl': 'https://www.blogger.com', 'hasCustomDomain': true, 'httpsEnabled': false, 'enabledCommentProfileImages': true, 'gPlusViewType': 'FILTERED_POSTMOD', 'adultContent': false, 'analyticsAccountNumber': 'G-E4MSGF2SF9', 'analytics4': true, 'encoding': 'UTF-8', 'locale': 'en', 'localeUnderscoreDelimited': 'en', 'languageDirection': 'ltr', 'isPrivate': false, 'isMobile': false, 'isMobileRequest': false, 'mobileClass': '', 'isPrivateBlog': false, 'isDynamicViewsAvailable': true, 'feedLinks': '\x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22Google Ads Developer Blog - Atom\x22 href\x3d\x22http://ads-developers.googleblog.com/feeds/posts/default\x22 /\x3e\n\x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/rss+xml\x22 title\x3d\x22Google Ads Developer Blog - RSS\x22 href\x3d\x22http://ads-developers.googleblog.com/feeds/posts/default?alt\x3drss\x22 /\x3e\n\x3clink rel\x3d\x22service.post\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22Google Ads Developer Blog - Atom\x22 href\x3d\x22https://www.blogger.com/feeds/7815614485808579332/posts/default\x22 /\x3e\n', 'meTag': '', 'adsenseHostId': 'ca-host-pub-1556223355139109', 'adsenseHasAds': false, 'adsenseAutoAds': false, 'boqCommentIframeForm': true, 'loginRedirectParam': '', 'view': '', 'dynamicViewsCommentsSrc': '//www.blogblog.com/dynamicviews/4224c15c4e7c9321/js/comments.js', 'dynamicViewsScriptSrc': '//www.blogblog.com/dynamicviews/c320e3f9c6626331', 'plusOneApiSrc': 'https://apis.google.com/js/platform.js', 'disableGComments': true, 'interstitialAccepted': false, 'sharing': {'platforms': [{'name': 'Get link', 'key': 'link', 'shareMessage': 'Get link', 'target': ''}, {'name': 'Facebook', 'key': 'facebook', 'shareMessage': 'Share to Facebook', 'target': 'facebook'}, {'name': 'BlogThis!', 'key': 'blogThis', 'shareMessage': 'BlogThis!', 'target': 'blog'}, {'name': 'X', 'key': 'twitter', 'shareMessage': 'Share to X', 'target': 'twitter'}, {'name': 'Pinterest', 'key': 'pinterest', 'shareMessage': 'Share to Pinterest', 'target': 'pinterest'}, {'name': 'Email', 'key': 'email', 'shareMessage': 'Email', 'target': 'email'}], 'disableGooglePlus': true, 'googlePlusShareButtonWidth': 0, 'googlePlusBootstrap': '\x3cscript type\x3d\x22text/javascript\x22\x3ewindow.___gcfg \x3d {\x27lang\x27: \x27en\x27};\x3c/script\x3e'}, 'hasCustomJumpLinkMessage': false, 'jumpLinkMessage': 'Read more', 'pageType': 'archive', 'pageName': '2017', 'pageTitle': 'Google Ads Developer Blog: 2017'}}, {'name': 'features', 'data': {}}, {'name': 'messages', 'data': {'edit': 'Edit', 'linkCopiedToClipboard': 'Link copied to clipboard!', 'ok': 'Ok', 'postLink': 'Post Link'}}, {'name': 'template', 'data': {'name': 'custom', 'localizedName': 'Custom', 'isResponsive': false, 'isAlternateRendering': false, 'isCustom': true}}, {'name': 'view', 'data': {'classic': {'name': 'classic', 'url': '?view\x3dclassic'}, 'flipcard': {'name': 'flipcard', 'url': '?view\x3dflipcard'}, 'magazine': {'name': 'magazine', 'url': '?view\x3dmagazine'}, 'mosaic': {'name': 'mosaic', 'url': '?view\x3dmosaic'}, 'sidebar': {'name': 'sidebar', 'url': '?view\x3dsidebar'}, 'snapshot': {'name': 'snapshot', 'url': '?view\x3dsnapshot'}, 'timeslide': {'name': 'timeslide', 'url': '?view\x3dtimeslide'}, 'isMobile': false, 'title': 'Google Ads Developer Blog', 'description': 'The official blog for information about the Google Ads, Google Ad Manager, Google Mobile Ads SDKs for AdMob and IMA SDKs, and other Google Advertising Platform developer tools.', 'url': 'http://ads-developers.googleblog.com/2017/', 'type': 'feed', 'isSingleItem': false, 'isMultipleItems': true, 'isError': false, 'isPage': false, 'isPost': false, 'isHomepage': false, 'isArchive': true, 'isLabelSearch': false, 'archive': {'year': 2017, 'rangeMessage': 'Showing posts from 2017'}}}]); _WidgetManager._RegisterWidget('_HeaderView', new _WidgetInfo('Header1', 'header', document.getElementById('Header1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_BlogView', new _WidgetInfo('Blog1', 'main', document.getElementById('Blog1'), {'cmtInteractionsEnabled': false, 'lightboxEnabled': true, 'lightboxModuleUrl': 'https://www.blogger.com/static/v1/jsbin/2332438401-lbx.js', 'lightboxCssUrl': 'https://www.blogger.com/static/v1/v-css/1964470060-lightbox_bundle.css'}, 'displayModeFull')); _WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML8', 'sidebar-top', document.getElementById('HTML8'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_LabelView', new _WidgetInfo('Label1', 'sidebar', document.getElementById('Label1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_BlogArchiveView', new _WidgetInfo('BlogArchive1', 'sidebar', document.getElementById('BlogArchive1'), {'languageDirection': 'ltr', 'loadingMessage': 'Loading\x26hellip;'}, 'displayModeFull')); _WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML5', 'sidebar-bottom', document.getElementById('HTML5'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML7', 'sidebar-bottom', document.getElementById('HTML7'), {}, 'displayModeFull')); </script> </body> </html>