SlideShare uma empresa Scribd logo
1 de 47
Baixar para ler offline
Shopping Campaigns
Adam Ohren
Agenda
● Google Shopping & Merchant Center
● Content API for Shopping
● AdWords Shopping Campaigns
● Product Partition Trees
● Local Inventory Ads
● Product Partition Utility
Google Shopping &
Merchant Center
Google Shopping
Merchant Center
● View products, but not
edit
● Manage account and
subaccounts
● Data quality and
disapproval
information
● Link to AdWords
accounts
● Tax and delivery
settings
Multi-client Accounts
● Analogous to AdWords
MCCs
● Allows merchants to
manage many sub-
accounts
Data Feeds
● CSV, XML, Google Sheets with product data
● Fetched manually or on a schedule
Content API for
Shopping
Content API
● Manage products, data feeds, users,
accounts
● Can make updates throughout the day
● Instant feedback on some data issues
Content API Example
POST
/content/v2/YOUR_MERCHANT_ID/inventory/online/products/onl
ine:en:GB:book123
{
"price": {
"value": "3.99",
"currency": "USD"
}
}
Updating a product’s price:
Content API for Shopping
https://developers.google.com/shopping-content/
AdWords Shopping
Campaigns
Shopping Campaigns
Shopping Campaigns
● Connects a linked Merchant Center to
AdWords campaign
● Enables Product Listing Ads (PLAs)
● Manages bids based on product hierarchy
Shopping Campaigns Differences
● AdvertisingChannelType is SHOPPING
● Must have a ShoppingSetting which sets
○ The Merchant Center account to use for product data
○ The target country of the products to use
○ Optional priority
● Must have a valid ProductPartition tree
Creating a Shopping Campaign
// Create regular campaign
Campaign c = new Campaign();
c.setAdvertisingChannelType(
AdvertisingChannelType.SHOPPING);
// Set shopping attributes
ShoppingSetting shoppingSetting = new ShoppingSetting();
shoppingSetting.setMerchantId((long) 1234567);
shoppingSetting.setSalesCountry("GB");
shoppingSetting.setCampaignPriority(0);
c.setSettings(new Setting[] {shoppingSetting});
Product Partition
Trees
Product Partitions
Inventory is partitioned by various Product
Dimensions
Product Dimensions
Make bidding decisions based on product data
● Category
● Brand
● Item ID
● Condition
● Product type
● Custom labels
● Product channel v201502
● Product channel exclusivity v201502
Product Dimensions
Category ProductBiddingCategory
Brand ProductBrand
Item ID ProductOfferId
Condition ProductCanonicalCondition
Product type ProductType
Custom labels ProductCustomAttribute
Channel ProductChannel
Channel exclusivity ProductChannelExclusivity
Product Partitions
Product Partitions
Product Partitions
ProductPartition root = new ProductPartition();
root.setPartitionType(ProductPartitionType.SUBDIVISION);
root.setId(-1);
Product Partitions
Root is a subdivision. It has no value and no parent.
ProductBiddingCategory toysDimension = ...
ProductPartition toys = new ProductPartition();
toys.setPartitionType(ProductPartitionType.UNIT);
toys.setParentCriterionId(root.getId());
toys.setCaseValue(toysDimension);
Product Partitions
The Toys category is a unit. It has root as it’s parent.
ProductBrand otherBrand = new ProductBrand();
ProductBiddingCategory otherCat = new
ProductBiddingCategory();
otherCat.setType(ProductDimensionType.BIDDING_CATEGORY_L1);
Product Partitions
To create an Other node, use a dimension with no value
BiddableAdGroupCriterion toysCriterion = new ...
toysCriterion.setAdGroupId(...);
toysCriterion.setCriterion = toys;
toysCriterion.setBiddingStrategyConfiguration(...);
AdGroupCriterionOperation operation = new ...
operation.setOperand(toysCriterion);
operation.setOperation(Operator.ADD);
adGroupCriterionService.mutate(...);
Product Partitions
Create the tree
Local Inventory Ads
Local Inventory Ads
Easily make in-store products available in
shopping campaigns
New LIA Controls in v201502
1. Enable local inventory ads
2. Campaign-level filters for Channel &
ChannelExclusivity
3. Product tree dimensions for Channel &
ChannelExclusivity
Enable Local Inventory Ads
● Opt-in campaigns to serve local
information
Enable Local Inv. Ads Example
Campaign c = new Campaign();
c.setAdvertisingChannelType(AdvertisingChannelType.
SHOPPING);
// Set shopping attributes
ShoppingSetting shoppingSetting = new ShoppingSetting();
shoppingSetting.setMerchantId((long) 1234567);
shoppingSetting.setSalesCountry("GB");
shoppingSetting.setCampaignPriority(0);
shoppingSetting.setEnableLocal(true);
c.setSettings(new Setting[] {shoppingSetting});
Campaign-level Filters
● Use inventory filters to include / exclude
products based on channel dimensions
Campaign-level Filters Example
ProductScope scope = new ProductScope();
ProductChannel channel = new ProductChannel();
channel.setValue(“ONLINE”);
ProductChannelExclusivity channelEx = new
ProductChannelExclusivity();
channelEx.setValue(“SINGLE_CHANNEL”);
scope.setDimensions(new ProductDimension[]{ channel,
channelEx});
Product Tree Dimensions
● Segment product tree by Channel &
ChannelExclusivity
Product Tree Dimensions Example
ProductPartition node1 = new ProductPartition();
node1.setPartitionType(ProductPartitionType.UNIT);
node1.setCaseValue(new ProductChannel(null, "ONLINE"));
node1.setParentCriterionId(root.getId());
ProductPartition node2 = new ProductPartition();
node2.setPartitionType(ProductPartitionType.UNIT);
node2.setCaseValue(new ProductChannel(null, "LOCAL"));
node2.setParentCriterionId(root.getId());
Product Partition
Utility
Product Partition Utility
● Client-side extension that simplifies
creating, mutating, and removing
ProductPartitions
● Added in v201409
● Java client library only
Product Partition Utility
● ProductPartitionTree API
○ Abstracts tree handling
● ProductPartitionNode API
○ Abstracts nodes & properties (bids, dimensions, etc.)
Sample Use Cases
● Rebuild entire trees
● Convert SUBDIVISION <-> UNIT
● Update bids
Creating a ProductPartitionTree
ProductPartitionTree tree = ProductPartitionTree.
.createAdGroupTree(adWordsServices, adWordsSession, adGroupId);
ProductPartitionNode rootNode = tree.getRoot();
...
Construct a ProductPartitionTree using the
static createAdGroupTree method.
Get the root ProductPartitionNode from the
new tree.
Updating a Bid Example
tree.getRoot()
.getChild(ProductDimensions
.createType(ProductDimensionType.PRODUCT_TYPE_L1, "clothing"))
.asBiddableUnit()
.setBid(bid);
List<AdGroupCriterionOperation> operations = tree.getMutateOperations();
Convert UNIT to SUBDIVISION
Convert UNIT to SUBDIVISION - Cont.
ProductPartitionNode shoes = tree.getRoot()
.getChild(createType(ProductDimensionType.PRODUCT_TYPE_L1, "shoes"))
.asSubdivision();
shoes.addChild(createCanonicalCondition(
ProductCanonicalConditionCondition.NEW))
.asBiddableUnit().setBid(1000000L);
shoes.addChild(createCanonicalCondition(
ProductCanonicalConditionCondition.REFURBISHED))
.asBiddableUnit().setBid(1500000L);
shoes.addChild(createCanonicalCondition(null)).asExcludedUnit();
List<AdGroupCriterionOperation> operations = tree.getMutateOperations();
Rebuilding a Tree
List<AdGroupCriterionOperation> operations = tree.getMutateOperations();
tree.getRoot()
.asBiddableUnit()
.setBid(bid);
tree.getRoot()
.removeAllChildren()
.asSubdivision()
tree.getRoot()
.addChild(...);
...
Send Us Feedback!
We're looking for feedback on this utility.
If you use it, we want to hear
from you!
Check out the guide on github:
http://goo.gl/UmN17E
Resources
● Shopping Campaigns Guide
https://developers.google.com/adwords/api/docs/guides/shopping
● Product Partition Utility Example
https://github.com/googleads/googleads-java-lib (see
AddProductPartitionTree.java)

