Merchant API v1beta was discontinued and shut down on February 28, 2026. For steps to transition to the latest stable version, seeMigrate from v1beta to v1.
A link between your Business Profile and your Merchant Center
account. To create the link, you can use the Merchant Center user
interface or Merchant API (seeLink a Google Business Profile).
Create an omnichannel setting
You can use theomnichannelSettings.createmethod to create an omnichannel
setting. The create method takes anomnichannelSettingresource as input and
returns the created omnichannel setting, if successful.
When creating, you must fill in both theregionCodeand theLsfType:
OmnichannelSetting is on a per-country basis.RegionCodedefines the
targeted country. Once created, you cannot change it.RegionCodeshould
follow the naming rule defined by theCommon Locale Data Repository
(CLDR)project.
LsfTypeis based on your product page. For details, seeLsfType.
You don't have to fill in all the fields at the creation stage, but can
configure them later instead. To update an existingomnichannelSetting, seeUpdate an omnichannel setting.
Here is a sample request if you were to chooseMHLSF_BASICand enrollinStock:
POST https://merchantapi.googleapis.com/accounts/v1/accounts/{ACCOUNT_ID}/omnichannelSettings{"regionCode": "{REGION_CODE}","lsfType: "MHLSF_BASIC","inStock": {"uri":{URI}"}}
Replace the following:
{ACCOUNT_ID}: The unique identifier of your Merchant Center account
{REGION_CODE}: A region code as defined by CLDR
{URI}: A valid URI used for the given review. An ineligible URI may
prevent approval.
After the request runs successfully, you should see the following response:
Enrolling different LIA/FLL features usingomnichannelSettingfields triggers
manual reviews that usually require a couple of hours to a couple of days. We
recommend double-checking your inputs to avoid unnecessary waiting time due to
an ineligible data.
To view your newly-created omnichannel setting or check the state of reviews,
useaccounts.omnichannelSettings.getoraccounts.omnichannelSettings.list,
specifying the country.
Local Store Front (LSF) Type
Based on the product page you plan to use, choose anLsfType:
Product page type
LsfType
Enum value
Product pages with in-store availability
Merchant-Hosted Local Store Front Basic
MHLSF_BASIC
Store-specific product pages with availability and price
Merchant-Hosted Local Store Front Full
MHLSF_FULL
Product pages without in-store availability
Google-Hosted Local Store Front (GHLSF)
GHLSF
If you choose Merchant-hosted local store front types, you also need to fill in
the URI field for at least one ofinStockorpickup.
InStock
You can use InStock to provide more information about your product page.
If you choose Merchant-Hosted LSF types and specify the URI field in InStock,
you're showing your intention to serve products with in-stock availability. We
will start a review based on the provided URI.
If you choose theGHLSFtype, you need to supply an emptyInStockfield in
the request. Unlike Merchant-hosted LSF types, to complete onboarding, you need
to complete theInventory Verificationprocess.
This code sample creates anomnichannelSettingwithGHLSF:
fromexamples.authenticationimportconfigurationfromexamples.authenticationimportgenerate_user_credentialsfromgoogle.shopping.merchant_accounts_v1importCreateOmnichannelSettingRequestfromgoogle.shopping.merchant_accounts_v1importInStockfromgoogle.shopping.merchant_accounts_v1importOmnichannelSettingfromgoogle.shopping.merchant_accounts_v1importOmnichannelSettingsServiceClientdefcreate_omnichannel_setting(account_id:str,region_code:str)->None:"""Creates an omnichannel setting for a given Merchant Center account.Args:account_id: The ID of the Merchant Center account.region_code: The country for which you're creating the setting."""# Gets OAuth Credentials.credentials=generate_user_credentials.main()# Creates a client.client=OmnichannelSettingsServiceClient(credentials=credentials)# The parent account under which to create the setting.parent=f"accounts/{account_id}"# Creates an omnichannel setting with GHLSF type in the given country.omnichannel_setting=OmnichannelSetting()omnichannel_setting.region_code=region_codeomnichannel_setting.lsf_type=OmnichannelSetting.LsfType.GHLSFomnichannel_setting.in_stock=InStock()# Creates the request.request=CreateOmnichannelSettingRequest(parent=parent,omnichannel_setting=omnichannel_setting)# Makes the request and catches and prints any error messages.try:print("Sending create omnichannel setting request:")response=client.create_omnichannel_setting(request=request)print("Inserted Omnichannel Setting below:")print(response)exceptRuntimeErrorase:print("An error has occured: ")print(e)if__name__=="__main__":# The ID of the account to get the omnichannel settings for._ACCOUNT=configuration.Configuration().read_merchant_info()# The country which you're targeting._REGION_CODE="{REGION_CODE}"create_omnichannel_setting(_ACCOUNT,_REGION_CODE)
Apart from in-store availability, you can also enhance your in-store products
with the Pickup feature, which is only eligible for Merchant-hosted LSF types.
When a product is marked for Pickup, it means that a customer can buy it online
and pick it up at the store. By setting thePickupfield, you are showing your
intention to serve products with a pickup SLA. We will start a review based on
the provided URI.
Here is a sample request that creates anomnichannelsetting withPickup:
POST https://merchantapi.googleapis.com/accounts/v1/accounts/{ACCOUNT_ID}/omnichannelSettings{"regionCode": "{REGION_CODE}","lsfType: "MHLSF_BASIC","pickup": {"uri: "{URI}"}}
On display to order
With theon display to orderfeature, you can show products that are displayed in your physical store, but
not available for immediate purchase. For example, large furniture:
Customers who are looking for similar products on Google will see these ads
with the "in-store" annotation in their search results.
Customers who are browsing the store on a Google Search result page will see
these products marked as "Available to order".
They can choose your local inventory ad or free local listing to view the item.
To buy the item, they can visit your physical store, view the item, and then
order it to be shipped to them or shipped to your store for pick up.
About (Germany, Austria and Switzerland)
If you're serving in Austria and Germany and chooseGHLSF, you must submit anAboutpage.
If you're serving in Switzerland, you must submit an "About" page regardless ofLsfType.
Until the About page URL is verified,GHLSFmerchants cannot request manual
inventory verification from Google.
For all merchants in these three countries, the service does not enable the
FLL/LIA features until your About page receives approval.
Inventory Verification
Inventory Verification is only required forGHLSFmerchants. It is not
supported forMHLSFtypes.
Either before or after you add product data and inventory data (either usingaccounts.products.localInventories.insertor the Merchant Center user
interface), you must verify your contact. Provide an inventory verification
contact (name and email address) using thecreateorupdatemethod. The
contact will receive an email sent by Google and the ability to verify their
status by clicking a button in the message.
fromexamples.authenticationimportconfigurationfromexamples.authenticationimportgenerate_user_credentialsfromgoogle.shopping.merchant_accounts_v1importListOmnichannelSettingsRequestfromgoogle.shopping.merchant_accounts_v1importOmnichannelSettingsServiceClientdeflist_omnichannel_settings(account_id:str)->None:"""Lists the omnichannel settings for a given Merchant Center account.Args:account_id: The ID of the Merchant Center account."""# Gets OAuth Credentials.credentials=generate_user_credentials.main()# Creates a client.client=OmnichannelSettingsServiceClient(credentials=credentials)# The parent account for which to list the settings.parent=f"accounts/{account_id}"# Creates the request.request=ListOmnichannelSettingsRequest(parent=parent)# Makes the request and catches and prints any error messages.try:print("Sending list omnichannel setting request:")response=client.list_omnichannel_settings(request=request)count=0# Iterates over all the entries in the response.foromnichannel_settinginresponse:print(omnichannel_setting)count+=1print(f"The following count of elements were returned:{count}")exceptRuntimeErrorase:print("An error has occured: ")print(e)if__name__=="__main__":# The ID of the account to get the omnichannel settings for._ACCOUNT=configuration.Configuration().read_merchant_info()list_omnichannel_settings(_ACCOUNT)
To update the configuration of an existing omnichannel setting use theomnichannelSettings.updatemethod.
To update, you must add the feature you want to the update mask, and fill in the
corresponding fields in theomnichannelSettingfield in the update request.
You can update any of
lsfType
inStock
pickup
odo
about
inventoryVerification
If an attribute is not included in the update mask, it won't be updated.
If an attribute is included in the update mask, but not set in the request, it
will be cleared.
The following code sample demonstrates how to update the inventory verification
field.
fromexamples.authenticationimportconfigurationfromexamples.authenticationimportgenerate_user_credentialsfromgoogle.protobufimportfield_mask_pb2fromgoogle.shopping.merchant_accounts_v1importInventoryVerificationfromgoogle.shopping.merchant_accounts_v1importOmnichannelSettingfromgoogle.shopping.merchant_accounts_v1importOmnichannelSettingsServiceClientfromgoogle.shopping.merchant_accounts_v1import(UpdateOmnichannelSettingRequest,)defupdate_omnichannel_setting(account_id:str,region_code:str,contact:str,email:str)->None:"""Updates an omnichannel setting for a given Merchant Center account.Args:account_id: The ID of the Merchant Center account.region_code: The country for which you're updating the setting.contact: The name of the inventory verification contact.email: The email of the inventory verification contact."""# Gets OAuth Credentials.credentials=generate_user_credentials.main()# Creates a client.client=OmnichannelSettingsServiceClient(credentials=credentials)# The name of the omnichannel setting to update.name=f"accounts/{account_id}/omnichannelSettings/{region_code}"# Creates an omnichannel setting with the updated values.omnichannel_setting=OmnichannelSetting()omnichannel_setting.name=nameomnichannel_setting.inventory_verification=InventoryVerification(contact=contact,contact_email=email)# Creates a field mask to specify which fields to update.field_mask=field_mask_pb2.FieldMask(paths=["inventory_verification"])# Creates the request.request=UpdateOmnichannelSettingRequest(omnichannel_setting=omnichannel_setting,update_mask=field_mask)# Makes the request and catches and prints any error messages.try:print("Sending update omnichannel setting request:")response=client.update_omnichannel_setting(request=request)print("Updated Omnichannel Setting below:")print(response)exceptRuntimeErrorase:print("An error has occured: ")print(e)if__name__=="__main__":# The ID of the account to get the omnichannel settings for._ACCOUNT=configuration.Configuration().read_merchant_info()# The country which you're targeting._REGION_CODE="{REGION_CODE}"# The name of the inventory verification contact you want to update._CONTACT="{NAME}"# The address of the inventory verification email you want to update._EMAIL="{EMAIL}"update_omnichannel_setting(_ACCOUNT,_REGION_CODE,_CONTACT,_EMAIL)
omnichannelSettings.requestInventoryVerificationis only relevant toGHLSFmerchants.
Before you call this RPC, you need to have performed the following:
Upload your product and inventory data.
Verify an inventory verification contact.
For merchants in Austria, Germany or Switzerland, complete anAboutpage review.
To determine your eligibility, callomnichannelSettings.getand checkomnichannelSetting.inventoryVerification.state. If it showsINACTIVE, you're
ready to callomnichannelSettings.requestInventoryVerification.
To check the review status of the LIA onboarding reviews, checkReviewStatefor corresponding attributes ofomnichannelSettingreturned by theomnichannelSettings.getoromnichannelSettings.listmethods.
TheReviewStatefield applies to all the onboarding reviews except the
inventory verification process, and can have the following values:
ACTIVE: It is approved.
FAILED: It is rejected.
RUNNING: It is still under review.
ACTION_REQUIRED: This only exists in theInStock.statefor GHLSF
merchants. It means you need to request inventory verification to make LIA
serve.
InventoryVerification.Statehas the following values:
SUCCEEDED: It is approved.
INACTIVE: You're ready to request inventory verification.
RUNNING: It is under review
SUSPENDED: You have failed inventory verification too many times (usually
5), and need to wait before being able to request it again.
ACTION_REQUIRED: You need to take additional actions before requesting
inventory verification.
Troubleshoot issues related toOmnichannel Settings API
This section describes how to troubleshoot common issues.
Create an omnichannel setting
Make sure to set bothLsfTypeandRegionCode.
If you chooseGHLSF, provide an emptyInStockin the request.
If you choose Merchant-hosted LSF types, provide at least one URI inInStockorPickup.
Update an omnichannel setting
The update method for this resource requires the following additional rules:
You cannot modify the region code.
You cannot make updates while the LIA/FLL feature is running or has been
approved.
When changing from Merchant-hosted LSF types toGHLSF, ifInStockandPickupwere previously configured, you must include them in the update
mask along with theLsfTypeupdate.
For example, if you appliedMHLSF_BASICandPickupbefore and they were
rejected, you are able to switch toGHLSFby sending a request like this:
{ACCOUNT_ID}: The unique identifier of your Merchant Center account
{REGION_CODE}: A region code as defined CLDR
Request inventory verification
If, despite updating the product or inventory feeds and confirming the contact,InventoryVerification.stateis other thanINACTIVE:
For merchants in Austria, Germany, and Switzerland: Ensure that you have
completed an About page review.
There will be a delay of about 48 hours.
In case of Repeated Inventory Check failures (more than five), the service
enforces a thirty-day cooling-down period before allowing another request.
Contact Google Support if you want to request it earlier.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2026-05-26 UTC."],[],[]]