{"__v":19,"_id":"573f819fbb12c60e0014e969","category":{"project":"5429beef1163360800ed31fa","version":"5429beef1163360800ed31fd","_id":"5736471abe10a9200030732c","__v":0,"sync":{"url":"","isSync":false},"reference":false,"createdAt":"2016-05-13T21:28:58.827Z","from_sync":false,"order":9,"slug":"know-thy-ad-server","title":"Know Thy Ad-Server"},"parentDoc":null,"project":"5429beef1163360800ed31fa","user":"5625457f23053b2300f596c9","version":{"__v":21,"_id":"5429beef1163360800ed31fd","project":"5429beef1163360800ed31fa","createdAt":"2014-09-29T20:19:59.904Z","releaseDate":"2014-09-29T20:19:59.904Z","categories":["5429beef1163360800ed31fe","55e74e1f5d36b32b002563fa","55e7500a73169617001f2e86","55e76b8196131b2f00bf4b72","55e89569cdbb8a350096df9c","55f8935eb089b71700a8364e","55f8a67d3bb4bb0d0022d093","55f9dbefc7ef770d00d9bf6d","5601c21a22ecf60d002b27b3","5601c21ff12aee0d001bb06e","5601c2256c7b610d00280db5","5601c22c22ecf60d002b27b4","5603738d0c78b00d0039af47","5626f70bfcbbc621004ebf52","566f7a1ae144ab0d00e9732f","566f85ca7820960d00c3b93d","56708ce43a32d20d00c45cbf","56708d436995210d003aad8e","5736471abe10a9200030732c","57a82c7aff9bd30e00a6f1c1","591b8500e3992319007190f4"],"is_deprecated":false,"is_hidden":false,"is_beta":false,"is_stable":true,"codename":"","version_clean":"1.0.0","version":"1.0"},"updates":[],"next":{"pages":[],"description":""},"createdAt":"2016-05-20T21:29:03.600Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"order":0,"body":"[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/EYiCxe6Qw6YMuzeVLqcP_AN_Illustration_Ad-Serving-Flow_Selection-Optimization_20160523.png\",\n        \"AN_Illustration_Ad-Serving-Flow_Selection-Optimization_20160523.png\",\n        \"1704\",\n        \"1080\",\n        \"#1a3d44\",\n        \"\"\n      ],\n      \"sizing\": \"smart\"\n    }\n  ]\n}\n[/block]\nOur ad server ad selection process essentially goes through four logical steps or phases. Each phase is trying to basically short list a campaigns and henceforth finally select a single campaign and a creative which would be a best candidate for that particular ad request. AdsNative treats all kinds of demand sources basically as campaigns, including direct campaigns, DSPs, ad networks, etc., and various rules such as geo, device or placement targeting can be set at these campaigns. The basic goal of the ad server is to respect all the criteria set by the campaign and at the same time try to maximize the revenue for the publishers.\n\nLet's look at these 4 phases,\n\n1. **Creative Asset Matching:** One of the important goals of our native ad server is to choose an ad which complies strictly with the asset requirements set by publishers. AdsNative provides full ability to publishers to specify which creative assets are part of a placement through html templates. For example *title*, *summary*, *brand name*, *ad image*, *brand image*, etc. and if the *title* is marked as required AdsNative will pick only campaigns which has creatives with *title* and so on. \n\n2. **Filtering/Targeting:** Once the campaigns are short-listed from phase 1, ad server looks at the filtering/targeting criteria set by the campaign owner and follows that strictly. Campaign can set following targeting options,\n   1. Geo targeting: Target campaign to any set of countries, US or CA states, DMA or cities.\n   2. Device targeting: Target any set of devices or user agents.\n   3. Category targeting: Target any placements from set of IAB categories.\n   4. Publisher/Site/Placement targeting: Target any publishers or sites or placements. \n   5. Key-Value or Keywords targeting: Target any keywords or key-value combination seen on ad request. \n   6. Audience targeting: Target any audience segments.\n   7. Start and end date: If the current timestamp for ad request doesn't fall into the campaign's start and end date, the campaign is filtered out\n   \n  In this phase, the ad server will keep only the campaigns for which the current ad request satisfies the criteria and it will filter out the rest.\n\n3. **Campaign pacing:** After phase 1 and 2 ad server is left with only campaigns which are eligible for current the ad request, however in this phase campaign's setting of 'Delivery Speed' comes into action. If the campaign has delivery setup as 'As fast as possible', in that case campaign will still be deemed as eligible after this phase. If the setup is 'Spread evenly' then the ad server aims to spread out the traffic exposed to this campaign throughout the day as well as throughout until it's end date, rather than running out of campaign's goal immediately. The way ad server does this is through following steps\n   1. It takes the campaign's remaining goal and divides it by the number of days between the current date and the end date of the campaign, basically sets itself a goal for the current day. This calculation is done at end of each UTC day.\n   2. Then the ad server will create a goal plan for the current hour by dividing the daily goal by hours remaining in the day. This is done at the end of each hour. Ad server will also try to front-load a percentage of the goal early in the day to ensure the complete delivery of the campaign. \n   3. If a campaign has reached it's hourly goal then it's held off from delivery and marked ineligible until the end of the hour and next hour's goal is kicked in. \n  \n   One important thing to note is campaign pacing is susceptible to available inventory or number of ad requests for any particular hour or day. If the number of ad requests simply low compared to campaigns hourly or daily goal then ad server will not be able to deliver to it's goal but it's designed in a way that it pushes unfilled goals to the next hour or day. \n\n4. **Yield Optimization: ** In this phase ad server is left with only the eligible campaigns. If there is only one eligible campaign left then ad server will choose that campaign to run. If there are multiple eligible campaigns left, then the aim of the ad server is to choose the campaign which will yield most revenue for the publisher over the period of time. \n   There are multiple scenarios to consider in this phase,\n   \n   1. If there are only CPM based campaigns in the mix, then the ad server simply chooses the campaign which has the highest CPM. \n   \n   2. If there are some CPC based campaigns in the mix, then the ad server will try to collect some sample data on these CPC based campaigns by selecting these campaigns over others for certain number of impressions to come up with a predicted eCPM value based on the performance (CTR in this case) of the campaign for those sample impressions. Once these CPC based campaigns have enough impressions data then the ad server will use this eCPM value to compare with rest of the campaigns to choose the campaigns with highest eCPM/CPM campaign. \n   \n   3. Similar to CPC based campaigns publisher might also have some ad network based campaigns, for this case ad server either uses eCPM value specified by the publisher or if it's in auto optimization mode then ad server will try to fetch past data for the ad networks from their respective reporting API on maximum possible frequency to calculate predictive eCPM value based on the recent past data. If the ad network has zero impressions in the past then ad sever will select this ad network/campaign for certain number of impressions so that it can collect enough number of impressions to calculate a predictive eCPM value before it can start comparing this value with the rest of the campaigns.\n   \nAdsNative constantly revises it's algorithms to come with the most accurate possible measure of predictive eCPM and number of sample impressions it has to dedicate to come with this number. \n\nEssentially, with all these 4 phases the ad server will select one single ad to deliver by respective all the criteria selected by the campaign owner and at the same time trying to maximize the revenue for the publishers.","excerpt":"","slug":"ad-selection-and-optimization","type":"basic","title":"Ad Selection and Optimization"}

Ad Selection and Optimization


[block:image] { "images": [ { "image": [ "https://files.readme.io/EYiCxe6Qw6YMuzeVLqcP_AN_Illustration_Ad-Serving-Flow_Selection-Optimization_20160523.png", "AN_Illustration_Ad-Serving-Flow_Selection-Optimization_20160523.png", "1704", "1080", "#1a3d44", "" ], "sizing": "smart" } ] } [/block] Our ad server ad selection process essentially goes through four logical steps or phases. Each phase is trying to basically short list a campaigns and henceforth finally select a single campaign and a creative which would be a best candidate for that particular ad request. AdsNative treats all kinds of demand sources basically as campaigns, including direct campaigns, DSPs, ad networks, etc., and various rules such as geo, device or placement targeting can be set at these campaigns. The basic goal of the ad server is to respect all the criteria set by the campaign and at the same time try to maximize the revenue for the publishers. Let's look at these 4 phases, 1. **Creative Asset Matching:** One of the important goals of our native ad server is to choose an ad which complies strictly with the asset requirements set by publishers. AdsNative provides full ability to publishers to specify which creative assets are part of a placement through html templates. For example *title*, *summary*, *brand name*, *ad image*, *brand image*, etc. and if the *title* is marked as required AdsNative will pick only campaigns which has creatives with *title* and so on. 2. **Filtering/Targeting:** Once the campaigns are short-listed from phase 1, ad server looks at the filtering/targeting criteria set by the campaign owner and follows that strictly. Campaign can set following targeting options, 1. Geo targeting: Target campaign to any set of countries, US or CA states, DMA or cities. 2. Device targeting: Target any set of devices or user agents. 3. Category targeting: Target any placements from set of IAB categories. 4. Publisher/Site/Placement targeting: Target any publishers or sites or placements. 5. Key-Value or Keywords targeting: Target any keywords or key-value combination seen on ad request. 6. Audience targeting: Target any audience segments. 7. Start and end date: If the current timestamp for ad request doesn't fall into the campaign's start and end date, the campaign is filtered out In this phase, the ad server will keep only the campaigns for which the current ad request satisfies the criteria and it will filter out the rest. 3. **Campaign pacing:** After phase 1 and 2 ad server is left with only campaigns which are eligible for current the ad request, however in this phase campaign's setting of 'Delivery Speed' comes into action. If the campaign has delivery setup as 'As fast as possible', in that case campaign will still be deemed as eligible after this phase. If the setup is 'Spread evenly' then the ad server aims to spread out the traffic exposed to this campaign throughout the day as well as throughout until it's end date, rather than running out of campaign's goal immediately. The way ad server does this is through following steps 1. It takes the campaign's remaining goal and divides it by the number of days between the current date and the end date of the campaign, basically sets itself a goal for the current day. This calculation is done at end of each UTC day. 2. Then the ad server will create a goal plan for the current hour by dividing the daily goal by hours remaining in the day. This is done at the end of each hour. Ad server will also try to front-load a percentage of the goal early in the day to ensure the complete delivery of the campaign. 3. If a campaign has reached it's hourly goal then it's held off from delivery and marked ineligible until the end of the hour and next hour's goal is kicked in. One important thing to note is campaign pacing is susceptible to available inventory or number of ad requests for any particular hour or day. If the number of ad requests simply low compared to campaigns hourly or daily goal then ad server will not be able to deliver to it's goal but it's designed in a way that it pushes unfilled goals to the next hour or day. 4. **Yield Optimization: ** In this phase ad server is left with only the eligible campaigns. If there is only one eligible campaign left then ad server will choose that campaign to run. If there are multiple eligible campaigns left, then the aim of the ad server is to choose the campaign which will yield most revenue for the publisher over the period of time. There are multiple scenarios to consider in this phase, 1. If there are only CPM based campaigns in the mix, then the ad server simply chooses the campaign which has the highest CPM. 2. If there are some CPC based campaigns in the mix, then the ad server will try to collect some sample data on these CPC based campaigns by selecting these campaigns over others for certain number of impressions to come up with a predicted eCPM value based on the performance (CTR in this case) of the campaign for those sample impressions. Once these CPC based campaigns have enough impressions data then the ad server will use this eCPM value to compare with rest of the campaigns to choose the campaigns with highest eCPM/CPM campaign. 3. Similar to CPC based campaigns publisher might also have some ad network based campaigns, for this case ad server either uses eCPM value specified by the publisher or if it's in auto optimization mode then ad server will try to fetch past data for the ad networks from their respective reporting API on maximum possible frequency to calculate predictive eCPM value based on the recent past data. If the ad network has zero impressions in the past then ad sever will select this ad network/campaign for certain number of impressions so that it can collect enough number of impressions to calculate a predictive eCPM value before it can start comparing this value with the rest of the campaigns. AdsNative constantly revises it's algorithms to come with the most accurate possible measure of predictive eCPM and number of sample impressions it has to dedicate to come with this number. Essentially, with all these 4 phases the ad server will select one single ad to deliver by respective all the criteria selected by the campaign owner and at the same time trying to maximize the revenue for the publishers.