Skip to main content

Programmatic Ads Fundamentals

Learn the core concepts behind programmatic advertising and how automated ad buying works.

What Are Programmatic Ads?

Programmatic advertising is the automated process by which advertising inventory is bought and sold in real time through technology platforms.

Instead of manually negotiating each campaign, ads are assigned through an automatic auction where different advertisers compete to display their creative to a specific user at a specific moment.

The decision on which ad is served depends on multiple variables such as:

  1. User’s geographic location

  2. Device type

  3. Domain where the ad is displayed

  4. Audience segmentation

  5. Available budget

  6. Priority rules configured in the Ad Server

  7. Real-time competition

The result is dynamic: every time an ad is requested, an auction runs in milliseconds.

What is Google Ads, and how is it managed?

It is important to differentiate between two products that are often confused:

  • Google Ads: Platform used by advertisers to create campaigns and buy inventory.

  • Google Ad Manager (GAM): Platform used by publishers (media companies, apps, websites) to manage their advertising inventory.

In the context of Terrific, what matters is Google Ad Manager, since it is the system that determines:

  1. Which ad is served

  2. Under what priority

  3. Under what conditions

  4. Whether there is fill or not

Terrific does not manage advertising campaigns directly; it executes the tag configured by the client in their Ad Manager.

General Types of Ads in Google

Broadly speaking, there are two main categories relevant to our environment:

A) Display (Banners): Served via GPT (Google Publisher Tag). These are graphic ads, images, or interactive HTML creatives.

B) Video (VAST): Served via a VAST tag. These are video-format ads that play within a video player.

What is GPT?

GPT (Google Publisher Tag) is the JavaScript library used to load Display ads (banners) from Google Ad Manager.

It is integrated via a script that defines:

  1. The Ad Unit

  2. Allowed sizes

  3. The container ID (div)

  4. Configurations such as Single Request Architecture

Simplified GPT Script Example

<script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"></script>
<div id="div-gpt-ad-1"></div>
<script>
window.googletag = window.googletag || {cmd: []};
googletag.cmd.push(function() {
googletag.defineSlot(
'/123456/site/placement',
[[300,600],[320,480]],
'div-gpt-ad-1'
).addService(googletag.pubads());
googletag.pubads().enableSingleRequest();
googletag.enableServices();
googletag.display('div-gpt-ad-1');
});
</script>

Key GPT Concepts

  1. Ad Unit: Inventory identifier within GAM.

  2. Slot: Physical space where the ad is rendered.

  3. SRA (Single Request Architecture): Bundles multiple requests into a single call.

  4. Refresh: Allows requesting a new ad in the same slot.

What is VAST?

VAST (Video Ad Serving Template) is a standard that returns an XML containing all necessary information to play a video ad.

A VAST tag is a URL that:

  1. Is executed.

  2. Returns XML.

  3. Contains the video URL and tracking events.

  4. Is interpreted by a compatible player (IMA).

Example VAST Tag

https://pubads.g.doubleclick.net/gampad/ads iu=/123456/site/video&output=vast&...

Important Web Considerations

  1. Autoplay depends on browser policies.

  2. If autoplay with sound is blocked, the ad must start muted.

  3. The IMA tester is not equivalent to a real production environment.

Relevant Parameters for Web

In a Web environment, important VAST parameters typically include:

  1. description_url → Recommended to send the real site URL (encoded).

  2. vpos → Ad position (preroll, midroll, postroll).

  3. vid_d → Expected content duration.

  4. vpmute → Indicates whether it starts muted.

  5. vconp → Indicates continuous content (e.g., social feed).

  6. plcmt → Placement type.

  7. ott_placement → Internal placement classification.

  8. wta → Web Targeting Allowed.

  9. tfcd → Child-directed treatment flag.

  10. npa → Non-Personalized Ads.

VAST: Testing Environments vs. Production

It is important to understand that ad behavior may vary between testing environments and production environments.

What Is IMA (Testing Environment)?

IMA (Interactive Media Ads SDK) is Google’s library used to play VAST ads in web environments.

The IMA Video Suite Inspector (Google’s tester) is a tool designed to technically validate a VAST tag:

  1. That the XML responds correctly

  2. That the video loads properly

  3. That tracking events function as expected

This is a controlled environment and does not replicate all real traffic conditions.

Why Ads May Appear in the Tester but Not in Production

The tester:

  1. Does not always replicate domain restrictions

  2. Does not simulate real targeting conditions

  3. Does not necessarily reflect budget limitations

  4. May not apply the same eligibility rules as the production environment

