shopping campaigns

47
Shopping Campaigns Adam Ohren

Upload: supergigas

Post on 15-Jul-2015

1.413 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Shopping Campaigns

Shopping Campaigns

Adam Ohren

Page 2: Shopping Campaigns

Agenda

● Google Shopping & Merchant Center

● Content API for Shopping

● AdWords Shopping Campaigns

● Product Partition Trees

● Local Inventory Ads

● Product Partition Utility

Page 3: Shopping Campaigns

Google Shopping & Merchant Center

Page 4: Shopping Campaigns

Google Shopping

Page 5: Shopping Campaigns

Merchant Center

● View products, but not edit

● Manage account and subaccounts

● Data quality and disapproval information

● Link to AdWords accounts

● Tax and delivery settings

Page 6: Shopping Campaigns

Multi-client Accounts

● Analogous to AdWords MCCs

● Allows merchants to manage many sub-accounts

Page 7: Shopping Campaigns

Data Feeds

● CSV, XML, Google Sheets with product data

● Fetched manually or on a schedule

Page 8: Shopping Campaigns

Content API for Shopping

Page 9: Shopping Campaigns

Content API

● Manage products, data feeds, users,

accounts

● Can make updates throughout the day

● Instant feedback on some data issues

Page 10: Shopping Campaigns

Content API Example

POST /content/v2/YOUR_MERCHANT_ID/inventory/online/products/online:en:GB:book123

{

"price": {

"value": "3.99",

"currency": "USD"

}

}

Updating a product’s price:

Page 11: Shopping Campaigns

Content API for Shopping

https://developers.google.com/shopping-content/

Page 12: Shopping Campaigns

AdWords Shopping Campaigns

Page 13: Shopping Campaigns

Shopping Campaigns

Page 14: Shopping Campaigns

Shopping Campaigns

● Connects a linked Merchant Center to

AdWords campaign

● Enables Product Listing Ads (PLAs)

● Manages bids based on product hierarchy

Page 15: Shopping Campaigns

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

Page 16: Shopping Campaigns

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});

Page 17: Shopping Campaigns

Product Partition Trees

Page 18: Shopping Campaigns

Product Partitions

Inventory is partitioned by various Product Dimensions

Page 19: Shopping Campaigns

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

Page 20: Shopping Campaigns

Product Dimensions

Category ProductBiddingCategory

Brand ProductBrand

Item ID ProductOfferId

Condition ProductCanonicalCondition

Product type ProductType

Custom labels ProductCustomAttribute

Channel ProductChannel

Channel exclusivity ProductChannelExclusivity

Page 21: Shopping Campaigns

Product Partitions

Page 22: Shopping Campaigns

Product Partitions

Page 23: Shopping Campaigns

Product Partitions

Page 24: Shopping Campaigns

ProductPartition root = new ProductPartition();root.setPartitionType(ProductPartitionType.SUBDIVISION);root.setId(-1);

Product Partitions

Root is a subdivision. It has no value and no parent.

Page 25: Shopping Campaigns

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.

Page 26: Shopping Campaigns

ProductBrand otherBrand = new ProductBrand();

ProductBiddingCategory otherCat = newProductBiddingCategory();

otherCat.setType(ProductDimensionType.BIDDING_CATEGORY_L1);

Product Partitions

To create an Other node, use a dimension with no value

Page 27: Shopping Campaigns

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

Page 28: Shopping Campaigns

Local Inventory Ads

Page 29: Shopping Campaigns

Local Inventory Ads

Easily make in-store products available in shopping campaigns

Page 30: 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

Page 31: Shopping Campaigns

Enable Local Inventory Ads

● Opt-in campaigns to serve local information

Page 32: Shopping Campaigns

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});

Page 33: Shopping Campaigns

Campaign-level Filters

● Use inventory filters to include / exclude products based on channel dimensions

Page 34: Shopping Campaigns

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});

Page 35: Shopping Campaigns

Product Tree Dimensions

● Segment product tree by Channel & ChannelExclusivity

Page 36: Shopping Campaigns

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());

Page 37: Shopping Campaigns

Product Partition Utility

Page 38: Shopping Campaigns

Product Partition Utility

● Client-side extension that simplifies

creating, mutating, and removing

ProductPartitions

● Added in v201409

● Java client library only

Page 39: Shopping Campaigns

Product Partition Utility

● ProductPartitionTree API○ Abstracts tree handling

● ProductPartitionNode API○ Abstracts nodes & properties (bids, dimensions, etc.)

Page 40: Shopping Campaigns

Sample Use Cases

● Rebuild entire trees

● Convert SUBDIVISION <-> UNIT

● Update bids

Page 41: Shopping Campaigns

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.

Page 42: Shopping Campaigns

Updating a Bid Example

tree.getRoot()

.getChild(ProductDimensions

.createType(ProductDimensionType.PRODUCT_TYPE_L1, "clothing"))

.asBiddableUnit()

.setBid(bid);

List<AdGroupCriterionOperation> operations = tree.getMutateOperations();

Page 43: Shopping Campaigns

Convert UNIT to SUBDIVISION

Page 44: Shopping Campaigns

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();

Page 45: Shopping Campaigns

Rebuilding a Tree

List<AdGroupCriterionOperation> operations = tree.getMutateOperations();

tree.getRoot()

.asBiddableUnit()

.setBid(bid);

tree.getRoot()

.removeAllChildren()

.asSubdivision()

tree.getRoot()

.addChild(...);

...

Page 46: Shopping Campaigns

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

Page 47: Shopping Campaigns

Resources● Shopping Campaigns Guide

https://developers.google.com/adwords/api/docs/guides/shopping

● Product Partition Utility Examplehttps://github.com/googleads/googleads-java-lib (see

AddProductPartitionTree.java)