Chapter 12: Google Ads Integration (Pro Tier)

Google Ads is the ultimate consumer of AdPriority’s custom labels. While AdPriority does not directly create or modify Google Ads campaigns in the MVP, understanding how custom labels drive Performance Max (PMAX) campaign structure is essential. This chapter covers the recommended campaign architecture, how PMAX uses custom labels for product segmentation, and the future Google Ads API integration planned for the Pro tier.


10.1 How PMAX Uses Custom Labels

Performance Max campaigns use listing groups (formerly product groups) to segment a merchant’s product catalog. Custom labels are one of the most powerful segmentation dimensions because they are the only attributes fully controlled by the merchant.

Product Group Hierarchy

Performance Max Campaign
|
+-- Asset Group: "All Products"
    |
    +-- Listing Group (root)
        |
        +-- Filter: custom_label_0 = "priority-5"
        |   (Products scored as maximum push)
        |
        +-- Filter: custom_label_0 = "priority-4"
        |   (Strong performers)
        |
        +-- Filter: custom_label_0 = "priority-3"
        |   (Standard products)
        |
        +-- Filter: custom_label_0 IN ("priority-2", "priority-1")
        |   (Low priority, minimal spend)
        |
        +-- Filter: custom_label_0 = "priority-0"
            (Excluded from advertising)

Why Custom Labels Matter for PMAX

Google’s PMAX algorithm optimizes bid strategy across all products in an asset group. Without segmentation, high-margin seasonal items compete for budget with dead stock and low-performers. Custom labels solve this by letting the merchant tell Google which products deserve more budget.

Without AdPriority Labels          With AdPriority Labels
===========================        ==========================

  Single PMAX Campaign               4 Focused Campaigns
  +---------------------+            +--------------------+
  |  ALL 20,000 items   |            | Priority 5 (800)   | --> Aggressive
  |  compete equally    |            +--------------------+
  |  for budget         |            | Priority 4-3 (8K)  | --> Standard
  |                     |            +--------------------+
  |  Google guesses     |            | Priority 2-1 (6K)  | --> Minimal
  |  which to show      |            +--------------------+
  +---------------------+            | Priority 0 (5.2K)  | --> Excluded
                                     +--------------------+

  Result: Budget wasted             Result: Budget focused
  on dead stock and                 on seasonal winners
  off-season items                  and high-margin products

AdPriority recommends a multi-campaign structure where each campaign targets a priority tier with its own budget and bidding strategy. This provides maximum control over spend allocation.

Campaign Architecture

+-----------------------------------------------------------------------+
|                     Google Ads Account: 298-086-1126                    |
|                         (Nexus Clothing)                               |
+-----------------------------------------------------------------------+
|                                                                        |
|  Campaign 1: "PMAX - Priority 5 - Maximum Push"                       |
|  +------------------------------------------------------------------+ |
|  | Budget:    $80/day (40% of total)                                 | |
|  | tROAS:     200% (aggressive, prioritize volume)                   | |
|  | Filter:    custom_label_0 = "priority-5"                          | |
|  | Products:  Seasonal peaks, new arrivals, high-margin items        | |
|  | Nexus est: ~800 variants (winter puffers, hoodies, new arrivals) | |
|  +------------------------------------------------------------------+ |
|                                                                        |
|  Campaign 2: "PMAX - Priority 4-3 - Active Products"                  |
|  +------------------------------------------------------------------+ |
|  | Budget:    $80/day (40% of total)                                 | |
|  | tROAS:     350% (standard, balanced)                              | |
|  | Filter:    custom_label_0 IN ("priority-4", "priority-3")         | |
|  | Products:  Steady sellers, year-round staples, name brands        | |
|  | Nexus est: ~8,000 variants (jeans, caps, standard t-shirts)      | |
|  +------------------------------------------------------------------+ |
|                                                                        |
|  Campaign 3: "PMAX - Priority 2-1 - Low Priority"                     |
|  +------------------------------------------------------------------+ |
|  | Budget:    $30/day (15% of total)                                 | |
|  | tROAS:     500% (high threshold, only show if very profitable)    | |
|  | Filter:    custom_label_0 IN ("priority-2", "priority-1")         | |
|  | Products:  Low-margin, off-season, accessories                    | |
|  | Nexus est: ~6,000 variants (underwear, socks, off-season items)  | |
|  +------------------------------------------------------------------+ |
|                                                                        |
|  Campaign 4: "PMAX - Priority 0 - Excluded"                           |
|  +------------------------------------------------------------------+ |
|  | Budget:    $0/day (PAUSED)                                        | |
|  | Status:    Paused                                                  | |
|  | Filter:    custom_label_0 = "priority-0"                          | |
|  | Products:  Dead stock, archived, out of stock                     | |
|  | Nexus est: ~5,200 variants (DEAD50 tagged, archived products)    | |
|  +------------------------------------------------------------------+ |
|                                                                        |
|  Total daily budget: ~$190/day ($5,700/month)                          |
+-----------------------------------------------------------------------+

