Google Ad Manager (GAM) is the backbone of serious ad monetization. If you're still running AdSense tags directly on your site, you're using training wheels — and leaving significant revenue on the table. GAM gives you the infrastructure to manage multiple demand sources, implement header bidding, run direct deals, set floor prices, and access the kind of granular reporting that actually lets you optimize your ad revenue.
This guide walks you through the entire setup process — from creating your account to implementing advanced features that most publishers never touch. Whether you're migrating from AdSense or setting up ad monetization for the first time, this is the reference you'll keep coming back to.
What Is Google Ad Manager?
Google Ad Manager is a full-featured ad serving platform that acts as the central hub for all advertising on your website. Formerly known as DoubleClick for Publishers (DFP), GAM handles four core functions:
- Ad serving: Delivers the right ad to the right user at the right time. GAM evaluates all competing demand sources and selects the highest-paying ad for each impression.
- Inventory management: Organizes your available ad space into structured "ad units" that map to specific locations on your pages (header leaderboard, sidebar rectangle, in-content placements, etc.).
- Demand orchestration: Manages the competition between different revenue sources — AdSense, Ad Exchange, header bidding partners, direct-sold campaigns — to maximize yield per impression.
- Reporting and analytics: Provides detailed performance data by ad unit, device, geography, advertiser, and dozens of other dimensions.
The free version of GAM supports up to 200 million monthly impressions in most markets — more than enough for the vast majority of publishers. The paid enterprise version (GAM 360) adds features like audience segmentation, advanced yield management, and dedicated Google support, but you don't need it to get started.
Google Ad Manager vs Google AdSense: Which Do You Need?
This is the most common question from publishers getting started with ad monetization, and the answer depends on where you are in your growth journey.
Google AdSense is an ad network. You paste a code snippet on your site, and Google handles everything — finding advertisers, running auctions, serving ads, and paying you. It's simple, requires zero ad ops knowledge, and works well for small sites. But it has fundamental limitations:
- Google is your only demand source, so there's no auction competition
- You can't set floor prices or manage inventory granularly
- You can't run direct deals with advertisers
- You can't implement header bidding
- Reporting is basic compared to GAM
Google Ad Manager is an ad server — it's the infrastructure layer that sits between your website and all demand sources, including AdSense. With GAM, AdSense becomes one of many competitors for your inventory rather than the sole provider. This competition alone typically increases revenue by 20–40%.
When to Switch from AdSense to GAM
If your site earns more than $500/month from AdSense or receives more than 100,000 monthly pageviews, you should strongly consider migrating to GAM. The revenue uplift from adding demand competition typically pays for the setup effort within the first month.
The ideal setup for most publishers: GAM as your ad server, with AdSense linked as a demand source competing alongside header bidding partners. This gives you the simplicity of AdSense demand with the control and competition that GAM provides.
Step-by-Step: Setting Up Google Ad Manager
Here's the complete walkthrough. Each step builds on the previous one, so follow them in order.
Step 1 — Create a GAM Account
Go to admanager.google.com and sign in with the Google account you want to use for ad management. If you already have an AdSense account, use the same Google account — this makes linking AdSense demand easier later.
During account creation, you'll provide:
- Business name — your company or website name
- Country — this affects available demand sources and payment terms
- Time zone — choose the timezone that matches your primary audience. All reporting will use this timezone. Note: if your ad demand is primarily US-based but your server is in Europe, choose US Eastern or US Pacific for more intuitive reporting alignment with ad spending patterns.
- Currency — your preferred reporting and payment currency
After creating the account, you'll land on the GAM dashboard. The interface has evolved significantly — the 2026 version uses a cleaner navigation with major sections: Delivery (orders, line items, creatives), Inventory (ad units, placements), Reporting, Admin, and Protections.
Important: Write down your GAM Network ID (found under Admin > Global Settings). You'll need this for ad tag generation and header bidding configuration. It's a numeric code like 12345678.
Step 2 — Set Up Your Inventory (Ad Units)
Ad units are the building blocks of your inventory. Each ad unit represents a specific ad placement on your website — the header leaderboard, sidebar rectangle, in-article unit, etc.
Navigate to Inventory > Ad Units and click New Ad Unit. For each unit, configure:
- Name: Use a descriptive naming convention like
site_page-type_position_size. Example:mysite_article_header_728x90. Consistent naming saves hours of debugging later. - Code: A unique identifier used in ad tags. GAM auto-generates this from the name, but you can customize it. Keep it short and machine-friendly.
- Sizes: The ad sizes this unit accepts. You can add multiple sizes to a single unit (e.g., 300x250 and 336x280) to increase demand competition. The ad server will select the highest-paying size.
- Target window: Usually "Top" for standard display ads.
For a typical content website, start with these ad units:
| Ad Unit Name | Position | Sizes | Notes |
|---|---|---|---|
| header_leaderboard | Top of page, below navigation | 728x90, 970x90, 970x250 | High viewability, above the fold |
| sidebar_rectangle | Right sidebar, near top | 300x250, 336x280, 300x600 | Desktop only — hide on mobile |
| incontent_1 | After 2nd paragraph | 300x250, 336x280 | Strong viewability in articles |
| incontent_2 | Mid-article | 300x250, 336x280 | Lazy-loaded recommended |
| anchor_bottom | Fixed bottom of viewport | 320x50, 728x90 | Sticky format, high viewability |
You can also organize ad units into Placements — groups of ad units that share targeting criteria. For example, a "Premium Above-Fold" placement might include header_leaderboard and sidebar_rectangle, making it easy to target direct deals to your best inventory.
Step 3 — Create Orders and Line Items
Orders and line items are how GAM manages ad campaigns. An order represents a business arrangement with an advertiser (or demand source). A line item within that order defines the specific campaign parameters — what ad to show, where, when, and how much it should pay.
For programmatic monetization, you'll create line items for each demand source:
AdSense/Ad Exchange Line Items:
- Go to Delivery > Orders and create a new order (name it "AdSense Backfill" or similar)
- Create a line item with type "Ad Exchange" or "AdSense"
- Set targeting to "Run of Network" (all ad units) or select specific units
- GAM handles pricing automatically based on real-time auction data
Header Bidding Line Items:
For each header bidding partner, you'll create a set of price-priority line items that represent different bid ranges. This is called line item granularity. Common approaches:
- Penny granularity ($0.01–$20.00): One line item per cent. Most accurate but creates 2,000 line items per bidder. Tools like Prebid's line item manager automate this.
- Dime granularity ($0.10–$20.00): One line item per 10 cents. Creates 200 line items per bidder. Good balance of accuracy and manageability.
- Custom buckets: More granular at lower CPMs (where most impressions clear) and broader at higher CPMs. Example: $0.01 increments from $0–$5, $0.50 increments from $5–$20.
Each line item's rate should match its corresponding bid bucket, with targeting set to a key-value pair like hb_pb = 2.50 (indicating a $2.50 header bid). We'll cover key-value setup in the header bidding section below.
Step 4 — Generate and Install Ad Tags
Ad tags are the JavaScript code snippets that go on your website to load and display ads. GAM uses the Google Publisher Tag (GPT) library. Here's the structure:
In your page's <head>:
Load the GPT library and define your ad slots:
Include the GPT script (securepubads.g.doubleclick.net/tag/js/gpt.js), then usegoogletag.defineSlot()for each ad unit, passing your network ID, ad unit code, sizes, and the target div ID. Callgoogletag.pubads().enableSingleRequest()for better performance, thengoogletag.enableServices().
In your page's <body>:
Place a <div> with a matching ID at each ad position, and call googletag.display() to render the ad.
Key implementation tips:
- Load GPT asynchronously to prevent it from blocking page rendering
- Use Single Request Architecture (SRA) — one HTTP request for all ad slots instead of individual requests — for faster ad loading and better competitive exclusion
- Set size mappings for responsive ads so different sizes serve on different screen widths
- Enable lazy loading for below-fold ad slots using
googletag.pubads().enableLazyLoad({fetchMarginPercent: 500, renderMarginPercent: 200})
Step 5 — Set Up Reporting
Navigate to Reporting > Reports and create saved reports for the metrics you need to monitor regularly:
Daily Revenue Report:
- Dimensions: Date, Ad Unit, Device Category
- Metrics: Total impressions, Total clicks, Total CPM and CPC revenue, Active View viewable impressions
- Schedule: Daily delivery to your email
Weekly Performance Report:
- Dimensions: Week, Ad Unit, Order, Country
- Metrics: Impressions, Revenue, eCPM, Active View % viewable, Fill rate
- Schedule: Weekly delivery (Monday mornings)
Header Bidding Analysis:
- Dimensions: Date, Ad Unit, Key-Values (hb_bidder)
- Metrics: Impressions, Revenue, eCPM, Win rate
- Schedule: Weekly — helps identify which bidders are performing and which should be removed
GAM also provides real-time dashboards under Reporting > Overview that show impressions and revenue trends without needing to run custom reports.
How to Connect Header Bidding with Google Ad Manager
Header bidding is the single most impactful optimization you can make in GAM. It lets multiple SSPs compete for every impression before GAM makes its allocation decision, driving CPMs up through genuine auction competition.
Here's how to connect Prebid.js (the industry-standard open-source header bidding wrapper) with GAM:
1. Install Prebid.js
Download a custom Prebid.js build from prebid.org with your selected bid adapters (SSPs). Start with 3–5 adapters to balance demand coverage against latency. Popular choices: AppNexus/Xandr, Rubicon/Magnite, Index Exchange, PubMatic, OpenX.
2. Configure Bid Adapters
Each SSP gives you account credentials (placement IDs, site IDs, etc.) after you sign up with them. Configure each adapter in the Prebid.js config with these credentials and map them to your GAM ad units.
3. Set Up Key-Values in GAM
Prebid.js sends bid information to GAM via key-value pairs. In GAM, go to Inventory > Key-Values and create:
hb_pb— the bid price (e.g., "2.50")hb_bidder— the winning bidder name (e.g., "appnexus")hb_adid— the creative ID for the winning bidhb_size— the creative size (e.g., "300x250")
4. Create Header Bidding Line Items
As described in Step 3, create price-priority line items in GAM that target specific hb_pb values. Each line item has a creative that calls pbjs.renderAd() to render the winning bid's ad. Tools like Prebid's Line Item Manager Chrome extension or third-party solutions can generate these line items automatically.
5. Set Auction Timeout
Configure a timeout (typically 1,000–1,500ms) so header bidding doesn't delay ad loading if a bidder is slow. After the timeout, Prebid.js sends whatever bids it has collected to GAM, and any late bidders are excluded from that auction.
Implementation Complexity
Header bidding setup is the most technically involved part of ad monetization. Getting the Prebid.js configuration, GAM line items, key-values, and creatives all wired correctly requires ad ops expertise. Mistakes in line item pricing or targeting can cost thousands in lost revenue. This is where working with a monetization partner like WeForAds saves significant time — the technical setup is handled for you, including ongoing bidder optimization and A/B testing.
Advanced GAM Features Most Publishers Miss
Once your basic setup is running, these advanced features can extract significantly more revenue from the same traffic.
Floor Prices (Unified Pricing Rules)
Unified Pricing Rules in GAM let you set minimum CPM floors for specific inventory segments. Without floors, some impressions sell for fractions of a cent — especially from low-quality demand.
Start with conservative floors and increase gradually while monitoring fill rate impact:
- US desktop traffic: $1.00–$2.00 floor
- US mobile traffic: $0.75–$1.50 floor
- European traffic: $0.50–$1.00 floor
- Global traffic: $0.25–$0.50 floor
If your fill rate drops more than 5% after setting a floor, the floor is too high. Adjust down in $0.10 increments until you find the sweet spot where floor price increases more than compensate for lost fill.
Key-Value Targeting
Key-value pairs let you pass contextual information from your website to GAM for targeting decisions. Common use cases:
- Content category:
category=technology— serve tech-specific campaigns to tech content - Page type:
pagetype=article— different ad behavior on articles vs. homepages - User type:
usertype=subscriber— show different ads to free vs. paid users - Content length:
wordcount=long— longer articles have more scroll depth, enabling more ad slots
Key-values are particularly valuable for PMP and preferred deals, where advertisers want to target specific content segments at premium CPMs.
Lazy Load Configuration
GAM's built-in lazy loading is one of the most underused features. It delays fetching and rendering ads until the user is about to scroll to them, improving both page speed and viewability.
Configure it in your GPT code with enableLazyLoad(). The two key parameters:
- fetchMarginPercent: How far from the viewport (as a percentage of viewport height) to start fetching ad data. A value of 500 means "start fetching when the ad is 5 viewport-heights away." This gives ads time to load before becoming visible.
- renderMarginPercent: How far from the viewport to actually render the ad. A value of 200 means the ad renders when it's 2 viewport-heights from being visible. Lower values improve viewability; higher values ensure ads are loaded by the time the user scrolls to them.
Recommended starting values: fetchMarginPercent: 500, renderMarginPercent: 200. Test and adjust based on your site's scroll behavior.
Should You Use a Monetization Partner with GAM?
This is a legitimate question. GAM is free, Prebid.js is open-source, and SSP accounts are free to set up. Why would you pay a monetization partner a revenue share?
The answer comes down to expertise, access, and opportunity cost:
Technical expertise. A properly optimized ad stack involves hundreds of configuration decisions — bid adapter selection, timeout tuning, floor price strategy, ad unit sizing, refresh logic, lazy loading settings. Each decision affects revenue, and the optimal configuration changes over time. Ad ops engineers who do this full-time will consistently outperform a publisher managing their own stack part-time.
Demand access. Some premium SSPs and demand sources require minimum traffic thresholds or only work with approved partners. A monetization partner with pooled inventory can give a 500,000 pageview/month site access to demand sources that would normally require 5 million+.
Advanced ad formats. Formats like sticky ads, interstitials, in-image ads, and smart refresh require custom development and ongoing maintenance. Building and maintaining these in-house is a significant engineering investment. WeForAds, for example, provides 19+ ad formats that publishers can deploy through simple tag integration — formats that would take weeks to build independently.
Ongoing optimization. The ad tech landscape changes constantly — new demand sources launch, SSPs adjust algorithms, browser updates affect ad loading, and seasonal patterns shift floor price strategy. A good monetization partner continuously tests and adjusts these variables. A publisher managing their own stack typically sets it up once and rarely revisits the configuration.
The threshold question: if your site earns less than $2,000–$3,000/month from ads, a monetization partner's revenue share (typically 15–25%) is well worth the uplift they provide. If you earn $10,000+/month and have a dedicated ad ops person, you might capture more value managing the stack yourself — but even large publishers often use partners for specific capabilities like advanced formats or demand access.
Frequently Asked Questions
Is Google Ad Manager free for publishers?
Google Ad Manager (formerly DFP — DoubleClick for Publishers) is free for publishers serving up to 200 million monthly impressions in most markets. Above that threshold, publishers use Google Ad Manager 360, which is a paid enterprise product with additional features like audience segmentation, advanced reporting, and dedicated support. The free version includes all core features needed for ad serving, reporting, and header bidding integration.
How long does it take to set up Google Ad Manager?
Basic GAM setup — creating an account, setting up a few ad units, and generating tags — can be done in 2–4 hours. A full production setup with multiple ad units, orders, targeting, and header bidding integration typically takes 1–2 weeks. If you're working with a monetization partner like WeForAds, they handle the technical setup, which reduces your hands-on time to initial account creation and tag installation.
Can I use Google Ad Manager with AdSense?
Yes, and you should. GAM can use AdSense as a demand source by linking your AdSense account. This lets AdSense compete with other demand sources (header bidding partners, direct deals) in the GAM auction. The result is higher CPMs because AdSense has to compete rather than being your sole demand source. You enable this by creating an "AdSense" line item type in GAM and linking your AdSense publisher ID.
What is the difference between Google Ad Manager and Google AdSense?
Google AdSense is a simple plug-and-play ad network — you paste a code snippet and Google handles everything. Google Ad Manager is a full ad server that gives you control over your entire ad stack — you can manage multiple demand sources, run direct deals, set floor prices, implement header bidding, and access detailed reporting. AdSense is demand; GAM is the infrastructure. Most serious publishers use GAM with AdSense as one of many demand sources.
Need Help Setting Up GAM?
WeForAds handles the entire GAM setup — ad units, header bidding, demand partners, and optimization — so you can focus on creating content.
Get Started Free