Local inventory ads: showing in-store stock on Google
How local inventory ads work for merchants with physical stores, local feeds, store pages, how in-store availability appears on Google, and when LIA is worth the setup.
Local inventory ads (LIA) let a shopper searching on Google see that a product is in stock at your shop down the road, not just orderable online. They run on the same Merchant Center account as your Shopping ads, but add two extra feeds (stores and per-store inventory) and a verification step. The setup is real work, so the honest question is whether your footfall economics justify it, this guide covers how it works and how to decide.
What local inventory ads actually do
A standard Shopping ad says "this merchant sells this product online". A local inventory ad says something more specific and, for the right shopper, far more useful: "this product is in stock at a shop 1.2 miles from you, at this price, and you can pick it up today."
When a shopper searches with local intent (on a phone, near your store, often with "near me" phrasing), Google can serve your LIA instead of (or alongside) your online Shopping ad. Clicking it typically lands on a store page showing the item's in-store availability, the shop's address and hours, and directions. The same local data also powers free local listings on the Shopping tab and surfaces in Google Maps.
Everything runs through the Merchant Center account you already have: LIA is a programme you enable on top of Shopping, not a parallel system. If you're new to how listings serve in the first place, start with how Shopping listings work.
The moving parts
LIA adds three components to a standard Shopping setup:
| Component | What it is | Where it lives |
|---|---|---|
| Business Profile link | Your verified shop locations, linked to Merchant Center | Google Business Profile |
| Stores feed | One row per physical location: store code, address, hours | Derived from Business Profile, matched by store code |
| Local product inventory feed | One row per product per store: id, store code, price, quantity/availability | Merchant Center, alongside your primary feed |
The primary feed you already run keeps doing its job: it defines the products (titles, images, identifiers, links). The local inventory feed joins onto it (product id plus store_code) and says which of those products sit on which shelves, in what quantity, at what in-store price if it differs from online.
Two structural things follow from that join:
- Your primary feed quality is still the foundation. A product with a broken GTIN or disapproved image doesn't become servable by being in stock locally: LIA inherits every item-level problem the online feed has.
- The inventory feed is a multiplier on volume. Ten stores times 5,000 products is 50,000 inventory rows that need refreshing at the pace stock actually moves. This is why manual upload doesn't survive contact with reality; the feed wants to come straight out of your POS or inventory system on a schedule. See feed delivery methods for the options.
How in-store availability shows on Google
Once live, your products can appear with local annotations across several surfaces:
- Shopping ads with "in store" or "pick up today" badges in regular Shopping placements, when the shopper is near a stocked store.
- The store page (merchant-hosted or Google-hosted): the landing experience showing the product, its in-store availability and the store details. Google-hosted pages are the low-effort default; merchant-hosted local storefront pages give you the traffic but require your site to display accurate per-store availability, which is its own engineering commitment.
- Free local listings on the Shopping tab and Maps: unpaid exposure driven by the same feeds, and a real part of the ROI case.
Availability states matter more than merchants expect: in_stock, limited_availability, on_display_to_order and out_of_stock each change what the shopper is promised. Claiming in_stock on a limited_availability line is how you generate wasted journeys and, after verification catches it, programme-level trouble.
When local inventory ads are worth the setup
The honest framing: LIA is a standing operational commitment, not a campaign toggle. It earns its keep when:
- Your products carry urgency. Phone chargers, printer ink, party supplies, trade materials, same-day gifts: categories where "get it in 20 minutes" beats "delivered Thursday". Considered purchases with no time pressure gain much less from local availability.
- Your stores sit in real catchments. LIA serves to shoppers near a stocked store. Dense urban locations with passing footfall have far more auction opportunities than an out-of-town unit.
- Your inventory data is already reliable per location. If your POS knows, accurately, what's on each shop floor, the feed is an export job. If per-store stock is a guess, LIA will amplify the guess into broken promises.
- In-store economics beat shipped economics. Foot traffic buys extra items, returns less, and costs nothing to ship. If your in-store attach rate is meaningful, an LIA click can be worth more than an online one.
Skip it, or defer it, when stock accuracy per store is shaky, when your catchments are thin, or when the team maintaining the feeds is already stretched: an abandoned LIA programme with stale availability is worse than no programme.
Deep dive Inventory verification, and why feed freshness is the whole game
Google doesn't take your local inventory feed on trust. Before ads serve (and periodically after) it verifies that what the feed claims matches what the shop actually has. Verification can involve automated checks against your data quality and, historically, contact with stores to confirm claimed stock. The parallel with online Shopping is exact: just as the crawler checks your landing page against your feed and punishes price and availability mismatch, the local programme checks your shelves against your inventory rows.
This makes feed freshness the single variable that decides whether LIA works, and it's worth being concrete about why:
- Per-store stock moves faster than online stock. An online store sells from one pool; each shop sells from its own small one. A line holding 200 units online might hold 3 in a given store: and 3 units of a popular product is hours of cover, not days. An inventory feed refreshed daily can be wrong about a specific store by lunchtime.
- The failure is a person in your shop. Online, a mismatch costs a disapproval. Locally, it costs a shopper who drove over for the thing you didn't have: a worse outcome commercially, and exactly the signal verification is designed to catch.
- Quantity thresholds are your safety margin. The practical mitigation is marking items
limited_availability(or omitting them) below a quantity floor (commonly 2–5 units depending on velocity) rather than advertising the last unit on the shelf. You trade a little coverage for a lot of promise-keeping. - The refresh pipeline must be boring. POS → per-store inventory export → scheduled fetch, no human in the loop, running at least daily and ideally intraday for fast movers. The same principles as keeping online availability synced (see inventory and availability sync) multiplied by the number of tills.
A useful way to decide if you're ready: could you answer "how many of SKU X are in store 4 right now?" from a system, without ringing the shop? If yes, LIA is an export and a verification away. If the answer involves a phone call, that's the gap to close first: the programme will only ever be as good as that answer.
Setup sequence, briefly
- Verify and link Google Business Profile: every location, with correct addresses and hours, and store codes that your inventory system can reference.
- Enable the local inventory programme in Merchant Center for your target country.
- Submit the local product inventory feed:
id,store_code,availability,price(if in-store differs),quantity. Schedule it from your POS/inventory system. - Pass verification: Google checks the data before ads go live.
- Enable local products in your Shopping campaigns: LIA serves through your existing campaigns once the account-level programme is live.
Then treat it like the online feed: watch item-level issues in Diagnostics, watch the inventory feed's processing health, and keep the refresh cadence honest. The merchants for whom LIA quietly compounds are the ones for whom the feeds are so automated that nobody thinks about them.
Frequently asked questions
What are local inventory ads?
Shopping ads (and free local listings) that show a product is available in a nearby physical shop, with in-store price, stock status, and options like "pick up today". They target shoppers searching near your stores who want the item now, not in two days.
Do I need a separate Merchant Center account for local inventory ads?
No. LIA runs in your existing account. You enable the local programme, add a Business Profile link, and submit two additional feeds, a stores feed (your locations) and a local product inventory feed (what's in stock, where, at what price).
How often should the local inventory feed update?
As often as your stock genuinely moves, daily at minimum, and intraday if you sell fast-moving lines. Google verifies in-store availability, and a feed claiming stock the shop doesn't have damages the programme the same way price mismatch damages Shopping ads.
Can I run local inventory ads without a POS integration?
Technically yes, you can upload inventory files manually. Practically, no. Per-store stock changes constantly, and hand-maintained files go stale within days. If your POS or inventory system can't export per-location stock automatically, fix that before starting LIA.
Are local inventory ads worth it for one or two shops?
Sometimes, if the shops sit in dense catchments, carry stock people want today (urgency purchases), and your in-store margins hold up. For a single shop with low footfall upside, the ongoing feed-maintenance cost usually outweighs the incremental visits.