Mais conteúdo relacionado

Semelhante a Shopping Campaigns

In memory OLAP engine
In memory OLAP engineIn memory OLAP engine
In memory OLAP engine
WO Community
 
07. feeds update
07. feeds update07. feeds update
07. feeds update
marcwan
 
Windows Store app using XAML and C#: Enterprise Product Development
Windows Store app using XAML and C#: Enterprise Product Development Windows Store app using XAML and C#: Enterprise Product Development
Windows Store app using XAML and C#: Enterprise Product Development
Mahmoud Hamed Mahmoud
 

Semelhante a Shopping Campaigns (20)

EVOLVE'13 | Enhance | Ecommerce Framework | Paolo Mottadelli
EVOLVE'13 | Enhance | Ecommerce Framework | Paolo MottadelliEVOLVE'13 | Enhance | Ecommerce Framework | Paolo Mottadelli
EVOLVE'13 | Enhance | Ecommerce Framework | Paolo Mottadelli
 
Evolve13 cq-commerce-framework
Evolve13 cq-commerce-frameworkEvolve13 cq-commerce-framework
Evolve13 cq-commerce-framework
 
E-Bazaar
E-BazaarE-Bazaar
E-Bazaar
 
Learn Adobe analytics basics - Conversion variables
Learn Adobe analytics basics - Conversion variablesLearn Adobe analytics basics - Conversion variables
Learn Adobe analytics basics - Conversion variables
 
