Overview
The Google Local Inventory feed enables retailers to sync product availability, pricing, and fulfillment options across physical store locations directly to Google. This feed powers local inventory ads, in-store pickup options on Google Shopping, and store-specific product information in Google Maps and Search results.
Merchants use this feed to:
- Display accurate stock levels and pricing for each store location.
- Enable customers to see pickup availability before visiting a store.
- Qualify for local inventory ads, which show products available for same-day or next-day pickup.
- Manage store-specific pricing and promotions.
- Integrate loyalty programme discounts into product listings.
The feed works in conjunction with your primary product feed. While your main feed contains product details (title, description, images), the local inventory feed adds location-specific data that tells Google which products are in stock at which stores and under what conditions customers can access them.
Required and Key Fields
The following table lists the core fields used in the Google Local Inventory feed, their requirements, and their impact on listing performance.
| Field | Type | Required | Purpose | Impact |
|---|---|---|---|---|
| id | String | Yes | Product identifier matching your primary feed | Without a valid id, Google cannot link local inventory data to the correct product |
| store_code | String | Yes | Unique identifier for the physical store location | Determines which store the inventory data applies to; must match Google Merchant Centre store setup |
| availability | Enum | Yes | Stock status: in_stock, out_of_stock, or unknown | Controls whether the product appears in local search results and shopping ads |
| pickup_method | Enum | Conditional | How customers collect the product: buy_online_pickup_in_store, in_store_only, or curbside | Required if you want to enable local inventory ads; missing data disqualifies listings from pickup-specific campaigns |
| pickup_sla | String | Conditional | Time window for pickup availability (e.g., same_day, next_day) | Affects ad eligibility and customer expectations; inaccurate SLAs damage trust and increase returns |
| price | Decimal | Yes | Current product price at this store location | Must match or exceed the primary feed price; mismatches trigger disapproval |
| sale_price | Decimal | Conditional | Discounted price if currently on promotion | Used for local deals and promotional ads; increases click-through rates when correctly configured |
| sale_price_effective_date | String | Conditional | Date range when the sale_price applies (ISO 8601 format) | Required if sale_price is provided; feeds without valid dates cause price validation errors |
| quantity | Integer | No | Number of units available at this store | Informational; does not affect ad eligibility but helps customers understand stock depth |
| pickup_cost | Decimal | No | Fee charged for in-store pickup service | When set to 0, indicates free pickup; omit entirely if no pickup fee applies |
| local_shipping_label | String | No | Custom label for local delivery options | Helps differentiate delivery methods in customer-facing messaging |
| loyalty_program | String | No | Loyalty programme code or identifier for store-specific member pricing | Enables loyalty-exclusive pricing and improves relevance for programme members |
Field Definitions and Configuration
id
The id field must match the product id from your primary product feed exactly. Google uses this identifier to correlate local inventory records with product data. If the id does not exist in your primary feed, the local inventory entry is rejected and does not update any listings.
Example: SKU-12345 or GTIN-9780123456789.
store_code
The store_code is a unique identifier for each physical retail location. This code must be created and registered in your Google Merchant Centre account first. You cannot invent store codes in the feed; they must match existing store records.
Common formats include store numbers (e.g., STORE-001), postal codes combined with identifiers (e.g., LONDON-W1A-1AA-001), or internal location codes. Choose a format that is consistent across all feeds and systems.
Each product can appear in the feed multiple times, once per store where it is available. A single SKU might have entries for store_code values of STORE-001, STORE-002, and STORE-003, each with its own availability, pricing, and pickup options.
availability
The availability field indicates whether the product is in stock at the specified store location. Accepted values are:
in_stock: Product is available for purchase or pickup at this location.out_of_stock: Product is not currently available.unknown: Stock status cannot be determined (use sparingly; Google prefers definitive values).
Google uses this field to decide whether to show the product in local search results and shopping ads. Out-of-stock products are hidden from most surfaces unless the customer explicitly searches for that product by name. Listings with unknown availability are deprioritised.
Updating availability frequently is critical for performance. If a product sells out but the feed still shows in_stock, customers will arrive at the store expecting to find the item, resulting in disappointment and low quality scores.
pickup_method
The pickup_method field specifies how customers can obtain the product at this store. Valid values are:
buy_online_pickup_in_store: Customer orders online and collects from the store.in_store_only: Product is available only for in-store purchase; no online ordering or pickup.curbside: Customer can collect from the store without entering (available during restricted hours or as a convenience option).
This field is required to enable local inventory ads. Without it, your product cannot qualify for campaigns that highlight pickup availability. If you offer multiple methods at the same store, submit separate feed entries for each method, or choose the primary method customers use most frequently.
pickup_sla
The pickup_sla field defines the time window within which a customer can collect a product after placing an online order. Common values are:
same_day: Available for pickup the same day the order is placed.next_day: Available for pickup the next business day.2-3 days: Available within 2-3 business days.
Google uses this to set customer expectations and to filter ads. A customer searching for a product late on a Friday evening will not see a product if the only available SLA is same_day. Inaccurate SLAs damage customer satisfaction and increase cancellations.
Format the value as a plain string or use ISO 8601 duration notation (e.g., PT24H for 24 hours) if your system supports it. Check Google's documentation for your specific feed type to confirm accepted formats.
price and sale_price
The price field is the current standard retail price at this store location. The sale_price field is the discounted price if the product is currently on promotion.
Both values must be provided as decimal numbers in the store's local currency (typically GBP for UK retailers). Do not include currency symbols in the field value; currency is determined by your Merchant Centre account settings.
Price validation rules:
- The price value must be present and greater than zero.
- The sale_price, if provided, must be less than the price value.
- If price and sale_price are identical, the sale_price is ignored and the product is not marked as discounted.
- Prices at the local store location can differ from prices in your primary feed, but significant variations (e.g., a 50% difference) may trigger manual review.
Use sale_price to highlight temporary promotions, clearance items, or loyalty member pricing. Correctly configured sale prices increase click-through rates and conversion, as customers see the discount immediately in search results.
sale_price_effective_date
This field defines the date range during which the sale_price applies. Format the value as YYYY-MM-DD/YYYY-MM-DD (start date slash end date) or use ISO 8601 format with times.
Example: 2024-01-15/2024-01-31 indicates the sale price is active from 15 January 2024 to 31 January 2024 inclusive.
If you provide a sale_price without a sale_price_effective_date, Google will assume the discount is permanent and may flag the feed as inconsistent when the date passes. Always pair sale_price with a valid date range.
For ongoing or indefinite promotions, you can omit the end date or set it far in the future. However, Google recommends updating the feed when promotions end rather than leaving expired dates in the system.
quantity
The quantity field indicates the number of units available at the store. This is informational and does not affect ad eligibility or visibility.
Use quantity to give customers a sense of stock depth. A product showing quantity: 1 suggests scarcity, which may encourage faster purchase decisions. A product showing quantity: 50 suggests abundant stock.
If you do not have accurate quantity data, omit this field. Do not use quantity as a proxy for availability; use the availability field for that purpose.
pickup_cost
The pickup_cost field specifies any fee charged to customers for in-store pickup. Express the value as a decimal in the store's local currency.
If pickup is free, set pickup_cost to 0. If you do not charge a pickup fee, omit this field entirely rather than including a zero value, as some systems interpret the presence of the field as indicating a fee applies.
Pickup costs are displayed in local inventory ads and on product pages. High pickup fees can deter customers; consider whether the fee is necessary or whether waiving it during promotional periods increases overall conversion.
local_shipping_label
The local_shipping_label field is a custom text label that describes local delivery or fulfillment options. This label appears in search results and on product pages to help customers understand how they can receive the product.
Examples:
Free next-day deliveryClick and collect availableSame-day delivery in central London
Keep labels concise (under 50 characters) and customer-friendly. Avoid internal jargon or technical terms. This field is optional; use it only if you want to highlight a specific fulfillment advantage.
loyalty_program
The loyalty_program field links a product to a loyalty programme, enabling loyalty-exclusive pricing or offers. Provide the loyalty programme identifier or code as it is registered in your Merchant Centre account.
When this field is populated, Google can display member-specific pricing or badges next to the product in search results, provided the customer is logged into their Google account and is a member of the linked programme.
Example: If you run a "Premium Plus" membership programme and offer member-only discounts on certain products, set loyalty_program to premium_plus for those products. Google will show the discounted price to members and the standard price to non-members.
This field is optional but valuable for driving loyalty programme sign-ups and repeat purchases.
Setup and Configuration Workflow
Follow these steps to configure and deploy a Google Local Inventory feed.
-
Register store locations in Google Merchant Centre. Each physical store must have a unique store_code and be registered in your Merchant Centre account under the Business Information section. Verify store addresses and contact information.
-
Prepare your primary product feed. Ensure your main product feed (on Google Shopping or another channel) is approved and active. The local inventory feed references products by id, so all products must exist in your primary feed first.
-
Create the local inventory feed file. Use CSV, XML, or JSON format depending on your platform and system capabilities. Structure the file with columns or fields matching the field names listed above.
-
Populate required fields for each product-store combination. At minimum, include id, store_code, availability, pickup_method, and price. Add optional fields (sale_price, pickup_sla, loyalty_program) as your data systems support them.
-
Validate the feed against Google's schema. Use the Merchant Centre Feed Diagnostics tool to check for errors, missing required fields, and data type mismatches. Correct any validation errors before uploading.
-
Upload the feed to Google Merchant Centre. Use the Data Sources section to create a new local inventory data source and upload your feed file. Choose automatic daily updates if your inventory changes frequently, or manual uploads if changes are infrequent.
-
Monitor feed status and performance. Check the Merchant Centre dashboard for feed errors, warnings, and disapprovals. Review the Diagnostics tab for specific issues affecting individual products or stores.
-
Test local inventory ads. Create a local inventory ad campaign in Google Ads and verify that products appear with correct pricing, availability, and pickup options. Run a small test campaign before scaling.
-
Optimise based on performance data. Monitor click-through rates, conversion rates, and customer feedback. Adjust pricing, pickup SLAs, and promotional dates to improve performance.
Practical Optimisation Tips
Inventory Synchronisation
Update the feed as frequently as your inventory system allows. Real-time or hourly updates are ideal for high-velocity products or stores with rapid stock turnover. If daily updates are your maximum, schedule them during off-peak hours (e.g., early morning) to avoid serving stale data during peak shopping times.
Use a feed management platform or API integration to automate updates. Manual CSV uploads are error-prone and difficult to maintain at scale.
Price Consistency
Ensure prices in the local inventory feed match prices in your primary product feed, or document and justify any differences. Large price gaps trigger manual review and can result in feed disapprovals.
If you offer store-specific pricing (e.g., a product costs £10 in London stores but £12 in regional stores), this is acceptable; document the reason and ensure the local inventory feed reflects the actual price customers will pay at each location.
Pickup Availability and SLAs
Be conservative with pickup SLAs. If you promise same-day pickup but frequently fail to fulfil orders on time, customer satisfaction and quality scores will suffer. Use next-day or 2-3 day SLAs if same-day pickup is not reliably achievable.
Update pickup_sla values if your fulfillment capacity changes seasonally. For example, during peak shopping periods (November, December), you may need to extend SLAs from same-day to next-day.
Sale Price Scheduling
Always pair sale_price with sale_price_effective_date. Set the end date to the exact date the promotion ends, not a day later. Google's systems process feeds at specific times; if a promotion is set to end on 31 January but the feed is not updated until 01 February, the sale price may still be visible to some customers.
For recurring promotions (e.g., weekend sales), create separate feed entries for each promotion period rather than leaving a permanent sale price in the system.
Store Code Consistency
Use identical store_code values across all your feeds and systems. If your Google Merchant Centre store is registered as LONDON-OXFORD-ST-001 but your local inventory feed uses OXFORD-ST-1, the data will not link correctly and inventory updates will fail.
Maintain a master list of store codes and share it with all teams responsible for feed management, inventory systems, and customer service.
Loyalty Programme Integration
Link products to loyalty programmes only if you have member-exclusive pricing or offers for those products. Incorrectly linking products to loyalty programmes can confuse customers and reduce conversion rates for non-members.
Test loyalty programme links with test accounts before deploying to production. Verify that member pricing displays correctly and that non-members see standard pricing.
Feed Format and Submission
Google Local Inventory feeds can be submitted in CSV, XML, or JSON format. Choose the format that integrates most easily with your existing systems.
CSV format is simple and widely supported; use this if you are exporting from a spreadsheet or database system. XML and JSON formats offer more flexibility for nested data and are preferred for API-based integrations.
Submit the feed via:
- Manual upload in Merchant Centre (suitable for small, infrequent updates).
- Automated daily uploads via SFTP or cloud storage (suitable for larger feeds with frequent changes).
- API integration (suitable for real-time updates and large-scale operations).
Google recommends automated submission for feeds with more than a few thousand products or stores.
Monitoring and Diagnostics
Regularly review the Merchant Centre Feed Diagnostics dashboard to identify issues:
- Missing required fields: Listings with missing id, store_code, availability, or pickup_method are rejected.
- Invalid data types: Prices must be decimals, dates must be ISO 8601 format, enums must match allowed values.
- Mismatched product IDs: If an id in the local inventory feed does not exist in your primary feed, the entry is ignored.
- Store code errors: If a store_code is not registered in Merchant Centre, the entry is rejected.
- Price validation: If sale_price is greater than or equal to price, the entry may be flagged.
Set up alerts in Merchant Centre to notify you of critical errors. Address errors within 24 hours to minimise the impact on listing visibility.
Conclusion
The Google Local Inventory feed is essential for retailers operating multiple store locations. By accurately configuring store codes, availability, pricing, and pickup options, you enable customers to find products in nearby stores and choose convenient fulfillment methods. This drives foot traffic, increases conversion rates, and improves overall customer satisfaction.
Prioritise data accuracy and timeliness. Automate feed updates where possible, monitor diagnostics regularly, and test changes in a small campaign before rolling out to all stores. Over time, optimising your local inventory data will result in higher-quality listings, better ad performance, and stronger local search visibility.