In production, the Ad Server evaluates:

  1. Real domain

  2. Real device

  3. Real user

  4. User consent

  5. Targeting rules

  6. Remaining campaign budget

Therefore, a VAST tag may return an ad in the tester but fail to serve in real traffic conditions.

Common Restrictions

The most frequent causes of discrepancies between testing and production include:

  1. Unauthorized domain

  2. Restrictive targeting

  3. Campaign budget exhausted

  4. Incorrect parameters

  5. Browser autoplay restrictions

How to Properly Validate

Real validation should be performed:

  1. On the final domain where the Timeline will be published

  2. With real traffic conditions

  3. By verifying the Ad Server response in the browser console or network tab

The tester is useful for validating technical structure, but it does not guarantee fill in production.

How do Programmatic Ads Work?

When an ad slot becomes visible:

  1. A request is sent to the Ad Server.

  2. The Ad Server evaluates:

    • Active campaigns

    • Targeting rules

    • Priorities

    • Domain restrictions

    • Device

    • User consent

  3. A real-time auction (RTB) is executed.

  4. The winning creative is returned.

  5. The player renders the ad.

If no campaign is eligible: The slot may remain empty (no-fill), unless a fallback such as House Ads is configured.

Inventory Types in Google Ad Manager

Every campaign in Google Ad Manager is set up as a line item. A line item holds the instructions for one campaign: which creative to show, where, to whom, for how long, and at what price.

How winning works

Every line item type is tied to a priority number between 1 and 16. The lower the number, the higher the priority.

When a slot becomes available, Ad Manager first discards every campaign that isn't eligible (wrong country, wrong device, budget spent, domain not allowed, and so on). Among the campaigns that are left, the lower priority number usually wins, even if another campaign was willing to pay more.

Price only breaks ties within the same priority level.

This is why a low-paying Sponsorship campaign can beat a high-paying auction bid. It's not a bug; it's the publisher keeping a promise they sold.

The two families

Guaranteed line items are volume the publisher promised to an advertiser in a contract. Ad Manager must deliver them, so they get the top priorities.

Non-guaranteed line items have no promise attached. They fill whatever is left over and compete mainly on price.

The types

Type

Priority

What it does

Typical use

Sponsorship

4

Takes a percentage of all available impressions between a start and end date

"You own 50% of the homepage for two weeks"

Standard

8 (can be set 6–10)

Delivers a fixed number of impressions or clicks, spread evenly across the flight

"Deliver 2 million impressions in March"

Preferred Deal

12

Takes a percentage of whatever is left over

Third-party ad networks

Bulk

12

Takes a fixed number of impressions from whatever is left over, as fast as possible

Burn through remaining volume quickly

Price Priority

12

Competes purely on price against other leftover demand: highest value wins

Header bidding, ad networks, most non-guaranteed demand

House

16

Always last. Serves only when nothing else can

Self-promotion, fallback creative

Two more exist but are usually created automatically rather than by hand: Ad Exchange / AdSense line items (priority 12), which let Google's open auction compete against everything else, and Click Tracking line items, which only count clicks and never show a creative.

Things that are often confused

Programmatic Guaranteed is not its own type. It's a deal negotiated programmatically, but in Ad Manager it is trafficked as a Sponsorship or Standard line item. It behaves like whichever one it was set up as.

Open Auction is not a line item. It's a source of demand. It enters the competition through dynamic allocation and effectively competes at the priority 12 level, against Network, Bulk and Price Priority.

"Remnant" and "Direct" are industry slang, not settings. Direct usually means Sponsorship or Standard. Remnant usually means Network, Bulk or Price Priority. You won't find either word in the Ad Manager interface.

What this means for your ad slots

Terrific doesn't manage your campaigns or decide which ad wins. We load the tag you configured in your own Ad Manager, and Ad Manager returns whatever its own rules select. That means anything you change in Ad Manager: priorities, targeting, budgets, takes effect in Terrific without any change on our side.

If an ad you expect isn't appearing, work through these in order:

1. Is a higher-priority line item absorbing the inventory? A Sponsorship at a high share of voice will crowd out everything below it.

2. Is the line item eligible right now? Check the domain, geography, device, schedule, and whether the budget is still available.

3. Is there anything configured to fill the gap? If nothing is eligible, the slot stays empty.

Protect your fill rate with House line items

House line items sit at the bottom of the priority stack, so they can never take an impression away from a paid campaign. They only appear when nothing else can.

Setting them up costs nothing and turns an empty slot into a branded one: your own promotion, a newsletter signup, an upcoming live event. Without them, unsold inventory simply renders blank.

Did this answer your question?