Bit2win 20r2.1 releasepack
Bit2win 20r2.1 releasepackBit2win 20r2.1 releasepack
Bit2win 20r2.1 releasepack
 
In memory OLAP engine
In memory OLAP engineIn memory OLAP engine
In memory OLAP engine
 
Decoupled Days 2019: Delivering Headless Commerce
Decoupled Days 2019: Delivering Headless CommerceDecoupled Days 2019: Delivering Headless Commerce
Decoupled Days 2019: Delivering Headless Commerce
 
The Google Shopping Product Feed: All Mandatory Attributes at a Glance
The Google Shopping Product Feed: All Mandatory Attributes at a GlanceThe Google Shopping Product Feed: All Mandatory Attributes at a Glance
The Google Shopping Product Feed: All Mandatory Attributes at a Glance
 
What's new in reporting
What's new in reporting What's new in reporting
What's new in reporting
 
Product Feed Optimizations For a Cross Channel Strategy
Product Feed Optimizations For a Cross Channel StrategyProduct Feed Optimizations For a Cross Channel Strategy
Product Feed Optimizations For a Cross Channel Strategy
 
07. feeds update
07. feeds update07. feeds update
07. feeds update
 
Upgraded URLs
Upgraded URLsUpgraded URLs
Upgraded URLs
 
B2C-Commerce-Developer Dumps
B2C-Commerce-Developer DumpsB2C-Commerce-Developer Dumps
B2C-Commerce-Developer Dumps
 
Reporting tips & tricks
Reporting tips & tricks  Reporting tips & tricks
Reporting tips & tricks
 
Write once, ship multiple times
Write once, ship multiple timesWrite once, ship multiple times
Write once, ship multiple times
 
BigCommerce Akeneo Connector
BigCommerce Akeneo ConnectorBigCommerce Akeneo Connector
BigCommerce Akeneo Connector
 
Drupal Commerce contributed modules overview
Drupal Commerce contributed modules overviewDrupal Commerce contributed modules overview
Drupal Commerce contributed modules overview
 
Windows Store app using XAML and C#: Enterprise Product Development
Windows Store app using XAML and C#: Enterprise Product Development Windows Store app using XAML and C#: Enterprise Product Development
Windows Store app using XAML and C#: Enterprise Product Development
 
Benefits of Google Tag Manager
Benefits of Google Tag ManagerBenefits of Google Tag Manager
Benefits of Google Tag Manager
 
Deliver the Perfect Omnichannel Commerce Experience
Deliver the Perfect Omnichannel Commerce ExperienceDeliver the Perfect Omnichannel Commerce Experience
Deliver the Perfect Omnichannel Commerce Experience
 

Mais de supergigas

Mais de supergigas (16)

Remarketing using customer match
Remarketing using customer matchRemarketing using customer match
Remarketing using customer match
 
Location aware ad customizers
Location aware ad customizersLocation aware ad customizers
Location aware ad customizers
 
GMB API (Google My Business)
GMB API (Google My Business)GMB API (Google My Business)
GMB API (Google My Business)
 
Uploading HTML5 ads
Uploading HTML5 adsUploading HTML5 ads
Uploading HTML5 ads
 
BatchJobService
BatchJobServiceBatchJobService
BatchJobService
 
Why use ad words api
Why use ad words apiWhy use ad words api
Why use ad words api
 
How to build a platform
How to build a platformHow to build a platform
How to build a platform
 
The AdWords api and mobile
The AdWords api and mobileThe AdWords api and mobile
The AdWords api and mobile
 
