3. Agenda
● Quick Feed Concepts Review
● What's New
● Location Feeds Deep Dive
● Reporting
● Best Practices
4. Google Inc. - All Rights Reserved
Feed Concepts
A Quick Review
5. Google Inc. - All Rights Reserved
Feed● Account-level table
● Collection of mutable rows
● Data provider for ad extensions
What is a Feed?
Attr1 Attr2 Attr3
Item1 Val1 Val2 Val3
Item2 Val4 Val5 Val6
6. Google Inc. - All Rights Reserved
All of the Pieces
Data Extension Type Ad Extensions
CustomerFeed
feedId
placeholderTypes
matchingFunction
7. Google Inc. - All Rights Reserved
Creating New Feeds
To do this... …call this... ...with these!
Create FeedService Feed
FeedAttribute
Populate FeedItemService FeedItem
FeedItemAttribute
Map Attributes FeedMappingService FeedMapping
Map Items CustomerFeedService
CampaignFeedService
AdGroupFeedService
CustomerFeed
CampaignFeed
AdGroupFeed
9. Google Inc. - All Rights Reserved
● Feed name uniqueness
● Call extensions
○ Say goodbye to CONVERSION DURATION THRESHOLD
○ Say hello to AdCallMetricsConversion
● CustomerFeedService
● Three new types of feeds:
○ App
○ Review
○ Location
The Latest Happenings in the World of
Feeds
10. Google Inc. - All Rights Reserved
● Attempting to add a new Feed with the
same name as an existing ACTIVE feed will
fail with a FeedError
● Existing duplicate Feeds will be renamed
automatically
● AdWords won't touch duplicates fixed
before this change
● Make sure your application can handle the
name changes
See our recent blog post for details.
Feed Name Uniqueness
11. Google Inc. - All Rights Reserved
CONVERSION
DURATION
THRESHOLD
Call Extension Changes
AdCallMetrics
Conversion
As announced in a recent blog post:
12. Google Inc. - All Rights Reserved
● Create an AdCallMetricsConversion with the proper
phoneCallDuration value (in seconds)
● Add a new FeedAttribute for CONVERSION TYPE ID
● Populate the new attribute on your call extension
FeedItems with the ID of the AdCallMetricsConversion
● Replace the existing FeedMapping with one with:
● an AttributeFieldMapping for CONVERSION TYPE ID added
● the AttributeFieldMapping for CALL DURATION THRESHOLD
removed
Using an AdCallMetricsConversion
13. Google Inc. - All Rights Reserved
● AdWords API v201402 includes a new
CustomerFeedService, as well as a new
CustomerFeed type
● CustomerFeeds are the same as CampaignFeeds and
AdGroupFeeds -- they're just defined at the AdWords
account level
● Can be used with App, Location and Review Extensions
New Service: CustomerFeedService
14. Google Inc. - All Rights Reserved
A CustomerFeed is:
● Required for Location feeds (more on that in a minute)
● Optional for App and Review feeds
A CustomerFeed simply adds a new level where you
can define the mapping from feed items to extension
types.
● The most specific mapping (rightmost) "wins":
CustomerFeed -> CampaignFeed -> AdGroupFeed
New Type: CustomerFeed
15. Google Inc. - All Rights Reserved
Customer/Campaign/AdGroupFeeds
CustomerFeed
Campaign A
CampaignFeed
Campaign B
AdGroup A1
AdGroupFeed
AdGroup B1 AdGroup B2
Customer/Account
16. Google Inc. - All Rights Reserved
● Displays a link in your ad that points to your mobile app.
● Only applicable for Mobile & Tablet devices
App Extensions
17. Google Inc. - All Rights Reserved
App Extension Fields
ID Field Data Type Notes
1 STORE INT64 1 for iTunes
2 for Google Play
2 ID STRING Store-specific ID
3 LINK TEXT STRING Text for the destination URL
4 URL URL Destination URL
18. Google Inc. - All Rights Reserved
● Show accolades from reputable third parties in your ad.
● Review text is one of:
Exact Paraphrased
Review Extensions
19. Google Inc. - All Rights Reserved
Review Extension Fields
ID Field Data Type Notes
1 TEXT STRING Exact quote or paraphrase from a
third-party source
2 SOURCE NAME STRING Name of the third-party publisher
3 SOURCE URL URL Landing page of the third-party
website of the review
4 TEXT EXACTLY
QUOTED
BOOLEAN true for exact quote
false for paraphrased
20. Google Inc. - All Rights Reserved
Location Feeds Deep Dive
21. Google Inc. - All Rights Reserved
● Show locations from your Google Places for Business
account
● Set it and forget it - AdWords keeps itself in sync with
Places automatically
● Only supports Places locations - no manually entered
addresses
Location Extensions
22. Google Inc. - All Rights Reserved
1. The Feed needs its systemFeedGenerationData set
to a PlacesLocationFeedData object
2. Set the Feed's origin to ADWORDS.
3. AdWords handles many aspects for you
● Creates the FeedAttributes for the feed (do not specify these
in your mutate ADD operation)
● Creates a FeedMapping
● Creates and maintains the FeedItems
4. You must create a CustomerFeed
Key Differences vs. Other Extension Types
23. Google Inc. - All Rights Reserved
The PlacesLocationFeedData object associates your
AdWords feed with a Google Places for Business account.
You'll need the following:
● Email address of the owner of the Google Places for
Business account (this identifies the account)
● An OAuth2 access token for the Places scope
● You can use the OAuth2 Playground to generate the access
token
Creating the Feed
24. Google Inc. - All Rights Reserved
Creating the PlacesLocationFeedData
Field Sample
emailAddress placesowner@gmail.com
businessNameFilter* "Ads Developers Restaurant and Bar"
categoryFilters* { "Restaurant or Cafe", "Food and Drink" }
oAuthInfo
Field Sample
httpMethod GET
httpRequestUrl https://www.google.com/local/add
httpAuthorizationHeader Bearer ya29.1.A12xY_ABCdefGHIjkl-MNOpqrSTUVW...
* Optional field
25. HTML
Google Inc. - All Rights Reserved
CustomerFeed - Using IDENTITY
<matchingFunction>
<operator>IDENTITY</operator>
<lhsOperand>
<FunctionArgumentOperand.Type>ConstantOperand
</FunctionArgumentOperand.Type>
<type>BOOLEAN</type>
<booleanValue>true</booleanValue>
</lhsOperand>
</matchingFunction>
<status>ACTIVE</status>
See the AddPlacesLocationExtensions example
Use the IDENTITY operator to define a matching function
that always evaluates to TRUE and has no rhsOperand
26. Google Inc. - All Rights Reserved
As with other feed-based extensions, you have the option
of creating CampaignFeeds or AdGroupFeeds to further
refine the location selection at the Campaign or AdGroup
level. Keep in mind:
● CustomerFeed is required -- this is unique to location
extensions
● Since FeedItems are automatically created and
managed by AdWords, your matchingFunction
should use the BUSINESS NAME and CATEGORIES
placeholder fields, not FeedItem IDs
Refine Selection for Campaigns or AdGroups
27. HTML
Google Inc. - All Rights Reserved
Selecting Feed Items
<matchingFunction>
<operator>EQUALS</operator>
<lhsOperand>
<FunctionArgumentOperand.Type>FeedAttributeOperand
</FunctionArgumentOperand.Type>
<feedId>12345678</feedId>
<feedAttributeId>1</feedAttributeId>
</lhsOperand>
<rhsOperand>
<FunctionArgumentOperand.Type>ConstantOperand
</FunctionArgumentOperand.Type>
<type>STRING</type>
<stringValue>Ads Developers Music Shop</stringValue>
</rhsOperand>
</matchingFunction>
29. Google Inc. - All Rights Reserved
Feed-based Reporting
Non-upgraded location extensions Ad Extensions Performance Report
Everything else:
● Sitelink
● App
● Call
● Locations (Google Places)
● Review
Placeholder Feed Items Report
30. Google Inc. - All Rights Reserved
● FeedItem-level statistics
● Use IsSelfAction = 'This
extension' to limit to clicks for each
FeedItem
● If not filtering by IsSelfAction, then
clicks and impressions may be
counted more than once
Placeholder Feed Item Report
32. Google Inc. - All Rights Reserved
● Each ad extension type has a default pre-built Feed
○ Main sitelink feed
○ Main app feed
○ Main phone number feed
○ Main location feed
○ Main review feed
● Feed.origin ⇒ ADWORDS
● FeedAttributes (schema) are immutable
Using Built-in ADWORDS Feeds
33. Google Inc. - All Rights Reserved
● Displayed in a dropdown alongside built-in Feeds
● Can only be created via the API
● Feed.origin ⇒ USER
● FeedAttributes (schema) are appendable
Using User Defined Feeds
34. HTML
Google Inc. - All Rights Reserved
Disabling Feeds for a Campaign or AdGroup
<feedId>12345678</feedId> <!-- ID of the 'Main sitelink feed' -->
<matchingFunction>
<operator>IDENTITY</operator>
<lhsOperand>
<FunctionArgumentOperand.
Type>ConstantOperand</FunctionArgumentOperand.Type>
<type>BOOLEAN</type>
<booleanValue>false</booleanValue>
</lhsOperand>
</matchingFunction>
<status>ACTIVE</status>
Use the IDENTITY operator to define a matching function
that always evaluates to FALSE and has no rhsOperand
35. Google Inc. - All Rights Reserved
● Regardless of placeholder type, you can only have ONE:
○ CustomerFeed per Customer + Feed
○ CampaignFeed per Campaign + Feed
○ AdGroupFeed per AdGroup + Feed
● Don't send existing FeedAttributes in SET FeedOperations
● No validation on FeedItemIds in matchingFunctions
● Maximum of 20 ACTIVE Feeds per account
○ Including built-in ADWORDS feeds
Feed Trivia Part One
36. Google Inc. - All Rights Reserved
● CustomerFeed is not used for sitelink or call extensions
● CustomerFeed is required for location extensions but is
optional for app and review extensions
● Delete feeds in the following order:
○ CustomerFeed / CampaignFeed / AdGroupFeed
○ FeedMapping
○ FeedItems
○ Feed
● Disable an extension type at the Campaign or AdGroup
level with a matching function that always returns false
Feed Trivia Part Two
37. Google Inc. - All Rights Reserved
Resources
Guide & Reference
https://developers.google.com/adwords/api/docs/guides/feed-services
https://developers.google.com/adwords/api/docs/guides/feed-services-locations
https://developers.google.com/adwords/api/docs/appendix/placeholders
https://developers.google.com/adwords/api/docs/appendix/feed-errors