Profile feed

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

  1. Constraints. Each business (feed item) within a feed must have a unique ID.

  2. Limits. LSA imposes size limits on individual data fields, specified in the table below.

  3. Constraints on Business name

    1. Maximum length: 100 characters, including spaces
    2. Requires at least one number or letter
    3. Supported letter encodings are UTF-8, UTF-16 and UTF-32 (recommended UTF-8)
    4. Special characters allowed:
      1. Hyphen -, Ampersand &, Period ., Comma ,, Apostrophe ', Parentheses ( )
    5. Disallow ALL CAPS
    6. Disallow offensive words
    7. 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.