NewProduct Score, 4T Segmentation, Price War and Broken Size are live.See what's new
Feedance
Article

Adding Product-Level Shipping to Merchant Center Without Losing Your Delivery Times

Adding product-level shipping to Merchant Center? See which settings an override replaces, which sub-attributes to restate, and how to roll out safely.

Kardelen YılmazKardelen Yılmaz
8 min read
Illustration of a parcel on a conveyor with a price-tag layer covering a clock and calendar layer, representing a shipping override replacing delivery time settings

Shipping cost is required for Shopping ads and free listings in 30 countries, and the safest way to supply it is the account-level setting in Merchant Center. Sooner or later a catalog needs exceptions: heavy items, a regional surcharge, a cheaper product that sits below a minimum order. Put one price inside the product-level [shipping] attribute and Google stops reading the delivery times and minimum order values you configured for that location. The product can stay approved while its delivery estimate stops coming from the settings you configured.

This guide is for feed managers who already have working shipping settings and need to add product-level exceptions without breaking them. By the end you will know which settings an override replaces, which sub-attributes to restate, and how to roll the change out in a way that cannot trigger an inaccurate-shipping warning across the whole catalog.

What a product-level shipping override actually replaces

Merchant Center reads shipping from two places: the account-level shipping policies and the [shipping] attribute on each product. Google's own guidance is to use account-level settings first and treat the attribute as a last resort. The reason is precedence. As the attribute documentation states, submitting price in [shipping] makes the account-level service settings for that location, including delivery times and minimum order values, ignored. You must then specify them at the product level.

Two rules follow from that. First, an override is not a patch on top of the account setting. It replaces it for the matching location. Second, the attribute is repeatable up to 100 times per product, so every country, region and service you ship that product to needs its own complete row.

The April 2026 change that makes this easier

The 2026 product data specification update, effective April 14, 2026, added product-level equivalents of account-level options: handling cutoff, minimum order value, and loyalty labels (loyalty_program_label and loyalty_tier_label) as [shipping] sub-attributes. A separate April 28 announcement added [pickup_cost]. From September 30, 2026, in the United Kingdom, Switzerland and the EEA, in_store products enabled for pickup must provide pickup costs and minimum order values if your website applies them.

Step 1: Decide whether you need an override at all

Start with the default answer, which is no. Keep a product on account-level shipping if any of the following is true:

  • One flat rate or one threshold rule covers the whole catalog.
  • The exception can be expressed as a region or a shipping label in Merchant Center settings.
  • The only difference is a delivery time, which can be set per product with the standalone [min_handling_time] and [max_handling_time] attributes without touching price.

Override at product level only when the price itself differs per product, for example bulky goods, oversized furniture, or a flat-rate item shipped inside a free-shipping store.

Step 2: Inventory what your account settings currently supply

Before writing a single row, list what the account-level policy provides for the locations you will override. These are the values you will have to restate.

Account-level settingLost when product row sets price?Product-level replacement
Handling time (min/max days)Yesmin_handling_time, max_handling_time sub-attributes, or standalone attributes
Transit time (min/max days)Yesmin_transit_time, max_transit_time
Order cutoffYeshandling_cutoff_time (HHMM), handling_cutoff_timezone (IANA)
Minimum order valueYesStandalone minimum_order_value attribute
Loyalty member ratesYesloyalty_program_label, plus loyalty_tier_label in multi-tier programs

If your delivery estimate is shown to shoppers today and you skip this inventory, the estimate is what you lose. Google's documentation says a shipping speed needs three things together: a maximum handling time, a maximum transit time, and a price.

Step 3: Write complete rows, not partial ones

Here is an illustrative before and after for a German store. The account policy has a Standard service with 1 to 2 handling days and 3 to 5 transit days. This is an example we constructed to show the mechanics, not client data.

Before. The merchant overrides only the price of a bulky item:

idpriceshipping(country:service:price)
SOFA-2041249.00 EURDE:Standard:29.90 EUR

This row is valid. It is also the row that causes the problem, because the delivery times in the account policy no longer apply to this product in Germany.

After. The same override restates the speed fields:

idpriceshipping(country:service:price:min_handling_time:max_handling_time:min_transit_time:max_transit_time)
SOFA-2041249.00 EURDE:Standard:29.90 EUR:1:2:3:5

Now take a cheap accessory with its own shipping price and a store that requires a 20 EUR minimum order. Because the product price is at or below the minimum order value and the row overrides shipping, the minimum has to be restated too:

idpriceshipping(same header as above)minimum_order_value(country:price)
CAB-01712.90 EURDE:Standard:3.90 EUR:1:2:3:5DE:20 EUR

Google's minimum order value specification says to set it only when the product price is at or below the minimum, that the currency must match the product's price, and that the submitted value must match what your website displays. The sofa at 1249.00 EUR needs no minimum_order_value.

Step 4: Handle cutoff time and time zones deliberately

The cutoff is easy to get wrong because it has two formats in circulation. Google's current attribute page specifies handling_cutoff_time as a four-digit HHMM string such as 1530, with handling_cutoff_timezone in IANA format such as Europe/Berlin, defaulting to the destination's time zone. Some third-party write-ups from before the April update show UTC offsets such as +02:00. Follow Google's page and validate on a few products before rolling out.

