How to Configure the Google Merchant Shipping Attribute?.

The shipping_label attribute is a small but powerful part of a Google Shopping feed: it lets you tag products so Google Merchant Center can apply different shipping rules to different groups of items. This guide explains what shipping_label is, when you need it, and exactly how to add it to your WooCommerce feed with CTX Feed — plus how it fits alongside the separate shipping attribute and your Merchant Center account settings.

What the shipping_label attribute does

shipping_label does not set a shipping cost. It is only a text tag — a name you invent — that groups products together. The actual shipping rates are defined inside Google Merchant Center, and each rate can be limited to products carrying a particular label.

A few typical uses:

  • oversize — bulky items that cost more to ship.
  • free_shipping — products that always ship free, regardless of the default rate.
  • perishable — items that need expedited delivery.
  • heavy, fragile, digital — any grouping that maps to a distinct shipping rule.

You define a label here in the feed, then in Merchant Center you create a shipping service and tell it “only apply to products with the shipping label oversize.” Products without that label fall back to your default shipping rate. Each product can carry one shipping label.

This is different from the shipping attribute, which sends the actual country, region, service, and price to Google. CTX Feed builds shipping automatically from your WooCommerce shipping zones. Use shipping_label when you want to steer products into Merchant-Center-side shipping rules; use shipping (or account-level settings) to send the rates themselves.

Two ways to send shipping to Google

Google needs shipping either inside the feed or from your Merchant Center settings. CTX Feed supports exactly two set-ups:

  1. Send your WooCommerce shipping. On the Config tab map the Shipping row’s Value to Shipping (Google Format). CTX Feed builds the complete <g:shipping> block from your WooCommerce shipping zones — country, service and price with the feed currency (for example 4.90 EUR) — and writes the transit and handling rows inside it. On a new Google feed (Google Shopping, Google Local, Google Local Inventory or Google Shopping Actions), picking the Shipping channel attribute does this for you: the Value is set to Shipping (Google Format) and four editable rows are added under it — Min Transit Time (2), Max Transit Time (5), Min Handling Time (1) and Max Handling Time (3), in days. Adjust the numbers to your real delivery times. Editing an existing feed never rewrites your rows.
  2. Keep the price logic in Merchant Center. If you do not want your WooCommerce shipping configuration in the feed, leave the Shipping row out and send a shipping_label per product instead (this guide). On a new Google feed, picking the Shipping Label channel attribute maps it to your products’ Shipping Class automatically, so each WooCommerce shipping class becomes a label you can target in Merchant Center; change the Value if you prefer a fixed text or a dynamic attribute. Create the shipping services with their prices in Merchant Center and restrict each one to a label; Merchant Center also handles order-value rules such as “free from 500 EUR”.

Do not map the Shipping row to a dynamic attribute or a plain number. That writes <g:shipping>4.9</g:shipping> without currency or country, which Google does not accept.

Transit time and handling time without a shipping block. Google accepts transit time only inside a <g:shipping> block, so the Min/Max Transit Time rows are left out of the file when no shipping block is built. Handling time is different: Google also accepts it on its own, so from CTX Feed 8.0.29 the Min/Max Handling Time rows are written as standalone <g:min_handling_time> / <g:max_handling_time> tags when there is no shipping block (inside the block when there is one). Shipping Label is always its own tag.

CTX Feed Config tab with the Shipping row set to Shipping (Google Format) and the Min/Max Transit Time and Handling Time rows beneath it
The Shipping row and its four transit/handling rows, added automatically on a new Google feed.

Where the rates come from. For each WooCommerce shipping zone, CTX Feed asks every shipping method for its rate on the product, the same way the cart does. A method that cannot price a single product on its own (for example, local pickup or a method with no cost set) is written as 0.00 in the feed currency. Which zones are included is set on the Filters tab under Product selection → Shipping rates: Feed country writes only the zones that cover the feed’s Country (the Country field is required on every feed), All countries writes every configured zone.

Before you start

Add the shipping_label attribute in CTX Feed

