Open In App

AdTech | A Complete Beginner’s Guide

Last Updated : 04 Dec, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

AdTech, or Advertising Technology, refers to the various tools and platforms used to target, deliver, and optimize digital advertising. Understanding AdTech is essential for Publishers, Adops, Advertisers, Developers, and anyone interested in the digital advertising landscape.

Evolution of Programmatic Ads

Programmatic advertising represents a significant shift in ad buying, moving from traditional manual processes to automated bidding for digital advertising space.

This evolution began with the advent of ad exchanges and real-time bidding (RTB), allowing advertisers to buy ad space in real time, targeting specific audiences more effectively. Over time, programmatic advertising has become more sophisticated with the integration of artificial intelligence and machine learning, enabling even more precise targeting and optimization of ad campaigns.

Components of AdTech

  • Ad Servers: Ad servers are the backbone of digital advertising, responsible for storing and serving ads to digital platforms. When a user visits a website or app, the ad server decides which ad to display based on various factors such as user behavior, ad targeting settings, and advertiser requirements.

    Google Ad Manager, is a prominent ad server in the industry. It allows publishers to manage their ad inventory, serving ads across their websites, mobile apps, and even video content.

  • Demand-Side Platforms (DSPs): DSPs enable advertisers and agencies to buy ad inventory from multiple ad exchanges and SSPs through a single interface. This automates the buying process, making it more efficient and effective by leveraging real-time bidding (RTB) for ad spaces.

    The Trade Desk is a widely used DSP that provides advertisers with advanced targeting options, real-time bidding capabilities, and access to a wide range of ad inventories across multiple channels, including display, video, and social media.

  • Supply-Side Platforms (SSPs): SSPs are used by publishers to manage, optimize, and sell their ad inventory to advertisers on various ad exchanges and networks. SSPs help publishers maximize their ad revenue by enabling them to reach a broader range of potential buyers.

    OpenX is an example of an SSP that offers publishers a platform to manage their ad inventories, connect with DSPs, and optimize their ad revenue through real-time auctions and direct deals.

  • Data Management Platforms (DMPs): DMPs collect, store, and manage data from various sources, including first-party data (from the advertiser’s own channels), second-party data (from partnerships), and third-party data (from external data providers). This data is used to build detailed audience segments for targeted advertising.

    Oracle’s BlueKai is a popular DMP that helps advertisers and publishers aggregate and analyze their data to create detailed audience profiles for more targeted and effective advertising campaigns.

  • Ad Exchanges: Ad exchanges are digital marketplaces where DSPs and SSPs connect to buy and sell ad inventories through automated bidding processes. They facilitate the buying and selling of ad space in real-time, enabling advertisers to purchase ad space that aligns with their targeting criteria and publishers to sell to the highest bidder.

    AppNexus (now part of Xandr, an AT&T company) operates one of the largest independent ad exchanges. It offers a platform where SSPs can offer their inventories to DSPs, enabling real-time transactions and a wide reach for both advertisers and publishers.

What is Prebid?

Prebid is an open-source framework that allows publishers to implement header bidding, where multiple ad exchanges bid on ad inventory simultaneously before calling the ad server and the partner with highest bids get to serve the ads on the website.

Components of Prebid and a Sample Example Code

  • Prebid.js: The core JavaScript library.
  • Adapters: Modules for different SSPs and exchanges.
  • Analytics Plugins: For tracking and optimizing performance.

HTML




<html>
  
    <head>
        <link rel="icon" type="image/png" href="/favicon.png">
        <script async src=
"//www.googletagservices.com/tag/js/gpt.js">
        </script>
        <script async src=