Budget Allocation by Priority

PriorityCampaignBudget ShareDaily BudgettROAS TargetStrategy
5Maximum Push40%$80200%Aggressive growth – maximize impressions and conversions
4-3Active Products40%$80350%Balanced – steady ROAS with broad reach
2-1Low Priority15%$30500%Conservative – only serve when highly likely to convert
0Excluded0%$0N/APaused campaign, no spend
Unallocated5%$10Reserve for testing and catch-all

Why Multiple Campaigns (Not Asset Groups)

ApproachBudget ControltROAS ControlComplexity
Single campaign, multiple asset groupsShared budget (Google decides allocation)Single tROAS for allLow
Multiple campaigns (recommended)Independent budgets per tierIndependent tROAS per tierMedium
Single campaign, no segmentationNo controlNo controlLowest

Multiple campaigns give the merchant explicit budget and tROAS control per priority tier. With asset groups in a single campaign, Google’s algorithm decides how to split the budget, which often means high-volume low-margin products consume disproportionate spend.


10.3 Secondary Label Segmentation

Beyond the primary custom_label_0 (priority) segmentation, merchants can create additional product groups using the other labels for analysis and fine-tuning.

Seasonal Analysis

Using custom_label_1 (season) within each campaign:

Campaign: "PMAX - Priority 5 - Maximum Push"
|
+-- Asset Group: "Priority 5 - Winter Items"
|   Filter: custom_label_0 = "priority-5" AND custom_label_1 = "winter"
|
+-- Asset Group: "Priority 5 - Year-Round Items"
    Filter: custom_label_0 = "priority-5" AND custom_label_1 != "winter"

Category-Level Reporting

Using custom_label_2 (category) for performance reports:

Category (label_2)ImpressionsClicksConversionsROAS
jeans-pants45,0001,20085420%
hoodies-sweatshirts38,00098072380%
outerwear-heavy22,00065055510%
headwear-caps31,00075045290%
t-shirts52,0001,40060210%

This data, when fed back into AdPriority (Pro tier), enables data-driven priority adjustments.

Brand Tier Analysis

Using custom_label_4 (brand tier):

Brand Tier (label_4)Avg CPCConv RateROAS
name-brand$0.853.2%450%
store-brand$0.622.8%380%
off-brand$0.481.9%280%

10.4 Nexus Google Ads Account

PropertyValue
Google Ads Customer ID298-086-1126
Account typeStandard
Primary campaign typePerformance Max
Linked GMC accountYes (same Google account)
Current PMAX structureSingle campaign, minimal segmentation
Custom label usage in adsNone (labels are empty in GMC)

Current State vs. Target State

Current State (Feb 2026)           Target State (With AdPriority)
============================       ================================

1 PMAX Campaign                    4 PMAX Campaigns (by priority)
  - All products in one group        - Priority 5: Aggressive
  - Single budget                    - Priority 4-3: Standard
  - Single tROAS                     - Priority 2-1: Conservative
  - No custom label filtering        - Priority 0: Paused

No segmentation by:                Full segmentation by:
  - Season                           - Priority (label_0)
  - Category                         - Season (label_1)
  - Inventory status                 - Category (label_2)
  - Brand tier                       - Inventory status (label_3)
                                     - Brand tier (label_4)

