Profile feed semantics
As mentioned in the feed category definitions, the semantics of a snapshot feed are the following actions:
- For any provider in a snapshot feed, if the provider currently doesn’t exist in the LSA provider database, then a new profile will be created.
- For any provider in a snapshot feed, if the provider currently exists in the LSA provider database, then the profile information will be updated.
- For any provider not in a snapshot feed, if the provider currently exists in the LSA provider database, the profile will be deleted.
The semantics of an incremental feed result in the following actions:
- For any provider in an incremental feed, if the provider currently doesn’t exist in the LSA provider database, it is a no-op.
- For any provider in an incremental feed, if the provider currently exists in the LSA provider database, then the profile information will be updated.
- For any provider not in an incremental feed, it is a no-op.
Error handling on profiles
If an individual profile feed item is invalid, then we won’t update that feed item in the LSA database, and meanwhile we will pause this item to avoid serving stale data.
If a profile feed is invalid (e.g. not compliant with the schema), we will stop processing the entire feed. We will share a report that includes a summary of feeds processing result (e.g. errors, processing status for each item etc).
Protocol and constraints
Constraints. Each business (feed item) within a feed must have a unique ID.
Limits. LSA imposes size limits on individual data fields, specified in the table below.
Constraints on Business name
- Maximum length: 100 characters, including spaces
- Requires at least one number or letter
- Supported letter encodings are UTF-8, UTF-16 and UTF-32 (recommended UTF-8)
- Special characters allowed:
- Hyphen
-
, Ampersand&
, Period.
, Comma,
, Apostrophe'
, Parentheses(
)
- Hyphen
- Disallow ALL CAPS
- Disallow offensive words
- Disallow emoji
Profile fields
The following describes the set fields for a given provider. Fields that are optional are marked as such.
Field Name | Description | Field Type | Example | Required | Constraints |
---|---|---|---|---|---|
serviceProviderId | Unique identifier of a business listing (a service provider) | number | 12345 | Yes | This is a unique ID for each service provider. This will be converted into an int64. Keep ID the same when updating a provider |
serviceProviderName | Business name | string | "King David Garage Doors, Inc." | Yes | Maximum of 100 characters. Subject to name constraints policy. |
serviceProviderWebsiteUrl | Business website url | string | https://abc.xyz | No | Start with http or https |
address | Business address | object | "addressLine1":"847 Oliver Avenue", "city":"Valley Stream", "region":"NY", "postalCode":"11581", "country": "US" | Yes | addressLine1 must be populated with the street address when available. Country code cannot be changed after initial business set up. |
aggregatorProfileUrl | Profile url that links to the profile page on the partner’s site. | string | http://aggregator.com/joes-plumbing/ | No | Start with http or https |
yearBusinessStarted | Founding year of the business | integer | 2015 | No | YYYY format |
businessHours | Hours during which business is open | Array of Object | See “Profile Feed Example”. | Yes | See object definition for constraints |
businessPhoneNumber | Individual business phone number in e164 format, should be either empty or owned by the business, instead of a call-center number or partner allocated tracking number. | string | “+16501112222” | Yes | Phone number must be in E.164 format |
contact | contact information used for various contact methods | Array of object | "{ “type”: “PHONE”, “address”: “+16501112222” }" | Yes | Type may consist of “PHONE” or “MESSAGE”. For type “PHONE”, address must contain an E.164 formatted phone number. For “MESSAGE” address must not populated. Element with PHONE type is required, but element with MESSAGE type is optional. |
targetingLanguages | A list of languages the ad will be served in. Languages are defined in ISO 639-1 language code (lowercase, 2-letter). | Array of string | “en”, “fr” | Yes | If not provided, defaults to “en”. |
geoCovered | Geo served by the business. | object | No | ||
geoCovered ->criteriaIds | A list of criteria ids that correspond to the areas (region, county, city, postal code) served. | Array of integer | No | Geo criterion id must be valid in Google Ads geographical targets list. | |
categories | A list of categories served by the business. | Array of object | See “Profile Feed Example”. | Yes | To be selected from Google provided list of categories. This should contain exactly one category. |
categories->tasks | A list of tasks served in a given category. | Array of object | Yes | To be selected from Google provided list of tasks | |
tasks ->geoCovered | Geo served by the task | object | Yes | ||
tasks ->geoCovered->postalCodeCriteriaIds | A list of criteria ids that correspond to postal codes served.. | Array of string | Geo criterion id of a list of postal codes served, criterion id must be valid in Google Ads geographical targets list with target Type PostalCode | ||
tasks ->geoCovered->cityCriteriaIds | A list of criteria ids that correspond to cities served. | Array of string | Geo criterion id of a list of city served, criterion id must be valid in Google Ads geographical targets list with target Type City) | ||
active | Flag indicating if this business should be active or paused | boolean | true/false | Yes | |
monthlyBudget | Monthly budget of this provider in monthlyBudgetCurrency | integer | 100 | Yes | Must be greater than or equal to the max of bid or lead reserve price. |
monthlyBudgetCurrency | Currency of monthly budget and bids. See Currency Codes. | string | “USD” | Yes | Cannot be changed after initial business set up. |
callouts | An array of callouts for each category | Array of object | Yes | To be selected from Google provided list of callouts | |
biddingStrategy | Bidding Strategy for this business for auction. Affects price per lead. | string | “MANUAL_CPA” / “MAX_CONVERSION” | No | To be selected from Google provided list . If not set, this strategy will default to MANUAL_CPA. |
biddingConfiguration | A list of bidding configurations per category. Applicable to only MANUAL_CPA bidding strategy. | Array of object | See Profile feed example | N | If no configuration is provided and biddingStrategy is MANUAL_CPA, default every category to the minimum bid. |
biddingConfiguration->categoryId | Category Id in LSA taxonomy. These categories should match the categories listed above. Required if bidding configuration is declared. | string | No | To be selected from Google provided list. | |
biddingConfiguration->manualCostPerLead | Manual cost per lead configuration. Should be provided if biddingStrategy is “MANUAL_CPA”. | object | No | ||
manualCostPerLead->bid | Manual cost per lead bid. The lead price will never exceed the value of this bid. Required if manualCostPerLead is declared. | number | No | Must be greater than or equal to reserve price. |