"//cdn.jsdelivr.net/npm/prebid.js@latest/dist/not-for-prod/prebid.js">
        </script>
        <script>
            var div_1_sizes = [
                [300, 250],
                [300, 600]
            ];
            var div_2_sizes = [
                [728, 90],
                [970, 250]
            ];
            var PREBID_TIMEOUT = 1000;
            var FAILSAFE_TIMEOUT = 3000;
  
            var adUnits = [
                {
                    code: '/19968336/header-bid-tag-0',
                    mediaTypes: {
                        banner: {
                            sizes: div_1_sizes
                        }
                    },
                    bids: [{
                        bidder: 'appnexus',
                        params: {
                            placementId: 13144370
                        }
                    }]
                },
                {
                    code: '/19968336/header-bid-tag-1',
                    mediaTypes: {
                        banner: {
                            sizes: div_2_sizes
                        }
                    },
                    bids: [{
                        bidder: 'appnexus',
                        params: {
                            placementId: 13144370
                        }
                    }]
                }
            ];
  
            // ======== DO NOT EDIT BELOW THIS LINE =========== //
            var googletag = googletag || {};
            googletag.cmd = googletag.cmd || [];
            googletag.cmd.push(function() {
                googletag.pubads().disableInitialLoad();
            });
  
            var pbjs = pbjs || {};
            pbjs.que = pbjs.que || [];
  
            pbjs.que.push(function() {
                pbjs.addAdUnits(adUnits);
                pbjs.requestBids({
                    bidsBackHandler: initAdserver,
                    timeout: PREBID_TIMEOUT
                });
            });
  
            function initAdserver() {
                if (pbjs.initAdserverSet) return;
                pbjs.initAdserverSet = true;
                googletag.cmd.push(function() {
                    pbjs.que.push(function() {
                        pbjs.setTargetingForGPTAsync();
                        googletag.pubads().refresh();
                    });
                });
            }
            // in case PBJS doesn't load
            setTimeout(function() {
                initAdserver();
            }, FAILSAFE_TIMEOUT);
  
            googletag.cmd.push(function() {
                googletag.defineSlot('/19968336/header-bid-tag-0', div_1_sizes, 'div-1').addService(googletag.pubads());
                googletag.pubads().enableSingleRequest();
                googletag.enableServices();
            });
            googletag.cmd.push(function() {
                googletag.defineSlot('/19968336/header-bid-tag-1', div_2_sizes, 'div-2').addService(googletag.pubads());
                googletag.pubads().enableSingleRequest();
                googletag.enableServices();
            });
  
        </script>
  
    </head>
  
    <body>
        <h2>Basic Prebid.js Example</h2>
        <h5>Div-1</h5>
        <div id='div-1'>
            <script type='text/javascript'>
                googletag.cmd.push(function() {
                    googletag.display('div-1');
                });
  
            </script>
        </div>
  
        <br>
  
        <h5>Div-2</h5>
        <div id='div-2'>
            <script type='text/javascript'>
                googletag.cmd.push(function() {
                    googletag.display('div-2');
                });
  
            </script>
        </div>
  
    </body>
  
</html>


Output:

Screenshot-from-2023-12-04-11-33-32

The above sample code is very basic implementation of Prebid.js on a page that involved Google Ad Manager as a primary Ad Server. Working of the above code in a brief is added below.

Defining Ad Units

At the heart of the script are the definitions of ad units. An ad unit represents a space on a webpage where an ad can be displayed. In this example, two ad units are defined:

  • div-1: Capable of displaying ads of sizes [300×250] and [300×600].
  • div-2: Designed for ads sized [728×90] and [970×250].

Each ad unit is given a unique ‘code’ (an identifier), and the sizes of ads it can accommodate are specified.

Step 1: Prebid.js Configuration

  • Prebid.js adds the defined ad units to its auction mechanism.
  • It then requests bids from various demand partners (in this case, AppNexus) within a specified timeout period (PREBID_TIMEOUT).

The integration with GAM is where the real-time bidding magic happens:

Step 2: Significance of disableInitialLoad(): It instructs GAM to wait before loading ads, allowing Prebid.js to conduct its auction first.

Step 3: Initialising Ad Server: Once bids are received, or after a failsafe timeout (FAILSAFE_TIMEOUT), the ad server is initialized. Prebid.js sets targeting information based on the auction’s results and then hands control over to GAM.

Finally, the ad slots (div-1 and div-2) on the webpage are linked to the respective ad units in GAM. When the page is loaded, GAM displays the winning ads in these slots.

How Does This Benefit Publishers?

By implementing this setup, publishers can maximize their ad revenue. Prebid.js allows multiple demand sources to bid on the ad inventory simultaneously, ensuring that the highest bid wins the slot. This competition naturally drives up the bid prices, potentially leading to higher revenues than traditional, sequential bidding processes.

Importance of Timeouts

Note the use of timeouts in the script (PREBID_TIMEOUT and FAILSAFE_TIMEOUT). These ensure that the user experience remains smooth. If the auction takes too long, the ad server is called in to display the ads without further delay, striking a balance between revenue optimization and user experience.



Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads