Shopping Campaigns

Post on 15-Jul-2015

1.410 views 1 download

Tags:

Transcript of Shopping Campaigns

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/online: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 = newProductBiddingCategory();

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 Examplehttps://github.com/googleads/googleads-java-lib (see

AddProductPartitionTree.java)