MCC Scripts update
MCC Scripts updateMCC Scripts update
MCC Scripts update
 
Rate limits and Performance
Rate limits and PerformanceRate limits and Performance
Rate limits and Performance
 
How AdWords UI maps into adwords api
How AdWords UI maps into adwords apiHow AdWords UI maps into adwords api
How AdWords UI maps into adwords api
 
Extension Setting Services
Extension Setting ServicesExtension Setting Services
Extension Setting Services
 
Effective Reporting
Effective ReportingEffective Reporting
Effective Reporting
 
Display Network criteria bidding
Display Network criteria biddingDisplay Network criteria bidding
Display Network criteria bidding
 
Dev Token tips
Dev Token tipsDev Token tips
Dev Token tips
 
Ad Customizers
Ad CustomizersAd Customizers
Ad Customizers
 

Último

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 

Último (20)

Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 

Shopping Campaigns

  • 2. Agenda ● Google Shopping & Merchant Center ● Content API for Shopping ● AdWords Shopping Campaigns ● Product Partition Trees ● Local Inventory Ads ● Product Partition Utility
  • 5. Merchant Center ● View products, but not edit ● Manage account and subaccounts ● Data quality and disapproval information ● Link to AdWords accounts ● Tax and delivery settings
  • 6. Multi-client Accounts ● Analogous to AdWords MCCs ● Allows merchants to manage many sub- accounts
  • 7. Data Feeds ● CSV, XML, Google Sheets with product data ● Fetched manually or on a schedule
  • 9. Content API ● Manage products, data feeds, users, accounts ● Can make updates throughout the day ● Instant feedback on some data issues
  • 11. Content API for Shopping https://developers.google.com/shopping-content/
  • 14. Shopping Campaigns ● Connects a linked Merchant Center to AdWords campaign ● Enables Product Listing Ads (PLAs) ● Manages bids based on product hierarchy
  • 15. Shopping Campaigns Differences ● AdvertisingChannelType is SHOPPING ● Must have a ShoppingSetting which sets ○ The Merchant Center account to use for product data ○ The target country of the products to use ○ Optional priority ● Must have a valid ProductPartition tree
  • 16. Creating a Shopping Campaign // Create regular campaign Campaign c = new Campaign(); c.setAdvertisingChannelType( AdvertisingChannelType.SHOPPING); // Set shopping attributes ShoppingSetting shoppingSetting = new ShoppingSetting(); shoppingSetting.setMerchantId((long) 1234567); shoppingSetting.setSalesCountry("GB"); shoppingSetting.setCampaignPriority(0); c.setSettings(new Setting[] {shoppingSetting});
  • 18. Product Partitions Inventory is partitioned by various Product Dimensions
  • 19. Product Dimensions Make bidding decisions based on product data ● Category ● Brand ● Item ID ● Condition ● Product type ● Custom labels ● Product channel v201502 ● Product channel exclusivity v201502
  • 20. Product Dimensions Category ProductBiddingCategory Brand ProductBrand Item ID ProductOfferId Condition ProductCanonicalCondition Product type ProductType Custom labels ProductCustomAttribute Channel ProductChannel Channel exclusivity ProductChannelExclusivity
  • 24. ProductPartition root = new ProductPartition(); root.setPartitionType(ProductPartitionType.SUBDIVISION); root.setId(-1); Product Partitions Root is a subdivision. It has no value and no parent.
  • 25. ProductBiddingCategory toysDimension = ... ProductPartition toys = new ProductPartition(); toys.setPartitionType(ProductPartitionType.UNIT); toys.setParentCriterionId(root.getId()); toys.setCaseValue(toysDimension); Product Partitions The Toys category is a unit. It has root as it’s parent.
  • 26. ProductBrand otherBrand = new ProductBrand(); ProductBiddingCategory otherCat = new ProductBiddingCategory(); otherCat.setType(ProductDimensionType.BIDDING_CATEGORY_L1); Product Partitions To create an Other node, use a dimension with no value
  • 27. BiddableAdGroupCriterion toysCriterion = new ... toysCriterion.setAdGroupId(...); toysCriterion.setCriterion = toys; toysCriterion.setBiddingStrategyConfiguration(...); AdGroupCriterionOperation operation = new ... operation.setOperand(toysCriterion); operation.setOperation(Operator.ADD); adGroupCriterionService.mutate(...); Product Partitions Create the tree
  • 29. Local Inventory Ads Easily make in-store products available in shopping campaigns
  • 30. New LIA Controls in v201502 1. Enable local inventory ads 2. Campaign-level filters for Channel & ChannelExclusivity 3. Product tree dimensions for Channel & ChannelExclusivity
  • 31. Enable Local Inventory Ads ● Opt-in campaigns to serve local information
  • 32. Enable Local Inv. Ads Example Campaign c = new Campaign(); c.setAdvertisingChannelType(AdvertisingChannelType. SHOPPING); // Set shopping attributes ShoppingSetting shoppingSetting = new ShoppingSetting(); shoppingSetting.setMerchantId((long) 1234567); shoppingSetting.setSalesCountry("GB"); shoppingSetting.setCampaignPriority(0); shoppingSetting.setEnableLocal(true); c.setSettings(new Setting[] {shoppingSetting});
  • 33. Campaign-level Filters ● Use inventory filters to include / exclude products based on channel dimensions
  • 34. Campaign-level Filters Example ProductScope scope = new ProductScope(); ProductChannel channel = new ProductChannel(); channel.setValue(“ONLINE”); ProductChannelExclusivity channelEx = new ProductChannelExclusivity(); channelEx.setValue(“SINGLE_CHANNEL”); scope.setDimensions(new ProductDimension[]{ channel, channelEx});
  • 35. Product Tree Dimensions ● Segment product tree by Channel & ChannelExclusivity
  • 36. Product Tree Dimensions Example ProductPartition node1 = new ProductPartition(); node1.setPartitionType(ProductPartitionType.UNIT); node1.setCaseValue(new ProductChannel(null, "ONLINE")); node1.setParentCriterionId(root.getId()); ProductPartition node2 = new ProductPartition(); node2.setPartitionType(ProductPartitionType.UNIT); node2.setCaseValue(new ProductChannel(null, "LOCAL")); node2.setParentCriterionId(root.getId());
  • 38. Product Partition Utility ● Client-side extension that simplifies creating, mutating, and removing ProductPartitions ● Added in v201409 ● Java client library only
  • 39. Product Partition Utility ● ProductPartitionTree API ○ Abstracts tree handling ● ProductPartitionNode API ○ Abstracts nodes & properties (bids, dimensions, etc.)
  • 40. Sample Use Cases ● Rebuild entire trees ● Convert SUBDIVISION <-> UNIT ● Update bids
  • 41. Creating a ProductPartitionTree ProductPartitionTree tree = ProductPartitionTree. .createAdGroupTree(adWordsServices, adWordsSession, adGroupId); ProductPartitionNode rootNode = tree.getRoot(); ... Construct a ProductPartitionTree using the static createAdGroupTree method. Get the root ProductPartitionNode from the new tree.
  • 42. Updating a Bid Example tree.getRoot() .getChild(ProductDimensions .createType(ProductDimensionType.PRODUCT_TYPE_L1, "clothing")) .asBiddableUnit() .setBid(bid); List<AdGroupCriterionOperation> operations = tree.getMutateOperations();
  • 43. Convert UNIT to SUBDIVISION
  • 44. Convert UNIT to SUBDIVISION - Cont. ProductPartitionNode shoes = tree.getRoot() .getChild(createType(ProductDimensionType.PRODUCT_TYPE_L1, "shoes")) .asSubdivision(); shoes.addChild(createCanonicalCondition( ProductCanonicalConditionCondition.NEW)) .asBiddableUnit().setBid(1000000L); shoes.addChild(createCanonicalCondition( ProductCanonicalConditionCondition.REFURBISHED)) .asBiddableUnit().setBid(1500000L); shoes.addChild(createCanonicalCondition(null)).asExcludedUnit(); List<AdGroupCriterionOperation> operations = tree.getMutateOperations();
  • 45. Rebuilding a Tree List<AdGroupCriterionOperation> operations = tree.getMutateOperations(); tree.getRoot() .asBiddableUnit() .setBid(bid); tree.getRoot() .removeAllChildren() .asSubdivision() tree.getRoot() .addChild(...); ...
  • 46. Send Us Feedback! We're looking for feedback on this utility. If you use it, we want to hear from you! Check out the guide on github: http://goo.gl/UmN17E
  • 47. Resources ● Shopping Campaigns Guide https://developers.google.com/adwords/api/docs/guides/shopping ● Product Partition Utility Example https://github.com/googleads/googleads-java-lib (see AddProductPartitionTree.java)