<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Find Out More About: Custom Bidding | Data Studio</title>
	<atom:link href="https://www.datastudio.ca/category/custom-bidding/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.datastudio.ca/category/custom-bidding/</link>
	<description>AI and Analytics Tips, Techniques and Tutorials</description>
	<lastBuildDate>Thu, 12 Aug 2021 18:45:34 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.3</generator>

<image>
	<url>https://www.datastudio.ca/wp-content/uploads/2020/01/cropped-Logo-80x80.png</url>
	<title>Find Out More About: Custom Bidding | Data Studio</title>
	<link>https://www.datastudio.ca/category/custom-bidding/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>The Ultimate Guide to Custom Bidding in Display and Video 360 (DV360)</title>
		<link>https://www.datastudio.ca/custom-bidding/the-ultimate-guide-to-custom-bidding-in-display-and-video-360-dv360/</link>
					<comments>https://www.datastudio.ca/custom-bidding/the-ultimate-guide-to-custom-bidding-in-display-and-video-360-dv360/#comments</comments>
		
		<dc:creator><![CDATA[Lachezar Arabadzhiev]]></dc:creator>
		<pubDate>Mon, 22 Mar 2021 00:08:59 +0000</pubDate>
				<category><![CDATA[Custom Bidding]]></category>
		<guid isPermaLink="false">https://datastudio.ca/?p=1598</guid>

					<description><![CDATA[<p>I have been working with the DV360 Custom Bidding product since 2019. Back then, it was just a&#8230;</p>
<p>The post <a href="https://www.datastudio.ca/custom-bidding/the-ultimate-guide-to-custom-bidding-in-display-and-video-360-dv360/">The Ultimate Guide to Custom Bidding in Display and Video 360 (DV360)</a> appeared first on <a href="https://www.datastudio.ca">Data Studio</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>I have been working with the DV360 Custom Bidding product since 2019. Back then, it was just a beta, but in recent days, the product has grown immensely. When I started reading about the concept of custom bidding, it was fascinating to see what a game changer this product is for the programmatic community. The ability to build your custom algorithm is a huge opportunity to create a better connection between your campaign objectives and business goals!</p>



<p>This will be an extensive post, so brace yourself! Depending on your level of expertise with the DV360 Custom Bidding product, you can decide which section you want to spend most time on. There is some technical documentation out there, but I have not seen anything extensive or practical. Therefore, I decided to put something (hopefully useful) together. </p>



<h2 id="summary" class="wp-block-heading">Summary</h2>



<ol class="wp-block-list"><li><a href="https://datastudio.ca/custom-bidding/the-ultimate-guide-to-custom-bidding-in-display-and-video-360-dv360/#what">What is Custom Bidding?</a></li><li><a href="https://datastudio.ca/custom-bidding/the-ultimate-guide-to-custom-bidding-in-display-and-video-360-dv360/#work">How does Custom Bidding work?</a></li><li><a href="https://datastudio.ca/custom-bidding/the-ultimate-guide-to-custom-bidding-in-display-and-video-360-dv360/#functions">What are the main aggregate functions and script structure?</a></li><li><a href="https://datastudio.ca/custom-bidding/the-ultimate-guide-to-custom-bidding-in-display-and-video-360-dv360/#cases">Practical use cases and script templates (with real examples)</a><ol><li><a href="https://datastudio.ca/custom-bidding/the-ultimate-guide-to-custom-bidding-in-display-and-video-360-dv360/#floodlight">Weighted Conversions (Floodlights)</a></li><li><a href="https://datastudio.ca/custom-bidding/the-ultimate-guide-to-custom-bidding-in-display-and-video-360-dv360/#ga360">Weighted Conversions (Google Analytics 360 Goals)</a></li><li><a href="https://datastudio.ca/custom-bidding/the-ultimate-guide-to-custom-bidding-in-display-and-video-360-dv360/#customv">Custom Floodlight Variables</a></li><li><a href="https://datastudio.ca/custom-bidding/the-ultimate-guide-to-custom-bidding-in-display-and-video-360-dv360/#revenue">Sales Floodlight Revenue</a></li></ol></li><li><a href="https://datastudio.ca/custom-bidding/the-ultimate-guide-to-custom-bidding-in-display-and-video-360-dv360/#campaign">How to create an algorithm and assign a script to campaign inside DV360?</a></li><li><a href="https://datastudio.ca/custom-bidding/the-ultimate-guide-to-custom-bidding-in-display-and-video-360-dv360/#experiment">What is the best way to setup a DV360 Experiment to test your Custom Bidding algorithm?</a></li><li><a href="https://datastudio.ca/custom-bidding/the-ultimate-guide-to-custom-bidding-in-display-and-video-360-dv360/#measure">How to correctly measure and report on your Custom Bidding algorithm&#8217;s success?</a></li><li><a href="https://datastudio.ca/custom-bidding/the-ultimate-guide-to-custom-bidding-in-display-and-video-360-dv360/#work">Work with Lachezar (Lacho)</a></li></ol>



<h2 class="wp-block-heading" id="what"><span id="what-is-custom-bidding">What is Custom Bidding?</span></h2>



<p>Custom Bidding is an outcome-based buying feature in DV360 that allows an advertiser to write a custom script that defines how much an impression is worth based on a specific criteria. You are probably familiar with the standard bidding strategies in DV360 (eg. &#8220;Maximize Clicks”, “Maximize Conversions” and etc.). They are preset algorithms created by Google, which are programmed to bid higher for impressions that are more likely to bring you clicks, conversions or viewable impressions.</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="576" src="https://datastudio.ca/wp-content/uploads/2021/03/Data-Studio-Website-Thumbnails-1-1024x576.png" alt="bidding strategies in dv360" class="wp-image-1821" srcset="https://www.datastudio.ca/wp-content/uploads/2021/03/Data-Studio-Website-Thumbnails-1-1024x576.png 1024w, https://www.datastudio.ca/wp-content/uploads/2021/03/Data-Studio-Website-Thumbnails-1-300x169.png 300w, https://www.datastudio.ca/wp-content/uploads/2021/03/Data-Studio-Website-Thumbnails-1-768x432.png 768w, https://www.datastudio.ca/wp-content/uploads/2021/03/Data-Studio-Website-Thumbnails-1-380x214.png 380w, https://www.datastudio.ca/wp-content/uploads/2021/03/Data-Studio-Website-Thumbnails-1-800x450.png 800w, https://www.datastudio.ca/wp-content/uploads/2021/03/Data-Studio-Website-Thumbnails-1-760x428.png 760w, https://www.datastudio.ca/wp-content/uploads/2021/03/Data-Studio-Website-Thumbnails-1-600x338.png 600w, https://www.datastudio.ca/wp-content/uploads/2021/03/Data-Studio-Website-Thumbnails-1.png 1160w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>With custom bidding however, you can go beyond a single action and create a multi-layered bid. For example, you can assign different weight to each conversion in your funnel or bid differently based on a value received in a custom variable or google analytics goal. In other words, you can fine-tune and supercharge your bidding strategy to the smallest detail! Hence, achieving the highest ROAS possible and bidding closer to your actual business goal.</p>



<h2 class="wp-block-heading" id="work"><span id="how-does-custom-bidding-work">How does Custom Bidding work?</span></h2>



<p>The magic behind custom bidding is a combination between your own insights about your business and Google&#8217;s machine learning algorithm that uses 40+ signals to evaluate an impression. Of course, there are three key steps that outline the entire process (don&#8217;t worry we are going to break each one down later):</p>



<ol class="wp-block-list"><li>Firstly, make sure you align your campaign goal with your business objective. For example, if you wanted to optimize for a specific action on your website (eg. the most expensive tier of your service offering), but did not have enough volume and had to choose an upper funnel proxy metric, custom bidding solves for that. Hence, deciding on a KPI, do not limit yourself because of conversion volume or a single touch-point. Think about your business.</li><li><a href="https://datastudio.ca/custom-bidding/how-to-create-a-custom-bidding-script-in-display-and-video-360-dv360/" target="_blank" rel="noreferrer noopener">Create an algorithm and assign a script to it in DV360</a>. The script will contain all of your rules and conditions that would essentially tell DV360 how much an impression is worth to you. </li><li>Once the algorithm is activated, DV360 begins scoring the impressions based on your script. The learning phase can last a few days and when the algorithm is ready, you can assign it as a bidding strategy to your campaign. Bear in mind, the custom bidding algorithms require a 30 day window of data.</li></ol>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="576" src="https://datastudio.ca/wp-content/uploads/2021/03/custom-bidding-in-dv360-mechanics-1024x576.png" alt="the entire custom bidding process in dv360" class="wp-image-1792" srcset="https://www.datastudio.ca/wp-content/uploads/2021/03/custom-bidding-in-dv360-mechanics-1024x576.png 1024w, https://www.datastudio.ca/wp-content/uploads/2021/03/custom-bidding-in-dv360-mechanics-300x169.png 300w, https://www.datastudio.ca/wp-content/uploads/2021/03/custom-bidding-in-dv360-mechanics-768x432.png 768w, https://www.datastudio.ca/wp-content/uploads/2021/03/custom-bidding-in-dv360-mechanics-380x214.png 380w, https://www.datastudio.ca/wp-content/uploads/2021/03/custom-bidding-in-dv360-mechanics-800x450.png 800w, https://www.datastudio.ca/wp-content/uploads/2021/03/custom-bidding-in-dv360-mechanics-760x428.png 760w, https://www.datastudio.ca/wp-content/uploads/2021/03/custom-bidding-in-dv360-mechanics-600x338.png 600w, https://www.datastudio.ca/wp-content/uploads/2021/03/custom-bidding-in-dv360-mechanics.png 1160w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading" id="functions"><span id="what-are-the-main-aggregate-functions-and-script-structure">What are the main aggregate functions and script structure?</span></h2>



<p>Before diving into the practical examples, you would notice that there are a few functions that repeat quite often. There are three core functions that are at the basis of most custom bidding scripts (unless you are doing custom variables):</p>



<ul class="wp-block-list"><li><strong><code>sum_aggregate</code>&nbsp;</strong>&#8211; depending on how many criteria you have, this function will sum the scores up, if they are all return true.</li><li><strong><code>max_aggregate</code>&nbsp;</strong>&#8211;&nbsp;in this scenario, the function will return true only for the criteria that had the highest score or assigned weight.</li><li><code><strong>first_match_aggregate</strong></code>&nbsp;&#8211;&nbsp;this is a less common function, but returns the assigned value for the first criteria in the array that returns true.</li></ul>



<p>The general structure of a script also looks something like this:</p>



<pre class="wp-block-code"><code>return aggregate_function(&#91;
 (&#91;criteria_a, criteria_b], score), 

<strong>#you have to select what criteria is true and assign a score to it</strong>.

 (&#91;criteria_a], score) 

<strong>#you repeat the same for your second criteria and assign it a different score. This will allow you to provide context for your algorithm on the range of difference between criteria 1 and 2</strong>.

])</code></pre>



<h2 class="wp-block-heading" id="cases"><span id="practical-use-cases-and-script-templates-with-real-examples">Practical use cases and script templates (with real examples)</span></h2>



<p>In the next few sub-section, we are going to explore the different type of algorithms you can have within custom bidding. I have tried my best to translate the technical documentation available into a more practical guide with real examples.</p>



<h3 class="wp-block-heading" id="floodlight"><span id="weighted-conversions-floodlights">Weighted Conversions (Floodlights)</span></h3>



<p>One of the powerful use cases of the custom bidding feature is called &#8220;weighted conversions&#8221;, which allows an advertiser to optimize towards different conversion activities. Furthermore, you can split a conversion between post-click and post-view, and assign different weights to each one. Let&#8217;s put this into practice.</p>



<p>Assume that you are a CPG company that offers product samples on your website. In order for the user to get a sample, you need to fill out a form that has three steps, &#8220;Start&#8221;, &#8220;Complete&#8221; and &#8220;Approved&#8221; (if this is a new user, who hasn&#8217;t tried before). Plus, your research team has shared an insights with you that all users that came from a post-click conversion bought your product immediately after. Whereas, the user from a post-view conversion received the sample, but rarely bought the actual product. </p>



<p>The first step is splitting the conversion into &#8220;click&#8221; and &#8220;non click&#8221; (post-view).  You can replace <strong>weight_1</strong> and <strong>weight_2</strong> by potentially putting higher emphasis on the &#8220;click&#8221; conversion.</p>



<pre class="wp-block-code"><code>return max_aggregate(&#91;

    (&#91;click, total_conversion_count(Floodlight_ID_1, model_id)&gt;0], weight_1),
    (&#91;not click, total_conversion_count(Floodlight_ID_1, model_id)&gt;0], weight_2),

])</code></pre>



<p>Building on that, it is important to use the <strong>max_aggragate</strong> function, so the algorithm can score only the conversion with the highest score. Why? If you have any type of funnel-like application, the &#8220;Approved&#8221; user is also a &#8220;Start&#8221; and &#8220;Complete&#8221;, so you want to make the distinction for Google. This is why custom bidding is so powerful!</p>



<pre class="wp-block-code"><code>return max_aggregate(&#91;

    (&#91;click, total_conversion_count(Floodlight_ID_1, model_id)&gt;0], 4),
    (&#91;not click, total_conversion_count(Floodlight_ID_1, model_id)&gt;0], 2),

    (&#91;click, total_conversion_count(Floodlight_ID_2, model_id)&gt;0], 12),
    (&#91;not click, total_conversion_count(Floodlight_ID_2, model_id)&gt;0], 6),

    (&#91;click, total_conversion_count(Floodlight_ID_3, model_id)&gt;0], 36),
    (&#91;not click, total_conversion_count(Floodlight_ID_3, model_id)&gt;0], 18)
])</code></pre>



<p>As a side note, you can set <strong>model_id</strong> to 0 for the time being. Later on we will explore why.</p>



<h3 class="wp-block-heading" id="ga360"><span id="weighted-conversions-google-analytics-360-goals">Weighted Conversions (Google Analytics 360 Goals)</span></h3>



<p>Optimizing against Google Analytics goals in DV360 has been a highly anticipated feature for a long time, now that is a reality. Even thought the feature came out in 2020, I don&#8217;t think it has gained the popularity it deserves. To me, this is a big deal <img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<p><strong>Prerequisite: </strong>In order for this to work, you would need to link your Google Analytics 360 account to an active Display and Video 360 advertiser. <a href="https://support.google.com/analytics/answer/6318719" target="_blank" rel="noreferrer noopener">This article</a> shows exactly how that is done.</p>



<p>For those of you who want to start off easy, you only need to write a single line of code to optimize against a goal. This can be page duration, destination, event actions and pages/screens per session. The only information you would need is the particular View and Goal IDs.</p>



<pre class="wp-block-code"><code>return has_ga_goal(GA View ID, GA Goal ID)</code></pre>



<p>If <strong>has_ga_goal(GA View ID, GA Goal ID)</strong> returns true, it will return 1. If it is false, it will return 0. It is as simple as that and works in an identical fashion to the single floodlight optimization. </p>



<p>Now, let&#8217;s imagine you are a car dealership and the users who land on your website can complete one of the following key actions:</p>



<ul class="wp-block-list"><li>Submit address in branch locator</li><li>Use the &#8220;Build &amp; Price&#8221; tool to pick and customize a vehicle.</li><li>Book a test drive</li></ul>



<p>All of these actions are tagged with a goal, but also indicate different stage of the customer journey. For example, if a user wants to &#8220;Book a test drive&#8221;, then he/she is probably super close to buying a car. On the other hand, if the same user completes the &#8220;Build &amp; Price&#8221; tool then he/she is still in the research phase. Needless to say, these actions have different weights in the customer journey. This is where you can optimize for a combination of goals and assign different weights, as per the below script.</p>



<pre class="wp-block-code"><code>return sum aggregate(&#91;

        (&#91;has_ga_goal(GA View ID, GA Goal ID)], ga_goals_count(GA View ID, GA Goal ID)),

        (&#91;has_ga_goal(GA View ID, GA Goal ID)], ga_goals_count(GA View ID, GA Goal ID)*5)

        (&#91;has_ga_goal(GA View ID, GA Goal ID)], ga_goals_count(GA View ID, GA Goal ID)*10)

])</code></pre>



<p>And last but not least, the cousin of the &#8220;custom variable&#8221;, the goal value. Essentially, the script below optimizes for ROAS. For example, you have an eCommerce website and want to optimize for those customers who have spend more than $1000 dollars, as that perhaps is an indication that they are high value customers. In this case, the script will optimize for those users and return 0 (ignore) the ones that for example have spend only $50.</p>



<pre class="wp-block-code"><code>if ga_goals_count(GA View ID, GA Goal ID)&gt;1000:

 return ga_goals_total_value(GA View ID, GA Goal ID)

else:

 return 0</code></pre>



<h3 class="wp-block-heading" id="customv"><span id="custom-floodlight-variables">Custom Floodlight Variables</span></h3>



<p>The custom variable in DV360/CM360, allows an advertiser to pull additional information when a user converts. Mostly commonly, custom variables are used on confirmation pages of travel companies and airlines. This allows them to pass all the valuable data related to a booking (eg. seat type, price, destination and etc.). </p>



<p>However, for the script below, let&#8217;s imagine a different scenario. You are a SaaS company that sells business packages. You have a &#8220;Basic&#8221;, &#8220;Medium&#8221;, &#8220;Elite&#8221; and a &#8220;Free&#8221; version. In this case, you want to put more weight on an impression that is coming from an &#8220;Elite&#8221; package, as that is your most expensive one. For instance, if you assign a 1 to &#8220;Basic&#8221; and 10 to &#8220;Medium&#8221;, then you are essentially saying, Medium is 10 times more valuable to me than &#8220;Basic&#8221;. </p>



<p>You can also, assign &#8220;0&#8221; to &#8220;Free&#8221;, because you don&#8217;t want to score clients who are just going for the free package. Hence, this provides an enormous context for Google to look for those users that are most likely to convert based on the business packages you have and NOT valuing them the same; this is what would happen with a &#8220;Maximize Conversions&#8221; for example, every user will be a conversion and no business package delineation will exist. </p>



<pre class="wp-block-code"><code>_businesspackage = conversion_custom_variable (Floodlight_ID, model_id, u_variable_index)
if _businesspackage == "" or _businesspackage == None:
  return 0
elif _income == "Basic":
  return 1
elif _income == "Medium":
  return 10
elif _income == "Elite":
  return 50
elif _income == "Free":
  return 0
else:
  return 0</code></pre>



<p>In terms of setup, you would need to declare the variable by giving it a name. In our case <strong>_businesspackage</strong>, then tell Google that is a custom variable by using the function <strong>conversion_custom_variable</strong>. From there, you would need the following:</p>



<ul class="wp-block-list"><li><strong>Floodlight_ID</strong> &#8211; the floodlight is from CM</li><li><strong>model_id</strong> &#8211; this is your attribution model, if you have setup something custom. If not, then you can leave is to the default &#8220;0&#8221;</li><li><strong>u_variable_index</strong> &#8211; this will be the custom variable id in CM</li></ul>



<h3 class="wp-block-heading" id="revenue"><span id="sales-floodlight-revenue">Sales Floodlight Revenue</span></h3>



<p>Like the Google Analytics goal value, the sales floodlight revenue is based on the &#8220;Floodlight Sales tag&#8221; and can help you optimize against a transaction value. I am not going to spend too much time on it, but the sample script will look like this:</p>



<pre class="wp-block-code"><code>return (total_conversion_value(​CM_activity_id​, ​model_id​))</code></pre>



<h2 class="wp-block-heading" id="campaign"><span id="how-to-create-an-algorithm-and-activate-a-campaign-with-custom-bidding-inside-dv360">How to create an algorithm and activate a campaign with custom bidding inside DV360? </span></h2>



<p>In my previous article, <a href="https://datastudio.ca/custom-bidding/how-to-create-a-custom-bidding-script-in-display-and-video-360-dv360/" target="_blank" rel="noreferrer noopener">How to create a Custom Bidding script in Display and Video 360 (DV360)</a>, I covered the technical script building process in detail, so you can take a look at that. The walk-through touches on the script validator, model training and custom bidding limitations. In this section, I want to focus on activating the custom bidding algorithm within a campaign. Here are the highlights:</p>



<ul class="wp-block-list"><li>Once your script is ready and trained, you can navigate to the DV360 advertiser where you would want to run it. Custom bidding can be used at an insertion order or line item level. If you are running custom bidding for the first time, we will explore how to setup a fair test to evaluate performance accurately.</li><li>When you select your algorithm, you can pick either:<ul><li><strong>&#8220;while prioritizing spending my full budget (recommended)&#8221;</strong>, which essentially ensures that you spend your daily budget and bid as per the script assigned.</li><li><strong>&#8220;while prioritizing hitting a target value cost&#8221;</strong>, which is similar to a Target CPA. Once you see what your desired impression custom value is and run a few algorithms, you can use this option.</li></ul></li><li>Avoid making any changes once you have launched the custom bidding algorithm, as that might affect the learning phase negatively.</li></ul>



<p>Below is a quick snip of what the algorithm selection looks like in DV360.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="744" height="460" src="https://datastudio.ca/wp-content/uploads/2021/03/algorithm-selection-in-dv360.jpg" alt="" class="wp-image-1849" srcset="https://www.datastudio.ca/wp-content/uploads/2021/03/algorithm-selection-in-dv360.jpg 744w, https://www.datastudio.ca/wp-content/uploads/2021/03/algorithm-selection-in-dv360-300x185.png 300w, https://www.datastudio.ca/wp-content/uploads/2021/03/algorithm-selection-in-dv360-380x235.png 380w, https://www.datastudio.ca/wp-content/uploads/2021/03/algorithm-selection-in-dv360-600x371.png 600w" sizes="(max-width: 744px) 100vw, 744px" /></figure>



<p><strong>A huge callout!</strong> The first week of performance would most likely be poor as that is the time the algorithm is learning. You should see drastic improvements in week 2 and 3. </p>



<h2 class="wp-block-heading" id="experiment"><span id="what-is-the-best-way-to-setup-a-dv360-experiment-to-test-your-custom-bidding-algorithm">What is the best way to setup a DV360 Experiment to test your Custom Bidding algorithm?</span></h2>



<p>If you are running custom bidding for the first time or you are trying to compare different types of algorithms, creating a <a href="https://support.google.com/displayvideo/answer/9040669?hl=en" target="_blank" rel="noreferrer noopener">DV360 Experiment</a> is a must. A controlled experiment allows you to split your cookies (exposed vs control users) into mutually exclusive groups, which prevents test contamination. Here is how this works:</p>



<p>Once you expand the &#8220;Resources&#8221; menu in your DV360 console (make sure you select an advertiser first), you will be able to see &#8220;Experiments and Lift&#8221;. Proceed to creating a new experiment and select &#8220;Cross Exchange&#8221;, this is the option for Display. If you are running custom bidding with partner video, then you would have to select &#8220;YouTube &amp; partner&#8221;.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="701" height="658" src="https://datastudio.ca/wp-content/uploads/2021/03/dv360-experiements-setup.png" alt="experiments and lift in dv360" class="wp-image-1768" srcset="https://www.datastudio.ca/wp-content/uploads/2021/03/dv360-experiements-setup.png 701w, https://www.datastudio.ca/wp-content/uploads/2021/03/dv360-experiements-setup-300x282.png 300w, https://www.datastudio.ca/wp-content/uploads/2021/03/dv360-experiements-setup-380x357.png 380w, https://www.datastudio.ca/wp-content/uploads/2021/03/dv360-experiements-setup-600x563.png 600w" sizes="auto, (max-width: 701px) 100vw, 701px" /></figure>



<p>The first part of the setup is fairly straightforward, but there are a few tricks. You would have to pick whether you are going to compare &#8220;Line Item vs Line Item&#8221; or &#8220;Insertion Order vs Insertion Order&#8221;. Generally, it does not matter which option you pick, but the most important aspect is to test only one variable at a time. Therefore, you would need to have the budget, creative, duration, targeting exactly the same between the control and exposed groups. </p>



<p>When it comes to the research goal, you would have to select &#8220;Total Custom Impression Value&#8221;. The custom bidding algorithm optimizes for ROAS as defined by your <strong>Impression Custom Value</strong> /<br><strong>Cost</strong>. If your exposed’s <strong>Impression Custom Value / Cost </strong>exceeded that of your control’s during the experiment, custom bidding has successfully outperformed your control bid strategy.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="479" src="https://datastudio.ca/wp-content/uploads/2021/03/162276878_236204411545492_8564979480079583135_n-1024x479.png" alt="dv360 experiment setup" class="wp-image-1773" srcset="https://www.datastudio.ca/wp-content/uploads/2021/03/162276878_236204411545492_8564979480079583135_n-1024x479.png 1024w, https://www.datastudio.ca/wp-content/uploads/2021/03/162276878_236204411545492_8564979480079583135_n-300x140.png 300w, https://www.datastudio.ca/wp-content/uploads/2021/03/162276878_236204411545492_8564979480079583135_n-768x359.png 768w, https://www.datastudio.ca/wp-content/uploads/2021/03/162276878_236204411545492_8564979480079583135_n-380x178.png 380w, https://www.datastudio.ca/wp-content/uploads/2021/03/162276878_236204411545492_8564979480079583135_n-800x374.png 800w, https://www.datastudio.ca/wp-content/uploads/2021/03/162276878_236204411545492_8564979480079583135_n-1160x543.png 1160w, https://www.datastudio.ca/wp-content/uploads/2021/03/162276878_236204411545492_8564979480079583135_n-760x355.png 760w, https://www.datastudio.ca/wp-content/uploads/2021/03/162276878_236204411545492_8564979480079583135_n-600x281.png 600w, https://www.datastudio.ca/wp-content/uploads/2021/03/162276878_236204411545492_8564979480079583135_n.jpg 1364w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Lastly, whether you have chosen IOs or LIs, ensure you name your two arms of the experiment as something recognizable &#8211; Control and Exposed are standard. The other super important aspect is to have the audience split proportionally between each arm. If you are testing more than 2 algorithms, then you might consider splitting 33/33/33.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="339" src="https://datastudio.ca/wp-content/uploads/2021/03/162505124_862566504592251_8158713592490776287_n-1024x339.png" alt="setup for audience split in dv360 experiments" class="wp-image-1774" srcset="https://www.datastudio.ca/wp-content/uploads/2021/03/162505124_862566504592251_8158713592490776287_n-1024x339.png 1024w, https://www.datastudio.ca/wp-content/uploads/2021/03/162505124_862566504592251_8158713592490776287_n-300x99.png 300w, https://www.datastudio.ca/wp-content/uploads/2021/03/162505124_862566504592251_8158713592490776287_n-768x255.png 768w, https://www.datastudio.ca/wp-content/uploads/2021/03/162505124_862566504592251_8158713592490776287_n-380x126.png 380w, https://www.datastudio.ca/wp-content/uploads/2021/03/162505124_862566504592251_8158713592490776287_n-800x265.png 800w, https://www.datastudio.ca/wp-content/uploads/2021/03/162505124_862566504592251_8158713592490776287_n-1160x384.png 1160w, https://www.datastudio.ca/wp-content/uploads/2021/03/162505124_862566504592251_8158713592490776287_n-760x252.png 760w, https://www.datastudio.ca/wp-content/uploads/2021/03/162505124_862566504592251_8158713592490776287_n-600x199.png 600w, https://www.datastudio.ca/wp-content/uploads/2021/03/162505124_862566504592251_8158713592490776287_n.png 1370w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading" id="measure"><span id="how-to-correctly-measure-and-report-on-your-custom-bidding-algorithms-success">How to correctly measure and report on your Custom Bidding algorithm&#8217;s success?</span></h2>



<p>The measurement for custom bidding is a bit different than what you you would normally do for a regular campaign. You can find the report template by navigating to <strong>Insights </strong>-&gt; <strong>Reports</strong> -&gt; <strong>Offline Reporting</strong> -&gt; <strong>New Offline Report</strong> -&gt; <strong>Report template (Custom Bidding)</strong></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="840" height="894" src="https://datastudio.ca/wp-content/uploads/2021/03/custom-bidding-reporting-1.png" alt="custom bidding highlighted in a red box in the reporting interface in dv360" class="wp-image-1783" srcset="https://www.datastudio.ca/wp-content/uploads/2021/03/custom-bidding-reporting-1.png 840w, https://www.datastudio.ca/wp-content/uploads/2021/03/custom-bidding-reporting-1-282x300.png 282w, https://www.datastudio.ca/wp-content/uploads/2021/03/custom-bidding-reporting-1-768x817.png 768w, https://www.datastudio.ca/wp-content/uploads/2021/03/custom-bidding-reporting-1-380x404.png 380w, https://www.datastudio.ca/wp-content/uploads/2021/03/custom-bidding-reporting-1-800x851.png 800w, https://www.datastudio.ca/wp-content/uploads/2021/03/custom-bidding-reporting-1-760x809.png 760w, https://www.datastudio.ca/wp-content/uploads/2021/03/custom-bidding-reporting-1-564x600.png 564w" sizes="auto, (max-width: 840px) 100vw, 840px" /></figure>



<p>Once you select the custom bidding reporting template, you would have several brand new metrics. Here are the ones that matter the most in my opinion:</p>



<ul class="wp-block-list"><li><strong>Impressions with custom value</strong><ul><li>These are impressions that are scored by your script; this includes impression that scored &#8220;0&#8221; as well. If this number is too low, this is an indication that your script might not have enough historical data available.</li></ul></li><li><strong>Impressions with positive custom value</strong><ul><li>This metric include all impressions scored with a &gt;0 value. This is the cleanest representation of the activity in your script rules. </li></ul></li><li><strong>Total impression custom value</strong><ul><li>This is the sum of all impression custom values</li></ul></li><li><strong>Impression Custom Value / Cost</strong><ul><li>This is the formula <em>(Total impression custom value) / (Estimated total cost)</em>. This is the key metric that determines how successful your custom bidding algorithm is going to be. The higher the value the better.</li></ul></li></ul>



<h2 id="final-thoughts" class="wp-block-heading"><strong>Final Thoughts</strong></h2>



<p>The media buying space is evolving and as such, techniques like automated bidding are going to become even more widely used. Indeed, DV360 and the Google Marketing Platform (GMP) are pioneers in the space. However, it is expected that other ad servings and demand-side platforms (DPSs) such as TradeDesk, StackAdapt, TubeMogul and App Nexus are going to catch up. All in all, media buying, in particular, display advertising space is entering an interesting stage.</p>



<hr class="wp-block-separator has-text-color has-background has-black-background-color has-black-color is-style-wide"/>



<h2 class="wp-block-heading" id="work"><span id="work-with-lachezar">Work with Lachezar</span></h2>



<p>I hope this was helpful! If you have any questions, feel free to DM me on&nbsp;<a href="https://www.linkedin.com/in/larabadzhiev/" target="_blank" rel="noreferrer noopener">LinkedIn</a>&nbsp;or&nbsp;<a href="https://datastudio.ca/#colophon">subscribe to my newsletter</a>&nbsp;for more updates.</p>
<p>The post <a href="https://www.datastudio.ca/custom-bidding/the-ultimate-guide-to-custom-bidding-in-display-and-video-360-dv360/">The Ultimate Guide to Custom Bidding in Display and Video 360 (DV360)</a> appeared first on <a href="https://www.datastudio.ca">Data Studio</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.datastudio.ca/custom-bidding/the-ultimate-guide-to-custom-bidding-in-display-and-video-360-dv360/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>How to create a Custom Bidding script in Display and Video 360 (DV360)</title>
		<link>https://www.datastudio.ca/custom-bidding/how-to-create-a-custom-bidding-script-in-display-and-video-360-dv360/</link>
					<comments>https://www.datastudio.ca/custom-bidding/how-to-create-a-custom-bidding-script-in-display-and-video-360-dv360/#comments</comments>
		
		<dc:creator><![CDATA[Lachezar Arabadzhiev]]></dc:creator>
		<pubDate>Mon, 30 Nov 2020 12:32:31 +0000</pubDate>
				<category><![CDATA[Custom Bidding]]></category>
		<guid isPermaLink="false">https://datastudio.ca/?p=1612</guid>

					<description><![CDATA[<p>As the programmatic media space is constantly evolving, advertisers are always on the lookout for new ways to&#8230;</p>
<p>The post <a href="https://www.datastudio.ca/custom-bidding/how-to-create-a-custom-bidding-script-in-display-and-video-360-dv360/">How to create a Custom Bidding script in Display and Video 360 (DV360)</a> appeared first on <a href="https://www.datastudio.ca">Data Studio</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>As the programmatic media space is constantly evolving, advertisers are always on the lookout for new ways to enhance their bidding strategies and optimize their media budgets. One of these new innovative ways is <em>Custom Bidding</em>, an outcome-based buying functionality available in Display and Video 360 (DV360). In this quick tutorial &#8211; which I hope will turn into a series &#8211; I want to tell you a bit more about custom bidding and teach you how to write a custom bidding script in-console. Let&#8217;s get started!</p>



<h2 id="what-is-custom-bidding" class="wp-block-heading">What is custom bidding?</h2>



<p>Custom Bidding is an outcome-based buying functionality in DV360 that allows an advertiser to write a custom script that defines how much an impression is worth based on a specific criteria. Let me un-pack this, as it can be quite confusing. Normally, you would select one of the standard bidding strategies &#8211; &#8220;Maximize Clicks&#8221; or &#8220;Maximize Conversions&#8221;. In that case, DV360 will bid higher for impressions that are more likely to bring you clicks and conversions. With custom bidding however, you can go beyond a single conversion  and create a multi-layered bid. For example, you can assign different weight to each conversion in your funnel or bid differently based on a value received in a custom variable. In other words, you can fine-tune and supercharge your bidding strategy to the smallest detail!</p>



<h2 id="what-are-some-real-life-use-cases-and-examples" class="wp-block-heading">What are some real-life use cases and examples?</h2>



<ul class="wp-block-list"><li><strong>Weighted Floodlight Conversions.</strong> The most common case here would be a long application funnel. Imagine you have a form that takes 3-4 steps on different pages before it is completed. You have floodlights on each page, but you do not have enough conversions further down the funnel, so you cannot optimize against your &#8220;application complete&#8221;. With custom bidding, you can assign each step of the application a different weight and optimize against all of these floodlights simultaneously. No minimum thresholds needed. You are just adding context, so the Google algorithm knows which step you value the most. </li><li><strong>Custom Floodlight Variables</strong>. If you are a car manufacturer and want to optimize differently for each car model selected (maybe their cost of product varies) in the online build &amp; price tool, this is your best option. You can pass the car models into a custom variable and then assign it different weights in the custom bidding script. </li><li><strong>Floodlight Sales Revenue</strong>. If you are eCommerce CPG company that sells products online, you can bid&nbsp;against the&nbsp;revenue parameter being tracked by a Floodlight Sales tag.</li><li><strong>Google Analytics 360 Goals.</strong>&nbsp;This was just a dream a year ago, but now it is a reality. You can connect GA360 to DV360 and optimize your campaign against a GA Goal!!!</li></ul>



<h2 id="how-to-create-and-test-your-custom-bidding-script-in-dv360" class="wp-block-heading">How to create and test your custom bidding script in DV360?</h2>


<div class="saswp-how-to-block-section"><div class="saswp-how-to-block-steps"><p class="saswp-how-to-total-time"><span class="saswp-how-to-duration-time-text"><strong>Time Needed :</strong> </span>15 minutes</p><p>In this tutorial, you are going to learn the process of how to create a custom bidding algorithm, assign a valid script and then test your entire build. </p><ol><li><h1 id="login-to-your-dv360-account-navigate-to-the-partner-little-house-icon-then-expand-the-resources-menu-and-click-on-custom-bidding" class="saswp-how-to-step-name ">Login to your DV360 account. Navigate to the &#8220;Partner&#8221; (little house icon), then expand the &#8220;Resources&#8221; menu and click on &#8220;Custom Bidding&#8221;.</h1><p class="saswp-how-to-step-text">1.1 The &#8220;Custom Bidding&#8221; panel is on the right side and all your algorithms will be stored there.  You can click on &#8220;New Algorithm&#8221; to create your first one.<img decoding="async" style="width: 820px" src="https://datastudio.ca/wp-content/uploads/2020/11/dv360-custom-bidding-new-algorithm.png" alt="dv360 custom bidding new algorithm"></p></li><li><h1 id="once-the-new-algorithm-window-opens-then-you-will-have-to-specify-a-name-and-select-the-advertisers-this-algorithm-will-be-assigned-to-then-click-cre" class="saswp-how-to-step-name ">Once the &#8220;New Algorithm&#8221; window opens, then you will have to specify a &#8220;Name&#8221; and select the &#8220;Advertisers&#8221; this algorithm will be assigned to. Then click &#8220;Create&#8221;.</h1><p class="saswp-how-to-step-text">It is important to mention that there is a limit of 10 algorithms per advertiser, therefore only select the advertiser that will be using the script. If you run out of algorithm slots, you can always archive old ones. <img decoding="async" style="width: 1126px" src="https://datastudio.ca/wp-content/uploads/2020/11/new-algorithm-setup.png" alt="new algorithm setup in the custom bidding console"></p></li><li><h1 id="when-you-create-the-algorithm-shell-you-will-be-directed-back-to-the-main-custom-bidding-panel-you-will-have-to-click-on-the-algorithm-again" class="saswp-how-to-step-name ">When you create the algorithm shell, you will be directed back to the main  &#8220;Custom Bidding&#8221; panel. You will have to click on the algorithm again. </h1><p class="saswp-how-to-step-text">Here is why! You will see a red warning circle next to your algorithm. This is simply because there is no script assigned that provides the logic for the custom bidding.<img decoding="async" style="width: 1256px" src="https://datastudio.ca/wp-content/uploads/2020/11/custom-bidding-algorithm-warning.jpg" alt="custom bidding algorithm warning"></p></li><li><h1 id="in-the-top-tab-select-script-will-explore-the-rest-of-the-tabs-later-and-click-on-new-script" class="saswp-how-to-step-name ">In the top tab select &#8220;Script&#8221; (will explore the rest of the tabs later) and click on &#8220;New Script&#8221;.</h1><p class="saswp-how-to-step-text">Before you begin your scrip writing process, it is worth mentioning that Custom Bidding is NOT compatible with the following formats: <em>Gmail, YouTube, Twitter, Audio, Tag Guaranteed, or Programmatic Guaranteed inventory.</em><img decoding="async" style="width: 1054px" src="https://datastudio.ca/wp-content/uploads/2020/11/create-a-new-script-in-custom-bidding.png" alt="create a new script in custom bidding"></p></li><li><h1 id="this-is-the-most-important-part-with-some-basic-knowledge-of-python-you-can-write-any-type-script-and-assign-different-weights-to-user-actions-ad-click-conversion-cart-revenue-and-etc-furtherm" class="saswp-how-to-step-name ">This is the most important part! With some basic knowledge of Python, you can write any type script and assign different weights to user actions (ad click, conversion, cart revenue and etc.). Furthermore, the scripts can be validated and tested in real-time!</h1><p class="saswp-how-to-step-text">5.1 When you are writing your script, you can always click on the &#8220;Check Syntax&#8221; button. If you have no errors in your script, you will see a green checkmark with a message <em>&#8220;Syntax verified&#8221;</em>. If there are errors, the validator will share more information with you and point you to the row(s) where the mistake has occurred. <br><br>5.2 You have to select the advertiser which you want to test your script against. <br><br>5.3 This is the sampling method you need to choose in order to test the logic of your script against historical data. there are a few options you can choose:<br><br>&#8211; <strong>All impressions:</strong> This will include all impressions for the advertiser and provide you with an overall expected distribution of impression values.<br>&#8211; <strong>Only impressions with clicks:</strong> If your script involves clicks then you would want to use this option.<br>&#8211; <strong>Only impressions with conversions: </strong>Most common one if you are using weighted conversions or GA goals. This includes all conversion events in your advertiser, and will be based off the default attribution model.<br><br>5.4 Click on &#8220;Test Script&#8221; and you will get a performance summary for a sample of 10,000 impressions obtained in the last 30 days. <br><br>5.5 Once you &#8220;Create&#8221; the script, you might not see it appear immediately in the &#8220;Script&#8221; tab/list. However, that is perfectly normal, it can take up to 20min for the script to load, then all warnings will disappear.<br><img decoding="async" style="width: 1137px" src="https://datastudio.ca/wp-content/uploads/2020/11/writing-the-custom-bidding-script-in-the-validator-with-notations.png" alt="writing the custom bidding script in the validator with notations"></p></li><li><h1 id="you-can-navigate-to-the-summary-tab-where-you-are-going-to-find-all-the-important-diagnostics-about-your-custom-bidding-algorithm" class="saswp-how-to-step-name ">You can navigate to the &#8220;Summary&#8221; tab, where you are going to find all the important diagnostics about your Custom Bidding algorithm.</h1><p class="saswp-how-to-step-text">6.1 Once again, you would have to &#8220;Choose an Advertiser&#8230;&#8221; to see the relevant metrics against it:<br><br>&#8211; <strong>AVG impression value by cost:</strong> When assigned to a campaign, the Custom Bidding algorithm optimizes for ROAS as defined by your Custom Impression Value (the actions in the script) divided by the Cost (your media spend). The higher this value is the better, as this means you are getting more of the actions described in the scrip at a lower cost.<br>&#8211; <strong>Number of impressions with values &gt;0: </strong>These are the impressions that scored positively against your script. For example, if you have given a specific weigh to a conversion in that script and you have 50 conversions from that type, then you will have 50 positively scored impressions. Therefore, make sure you have enough volume of positively scored impressions are Google has two fairly strict data requirements. <br>   -&gt; At least 1,000 positively-scored impressions for an Advertise.<br>   -&gt; At least 50 positively-scored impressions for an individual Line Item (LI)<br><br>6.2 All custom bidding algorithms require prior scored impressions (within the advertiser) to train a model, more specifically 30 days window of data. Therefore, you may have to wait a bit before using your algorithm as a bidding strategy. When ready, the &#8220;Status&#8221; will switch from <strong>Training</strong> to <strong>Ready</strong>.<img decoding="async" style="width: 1518px" src="https://datastudio.ca/wp-content/uploads/2020/11/custom-bidding-execution-summary-in-dv360.png" alt="custom bidding execution summary in dv360"></p></li></ol></div><div class="saswp-how-to-block-tools"><h5 id="tools">Tools</h5><ul><li>In early 2020, Google made the custom bidding functionality available to everyone who has access to DV360.</li></ul></div><div class="saswp-how-to-block-material"><h5 id="materials">Materials</h5><ul><li>Depending on what clients you work with, there are different aggregate models that can be used to weight your end-actions. If you want to run a few sample custom bidding scripts, you can explore my <a href="https://datastudio.ca/custom-bidding/the-ultimate-guide-to-custom-bidding-in-display-and-video-360-dv360/" target="_blank" rel="noreferrer noopener">ultimate guide to custom bidding in DV360</a>.</li></ul></div></div>


<hr class="wp-block-separator has-text-color has-background has-black-background-color has-black-color is-style-wide"/>



<h2 class="wp-block-heading" id="work"><span id="work-with-lachezar">Work with Lachezar</span></h2>



<p>To connect with Lachezar, feel free to DM him on <a href="https://www.linkedin.com/in/larabadzhiev/" target="_blank" rel="noreferrer noopener">LinkedIn</a>. As mentioned, you can also explore the c<a href="https://datastudio.ca/custom-bidding/the-ultimate-guide-to-custom-bidding-in-display-and-video-360-dv360/">omplete guide to DV360 Custom Bidding</a>.</p>
<p>The post <a href="https://www.datastudio.ca/custom-bidding/how-to-create-a-custom-bidding-script-in-display-and-video-360-dv360/">How to create a Custom Bidding script in Display and Video 360 (DV360)</a> appeared first on <a href="https://www.datastudio.ca">Data Studio</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.datastudio.ca/custom-bidding/how-to-create-a-custom-bidding-script-in-display-and-video-360-dv360/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
	</channel>
</rss>