When the same cutoff applies to several [shipping] rows on a product, use the standalone handling_cutoff_time attribute rather than repeating it. Also note the precedence rule: if you submit handling times both as standalone attributes and as [shipping] sub-attributes, only the sub-attributes count. If a cutoff is left blank, Google's delivery time documentation says the default is 8:00 a.m. PST, which is the wrong clock for most European or MENA shops.

Step 5: Check currency formats and price limits

Each currency has a ceiling for the price sub-attribute. The numbers matter in the region Feedance sees most, because Turkish lira, UAE dirham and Saudi riyal share a higher cap than the euro or dollar:

CurrencyAccepted shipping price range
EUR, GBP, USD, CHF0 to 1000
TRY, AED, SAR, PLN0 to 5000
INR, JPY, RUB0 to 100000

Use a period as the decimal separator and no thousands comma, so 29.90 EUR and never 29,90 EUR. Comma decimals are standard in many Turkish and European exports, so check the format before the column goes to Merchant Center. Do not include government-imposed fees in the shipping cost.

Step 6: Pilot on one segment, then widen

Push the new rows for one product group, such as a single category in a single country, using a supplementary source so the main feed is untouched. A supplementary feed is designed for this: it adds columns to products without replacing the primary data. Wait for the next processing cycle, then open the product in Merchant Center and confirm the delivery estimate still renders. Only then roll the pattern out to the remaining exceptions. Rule-based editing in your feed tool helps with the comma-to-period fix and with building the colon-separated values, if it can write to a column you define.

Step 7: Reconcile with checkout and know the failure message

Google compares the cost in your data with what shoppers see at checkout. If the data is lower, the account can see this warning:

Inaccurate shipping costs (due to inconsistent shipping costs between your feed and the checkout pages on your website)

Google's remediation steps are to align the Shipping services settings or the attribute with the website, resubmit, and request a review. Google notes a review can take 24 to 48 hours after fixes are live, and that if exact rates are impractical you can slightly overestimate. Make a spot-check of five overridden products against a live cart part of every release.

What this guide doesn't cover

We have not covered [carrier_shipping], which follows related rules, shipping for local inventory beyond the pickup-cost note, or free-shipping thresholds that depend on basket value rather than product. Complex rate tables, such as weight bands per carrier, are usually easier to maintain in Merchant Center itself than as thousands of feed rows. We also have not benchmarked how other feed platforms such as Feedonomics, Productsup, Channable or DataFeedWatch write structured sub-attributes, so we make no claim about them. Check that your tool can output colon-separated sub-attributes before you commit to an approach. The attribute names here were verified against Google's help pages on October 18, 2026, and Google edits these pages frequently.

FAQ

Does the [shipping] attribute override Merchant Center shipping settings?

Yes. A value in the attribute overrides the account-level shipping rate. Setting price also makes the account-level delivery times and minimum order values ignored for that location.

How many shipping rows can one product have?

The attribute can be repeated up to 100 times per product. Each country, region or service combination you ship that product to needs its own row.

Do I need minimum_order_value on every product?

No. Specify it only when the product price is at or below the minimum order value. If a product also overrides shipping, you must supply the minimum explicitly even when the account settings define one.

What format does handling_cutoff_time use?

Google's attribute page specifies a four-digit HHMM string, for example 1530. The related time zone sub-attribute takes an IANA name, and defaults to the destination's time zone if omitted.

What happens if I use both standalone handling time attributes and shipping sub-attributes?

Only the sub-attributes inside [shipping] are used. The standalone [min_handling_time] and [max_handling_time] attributes are a substitute, not an addition.

What is the maximum shipping price I can submit in Turkish lira?

The documented range for TRY is 0 to 5000, the same as AED and SAR. Use a period as the decimal separator.

Does the pickup cost requirement apply outside Europe?

Per Google's announcement, the September 30, 2026 requirement applies to in_store products enabled for pickup in the United Kingdom, Switzerland and EEA countries.

How long does a review take after fixing an inaccurate shipping warning?

Google states a review can take 24 to 48 hours after the fixes are live in your data and settings. Do not request a review before resubmission has processed.

Where to go next

If your overrides are part of a larger Merchant Center clean-up, our Google Merchant Center feed setup guide covers the required attributes and common error fixes, and Stopping Google From Silently Overriding Your Feed's Price and Availability Data explains the other way Google changes your data without telling you. For the mechanics of adding columns without touching the main feed, see supplementary feeds and feed rules.

Run your own feed through the free product feed audit tool to see where completeness and data quality gaps sit before you add shipping overrides.

Want a second pair of eyes on your feed? We will review it with you and show where the gaps are before your next submission.
Run a free audit
Kardelen Yılmaz
Written by
Kardelen Yılmaz

Kardelen Yılmaz works on growth at Feedance, where she helps e-commerce brands and agencies get more return from every product they advertise. She writes about product feed quality, Shopping and Performance Max campaigns, creative automation, and how AI-driven shopping is changing product visibility.

LinkedIn

See which of your products earn.

Connect your product feed and GA4. We will show you Product Score, 4T, Price War and Broken Size on your own catalog.