Manual priority decisions          Automated priority scoring
  - Guesswork                        - Rules engine
  - Infrequent updates               - Seasonal calendar
  - No data backing                  - Tag-based modifiers

10.5 Google Ads API (Future Pro Tier)

The Google Ads API integration is planned for the Pro tier ($199/month). It enables AdPriority to read campaign performance data and provide automated recommendations.

Planned Capabilities

CapabilityAPI ResourcePhase
Read campaign performanceCampaignPerformanceViewPro v1
Read product-level metricsShoppingPerformanceViewPro v1
ROAS by priority tierCustom report aggregationPro v1
Automated priority recommendationsInternal scoring + API dataPro v2
Budget allocation suggestionsCampaign budget analysisPro v2
Campaign creation assistanceCampaignService.mutatePro v3 (future)

Authentication Requirements

RequirementValue
OAuth 2.0 scopehttps://www.googleapis.com/auth/adwords
Developer tokenRequired (apply via Google Ads API Center)
Token approvalBasic access initially, then Standard
Customer ID formatXXX-XXX-XXXX (e.g., 298-086-1126)
Manager accountOptional but recommended for multi-tenant

GAQL Queries (Google Ads Query Language)

Performance by product (Shopping Performance View):

SELECT
  segments.product_item_id,
  segments.product_custom_attribute0,
  metrics.impressions,
  metrics.clicks,
  metrics.cost_micros,
  metrics.conversions,
  metrics.conversions_value
FROM shopping_performance_view
WHERE segments.date DURING LAST_30_DAYS
ORDER BY metrics.conversions_value DESC
LIMIT 1000

Performance by priority tier (aggregated):

SELECT
  segments.product_custom_attribute0,
  metrics.impressions,
  metrics.clicks,
  metrics.cost_micros,
  metrics.conversions,
  metrics.conversions_value
FROM shopping_performance_view
WHERE segments.date DURING LAST_30_DAYS
  AND segments.product_custom_attribute0 IS NOT NULL

Campaign-level performance:

SELECT
  campaign.name,
  campaign.status,
  metrics.impressions,
  metrics.clicks,
  metrics.cost_micros,
  metrics.conversions,
  metrics.conversions_value,
  metrics.average_cpc
FROM campaign
WHERE campaign.advertising_channel_type = 'PERFORMANCE_MAX'
  AND segments.date DURING LAST_30_DAYS

Performance Tracking Dashboard (Pro Tier)

The Pro tier dashboard will display ROAS and key metrics segmented by priority tier:

+-----------------------------------------------------------------------+
|  AdPriority Pro - Performance by Priority Tier (Last 30 Days)          |
+-----------------------------------------------------------------------+
|                                                                        |
|  Priority 5 - Maximum Push                                             |
|  +---------+----------+--------+--------+----------+--------+         |
|  | Impress | Clicks   | Cost   | Conv   | Revenue  | ROAS   |         |
|  | 85,000  | 2,400    | $1,920 | 168    | $12,600  | 656%   |         |
|  +---------+----------+--------+--------+----------+--------+         |
|                                                                        |
|  Priority 4-3 - Active Products                                       |
|  +---------+----------+--------+--------+----------+--------+         |
|  | Impress | Clicks   | Cost   | Conv   | Revenue  | ROAS   |         |
|  | 120,000 | 3,100    | $1,860 | 195    | $9,750   | 524%   |         |
|  +---------+----------+--------+--------+----------+--------+         |
|                                                                        |
|  Priority 2-1 - Low Priority                                          |
|  +---------+----------+--------+--------+----------+--------+         |
|  | Impress | Clicks   | Cost   | Conv   | Revenue  | ROAS   |         |
|  | 45,000  | 850      | $510   | 38     | $1,520   | 298%   |         |
|  +---------+----------+--------+--------+----------+--------+         |
|                                                                        |
|  Priority 0 - Excluded                                                 |
|  +---------+----------+--------+--------+----------+--------+         |
|  | Impress | Clicks   | Cost   | Conv   | Revenue  | ROAS   |         |
|  | 0       | 0        | $0     | 0      | $0       | N/A    |         |
|  +---------+----------+--------+--------+----------+--------+         |
|                                                                        |
|  TOTAL                                                                 |
|  +---------+----------+--------+--------+----------+--------+         |
|  | 250,000 | 6,350    | $4,290 | 401    | $23,870  | 556%   |         |
|  +---------+----------+--------+--------+----------+--------+         |
|                                                                        |
+-----------------------------------------------------------------------+