CTX Feed maps every column of your feed on the Config tab of the Make Feed screen. Here is how to add or set the shipping_label column.

  1. In your WordPress dashboard, open CTX Feed → Manage Feeds, then either click Make Feed to create a new Google feed or click an existing Google feed’s name to edit it.
  2. In Feed settings, make sure Template is set to Google Shopping. The channel’s attribute list is what makes shipping_label available.
  3. Open the Config tab. This is the mapping table with Channel attribute, Source, Value, and Output columns.
  4. Add a new row with the Add attribute button (or reuse an existing empty row).
  5. In the Channel attribute column, select Shipping Label [shipping_label] from the dropdown. This is the name Google expects in the feed.
  6. In the Source column, choose how the value is produced. On a new Google feed the row arrives as Attribute → Shipping Class; change it if you want something else:
    • Text — type one fixed label (for example, oversize) in the Value field. Every product in the feed then carries that label. This is the simplest choice when a whole feed shares one shipping rule.
    • Attribute — pick a product attribute in the Value field: Shipping Class (each WooCommerce shipping class becomes a label), or a custom field or product attribute you use for shipping groups.
  7. Click Save & generate to save, then regenerate the feed so the new column is written to the file.
CTX Feed Config tab with a Shipping Label row mapped to the Shipping Class attribute and the Add attribute button
  1. The Shipping Label [shipping_label] row — Source Attribute, Value Shipping Class.
  2. Add attribute adds a new row to the mapping table.

Once the feed regenerates, open the feed file (use the Copy URL / Open feed icons in the Manage Feeds table) and confirm the shipping_label value appears on your items.

Assigning different labels to different products

A single fixed Text label applies to the whole feed. When you need different labels for different products — say oversize for furniture and free_shipping for accessories — you have two options:

  • Dynamic attributes (Pro). CTX Feed’s Dynamic attributes screen lets you build rules such as “if category is Furniture, set shipping_label to oversize.” You then pick that dynamic attribute as the shipping_label row’s Value. This is the cleanest way to label products by category, price, weight, or any condition. Dynamic attributes require CTX Feed Pro.
  • Shipping classes, a product attribute or a custom field. The default Shipping Class value already gives each product its own label. If you tag products another way (a WooCommerce product attribute or a custom field holding the label), keep Attribute as the source and point the Value at it.

Configure the matching shipping rule in Merchant Center

The label only does something once Merchant Center knows about it:

  1. Sign in to Google Merchant Center.
  2. Go to your shipping settings (under Tools & settings → Shipping and returns, or Shipping in your account, depending on your Merchant Center version).
  3. Create or edit a shipping service, and in its advanced/conditions options, restrict it to a shipping label.
  4. Enter the exact label you set in the feed (for example, oversize).

Products that carry that label now use this service’s rates; everything else uses your default service.

Troubleshooting

  • The rule is not applying. Labels are case-sensitive and must match character-for-character. Oversize in the feed will not match oversize in Merchant Center. Re-check both sides.
  • shipping_label is empty in the feed. Confirm the row’s Source and Value are set, then regenerate the feed. If you used a product attribute or dynamic attribute, verify the product actually has a value.
  • A zone shows 0.00 shipping. That zone’s method could not price a single product (local pickup, or a method with no cost). Remove the method from the zone, or set Shipping rates to Feed country so only the feed country’s zones are written.
  • Google shows a shipping error even with a label. shipping_label never supplies a price. If Merchant Center reports missing shipping information, you also need account-level shipping settings or the shipping attribute. Add rates in Merchant Center, or map the Shipping channel attribute so CTX Feed sends your WooCommerce zone rates.
  • A product should have two labels. Google accepts only one shipping_label per product. Pick the single most relevant one.
Try CTX Feed for WooCommerce - Free Download or Upgrade to Pro

9 thoughts on How to Configure the Google Merchant Shipping Attribute?

  1. Hi, we use the Easyship plugin to calculate shipping costs with the product weight and dimensions based on customer location. How do we show this in the feed?

    1. Hi David,

      Using attribute mapping, you can create an attribute with Description and Short Descriptions combined. To know more about how you can do it, please, go through this documentation – https://webappick.com/docs/ctx-feed/dynamic-attributes/conditionally-merge-multiple-attributes/
      But, if you want to fill the description field with any of them if one is missing you can use the Dynamic attribute feature(Pro feature) and you can find more about Dynamic Attribute from here – https://webappick.com/docs/ctx-feed/dynamic-attributes/how-to-make-dynamic-attribute/

      To get more help, reach us from here – https://webappick.com/my-account/contact-support/

      Thank you,

  2. Thank you very much for this great plugin!

    One question: Is there a way to send both descriptions (short and the normal one) to google?

    Background: I matched the google attribute “product description” with the woocommerce value “product description”. But I also want google to get the woocommerce value “product short description”, because many of my products only have the description in this field.

    Thanks for your help!

Leave a comment.