Conversion

Currency and unit conversion in product feeds

Google Merchant Center already converts currency for Shopping ads, so most stores should not convert prices in the feed at all. Convert when shoppers in the target market actually see a local price on your site, or when a channel does not convert for you. Units are the opposite: Google accepts both metric and imperial in its attributes, but US shoppers search and read in inches and pounds. Below: when to convert, the formulas, and the rules that apply them to every row.

We connect your store, build the feed and keep it in sync. Updated 2026-10-27.

At a glance

  • Google converts feed prices into the shopper's currency automatically using Google Finance rates and shows both prices; it is on in every Merchant Center account except in South Korea.
  • Submit a converted price only when your landing page shows that price to that market, because the feed price has to match the site.
  • In Textfinity, we set conversion up as an advanced rule: round(calc{[price] * 0.92}, 2) + " EUR" turns 24.99 USD into 22.99 EUR on every rebuild. The same calc turns 120 cm into 47.2 in.
  • Google's dimension attributes accept cm or in, and weight accepts lb, oz, g or kg, so convert units for titles and descriptions, not to satisfy the spec.

When product feed currency conversion is needed, and when it is not

Google's own currency conversion handles the common case: a US store with USD prices advertising in Canada has its prices shown in CAD with the USD price alongside, estimated from Google Finance rates. You keep submitting your website prices, follow the price and tax rules of the feed currency's country, and add shipping and language for the new market. Microsoft Advertising does the same for additional countries in a feed (a feature it says is still rolling out): it shows the converted amount with the original currency in parentheses.

Convert in the feed when the shopper's checkout really is in the local currency: Shopify Markets or a localized storefront with its own price list, a price comparison site that expects local prices, or a separate feed per country where the landing page shows the converted amount. Converting while the site still shows the original currency creates the price mismatch Google disapproves for.

Three ways to convert prices in a feed

RouteWhere the rate comes fromBest for
Market prices from the storeShopify Markets: a feed set to a market reads that market's variant pricesShopify stores whose checkout already shows local prices; nothing to compute
Fixed rate in an advanced ruleA number you type: round(calc{[price] * 0.92}, 2) + " EUR"Stores that set local prices by a policy rate and change it monthly
Rate sheet as a merged sourceA Google Sheet keyed by SKU, with local prices computed by =GOOGLEFINANCE("CURRENCY:USDEUR")Following the market rate without editing rules; joined on every sync

Textfinity has no built-in exchange-rate feed. A fixed rate is predictable; a sheet follows the market but moves your prices without anyone looking.

Unit conversion: cm to inches and grams to pounds

Google's product_length, product_width and product_height accept cm or in (1 to 3,000, the same unit on all three); product_weight and shipping_weight accept lb, oz, g or kg. A metric catalog is valid for the US as it is. The conversion matters in text: 'Oak Sideboard, 71 in wide' matches how US shoppers search, '180 cm' does not. Each rule below is one advanced transform, tested on the values shown.

ConversionAdvanced ruleInput → output
cm → inround(calc{[width_cm] / 2.54}, 1) + " in"120 cm → 47.2 in
in → cmround(calc{[length] * 2.54}, 1) + " cm"47.25 in → 120.0 cm
g → lbround(calc{[weight_g] / 453.592}, 2) + " lb"450 g → 0.99 lb
g → ozround(calc{[weight_g] / 28.3495}, 1) + " oz"250 g → 8.8 oz
kg → lbround(calc{[weight_kg] * 2.20462}, 2) + " lb"2.5 kg → 5.51 lb
Mixed unitsif [unit] equals "g" then round(calc{[weight] / 453.592}, 2) + " lb" else [weight] + " " + [unit]450 / g → 0.99 lb; 2 / kg → 2 kg

calc{} reads the first number in a value and ignores commas, so '120 cm' and '1,299.00 USD' both work as input.

The decimal-comma trap

Because calc{} drops commas before reading the number, a European price like '24,99 EUR' is read as 2499, not 24.99, and '1.299,00' reads as 1.299. Each output column takes one transform, so you cannot run a regex on the comma and then multiply in the same column. Three ways out: export the price with a decimal point (the cleanest), prepare a dot-decimal price column in a merged source, or, if every price has exactly two decimals and no thousands separator, divide by 100 inside the same calc.

Two decimals, decimal comma, no thousands separator

round(calc{[price] / 100 * 1.08}, 2) + " USD"
"24,99 EUR"  →  "26.99 USD"

Examples

Worked examples, by situation

Four stores, four different reasons to convert, each with the rule that does it.

Furniture · Google Shopping, US · 400 SKUs from a metric supplier

Width in inches in the title, dimensions left in cm

Before

title: Oak Sideboard
width_cm: 180
product_width: 180 cm

After

title: Oak Sideboard, 71 in wide
product_width: 180 cm

How we set it up

We map title with the advanced expression [title] + ", " + round(calc{[width_cm] / 2.54}, 0) + " in wide". product_width stays a suffix rule (" cm") because Google accepts centimeters; only the shopper-facing text changes.

Coffee · Google Shopping and Microsoft Ads, US · 90 SKUs

Bag weight in ounces for the title, grams for shipping

Before

title: Ethiopia Guji Whole Bean
weight_g: 250