Key Performance Indicators

KPIDefinitionTarget
ROAS by priority tierRevenue / Cost per tierPriority 5 > 400%, Priority 2-1 > 200%
Cost per conversionAd spend / ConversionsLower for higher priority tiers
Impression shareOur impressions / Total eligible impressionsPriority 5 > 80%
Click-through rateClicks / ImpressionsPriority 5 > 3%, overall > 2%
Conversion rateConversions / ClicksPriority 5 > 5%
Wasted spendSpend on priority-0 products (should be $0)$0

10.6 Automated Recommendations (Pro v2)

In the second phase of Pro tier development, AdPriority will use Google Ads performance data to generate priority adjustment recommendations.

Recommendation Logic

Recommendation Engine Flow
===========================

1. Fetch last 30 days of shopping performance data
   (product-level: impressions, clicks, conversions, revenue, cost)

2. Calculate per-product metrics:
   - ROAS = conversions_value / (cost_micros / 1_000_000)
   - Conversion rate = conversions / clicks
   - Cost efficiency = cost_micros / conversions

3. Compare actual performance vs. expected for priority tier:

   Product at Priority 3 with ROAS = 650%?
   --> RECOMMEND: Increase to Priority 5
       Reason: "ROAS of 650% is 86% above the tier average.
                This product is undervalued at Priority 3."

   Product at Priority 5 with ROAS = 120%?
   --> RECOMMEND: Decrease to Priority 2
       Reason: "ROAS of 120% is 70% below the tier average.
                Budget is being wasted on this product."

   Product at Priority 4 with 0 conversions in 30 days?
   --> RECOMMEND: Decrease to Priority 1
       Reason: "Zero conversions in 30 days despite 2,400
                impressions. Move budget to better performers."

4. Present recommendations in dashboard with one-click accept

Safety Guardrails

GuardrailRule
Maximum change per cycle+/- 2 priority levels per recommendation
Minimum data threshold100+ impressions before recommending decrease
Manual lock respectedNever recommend changes to locked products
Seasonal awarenessDo not downgrade seasonal items approaching their peak
Recommendation frequencyWeekly (not daily) to avoid churn

10.7 Implementation Timeline

PhaseFeatureTierTimeline
MVPLabels in GMC, campaign structure guide (manual setup)StarterPhase 0
Pro v1Read-only Google Ads performance dataProPhase 2
Pro v1ROAS by priority tier dashboardProPhase 2
Pro v2Automated priority recommendationsProPhase 3
Pro v2Budget allocation suggestionsProPhase 3
Pro v3Campaign creation assistantProFuture
Pro v3Automated bid adjustmentsProFuture

10.8 Chapter Summary

Google Ads is the downstream beneficiary of AdPriority’s custom labels. The recommended campaign structure uses four PMAX campaigns segmented by custom_label_0 (priority), with independent budgets and tROAS targets per tier. Priority 5 products receive aggressive spend, while Priority 0 products are excluded entirely.

For the MVP and Starter/Growth tiers, AdPriority provides a campaign setup guide and the labels in GMC. Merchants configure their Google Ads campaigns manually. The Pro tier adds Google Ads API integration for performance tracking, ROAS analysis by tier, and automated priority recommendations.

Key takeaways for Nexus Clothing (Account 298-086-1126):

  • Current state: Single PMAX campaign, no custom label segmentation
  • Target state: 4 campaigns segmented by priority tier
  • Estimated active variant distribution: ~800 at P5, ~8,000 at P4-3, ~6,000 at P2-1, ~5,200 at P0
  • Pro tier adds: Performance data, ROAS by tier, automated recommendations
  • No Google Ads API access needed for MVP – labels in GMC are sufficient