After

title: Ethiopia Guji Whole Bean Coffee, 8.8 oz
shipping_weight: 250 g

How we set it up

We map title with the advanced expression [title] + " Coffee, " + round(calc{[weight_g] / 28.3495}, 1) + " oz", and shipping_weight with add suffix " g" on weight_g, since Google reads grams for carrier-calculated rates.

Electronics · Prisjakt, Sweden · 1,200 SKUs priced in EUR

EUR catalog to SEK prices at a policy rate

Before

price: 89.00 EUR

After

price: 970 SEK

How we set it up

We build the feed from the Prisjakt template and map price with the advanced expression round(calc{[price] * 10.9}, 0) + " SEK". The rate is typed into the rule and reviewed monthly; the Swedish storefront shows the same rounded SEK prices, so the feed matches the site.

Fashion · Shopify Markets, EU store selling to the UK · 2,800 variants

Use the market's own prices instead of computing them

Before

price: 59.00 EUR (primary market)
UK market price: 52.00 GBP

After

price: 52.00 GBP
link: https://store.example/en-gb/products/linen-shirt

How we set it up

The native Shopify connection pulls markets with the products. We set up the UK feed with the UK market selected: the variant price column then carries the UK market price (the market swaps the price only, not the currency or the URL), so price is an add suffix " GBP" on it, and link is a replace from regexp ^(https://[^/]+)/ to \1/en-gb/ on the product URL. An exclude filter "product.isPublishedInMarket is equal to False" drops products not sold in the UK.

Copy this plan

Plan: add currency or unit conversion to a feed

Decide first whether you need to convert at all; then it is one rule per column.

  1. 01

    Check what the landing page shows

    If the target market's shoppers see your original currency, keep the original price and let Google's or Microsoft's conversion show the local estimate. Convert only if the site charges in the local currency.

  2. 02

    Pick the rate source

    Shopify Markets prices if you have them, a fixed policy rate in a rule, or a Google Sheet with GOOGLEFINANCE rates joined as a merged source on SKU.

    What we set up: For the sheet route, we join your rate sheet as a merged source keyed on SKU; every product needs a row in it if an advanced rule reads its columns.
  3. 03

    Write the price rule in the country's feed

    One feed per country or market, so each gets its own currency, link and language.

    What we set up: We build one feed per country from the channel template and map price with round(calc{[price] * RATE}, 2) + " EUR".
  4. 04

    Add unit conversions where shoppers read them

    Titles and descriptions for the US market in inches and pounds; leave the dimension attributes in whatever unit Google accepts.

    What we set up: We map title with an advanced rule using round(calc{…}, n).
  5. 05

    Check rows in the product explorer

    Open a few products, including ones with commas in the price and empty weights, and read the mapped output before publishing. A calc on an empty value fails that product's mapping instead of falling through, and that includes a blank price; guard with if [weight] is empty then "" else … or filter blanks out.

    What we set up: We check the mapped output of awkward products in the product explorer before the feed goes live.

Customization tips

Make it yours

Round to price points, not cents

round(calc{…}, 0) gives 970 SEK instead of 970.10 SEK. Whole numbers look deliberate and are easier to mirror on the storefront; the trade-off is a small margin drift you accept on every product.

A live rate moves your prices silently

A GOOGLEFINANCE sheet keeps prices near the market rate, but every sync can change every price, which Google and Microsoft then re-review. A fixed rate changed monthly is easier to keep in step with the site.

Keep the original currency in a custom label

Writing the source price into custom_label_4 lets you build campaign groups by original price band and spot conversion mistakes in reports without opening the feed.

Convert in one place only

If Shopify Markets already rounds and converts, do not apply a second rate in the feed. Double conversion is the most common cause of prices that disagree with the site.

FAQ

Questions about product feed currency conversion

Does Google Shopping convert currency automatically?

Yes. Currency conversion is on by default in Merchant Center (except in South Korea). Google shows the price converted into the shopper's local currency, estimated from Google Finance rates, alongside the original price. You keep submitting your website prices and follow the price and tax rules of the feed currency's country.

Should my feed price be in the target country's currency?

Only if your landing page shows that currency to shoppers in that country. The feed price must match the site, so a converted price on a site that charges in the original currency causes mismatches. Stores with local price lists, such as Shopify Markets, should send the local price.

How do I convert cm to inches in a product feed?

Divide by 2.54 and round. In Textfinity that is an advanced rule such as round(calc{[width_cm] / 2.54}, 1) + " in", which turns 120 cm into 47.2 in on every row. Google's dimension attributes accept cm directly, so convert where shoppers read the value, usually the title.

How do I convert grams to pounds in a product feed?

Divide grams by 453.592, or multiply kilograms by 2.20462. The rule round(calc{[weight_g] / 453.592}, 2) + " lb" turns 450 g into 0.99 lb. Google's shipping_weight accepts g and kg as well as lb and oz, so this is only needed where a channel or your copy wants pounds.

Set up for you

Have us set up price and unit conversion in your feeds.

Send us your store and the markets you sell to. We set up a feed per market in Textfinity and write the price and unit rules once; the software applies them on every rebuild.

Get your market feeds set upOr email support@textfinity.io

Tell us your store and channels. We reply within 24 hours.