How to Configure Product Price into Feed?.

Price is a make-or-break field: shopping channels compare your feed price against the price on your landing page, and a mismatch — wrong tax treatment, stale sale price, or a stray currency symbol — gets products disapproved. This guide explains every price attribute CTX Feed offers, how tax is applied, how the number is formatted, and how variable products and discount plugins are handled, so the price you send always matches the price a shopper sees.

CTX Feed reads prices with WooCommerce’s own price functions — it never queries the database directly — so the value in your feed is the same value WooCommerce would show, including any tax rules and third-party discounts. You choose which price and how it is formatted on the Config tab of a feed.

Where price is configured

  1. Open CTX Feed → Make Feed (or edit a feed from Manage Feeds).
  2. On the Config tab, find the row whose Channel attribute is the channel’s price field — price and sale_price for Google, price and sale_price for Meta.
  3. Set the row’s Source to Attribute, then pick the value from the Price group of the Value dropdown.
CTX Feed Make Feed Config tab of a Google Shopping feed showing the availability, price and sale price rows, with the tab bar and the mapping table numbered
  1. The tab bar — Config, Filters, Advanced filters, FTP / SFTP, and Report.
  2. The attribute mapping table — each row pairs a Channel attribute with a Source, Value, and Output.

A new feed for a channel starts with these rows already mapped from the channel’s template; the sections below let you fine-tune them.

The price attributes CTX Feed provides

Under the Price group in the Value dropdown you will find:

  • Regular Price (price) — the product’s regular (non-sale) price. Map this to a channel’s price field.
  • Price (current_price) — the active selling price: the sale price when the product is on sale, otherwise the regular price. This is the “get price” value that always reflects what a customer pays right now.
  • Sale Price (sale_price) — the sale price, but only while a sale is actually running (see the schedule note below); empty otherwise.
  • Regular Price With Tax / Price With Tax / Sale Price With Tax — the same three values with tax added.
  • Currency — the feed’s currency code (for example USD), useful as a separate column.
  • Sale Start Date / Sale End Date / Sale Price Effective Date — the sale schedule, for channels that accept a sale_price_effective_date.

Regular price vs. price vs. sale price

The distinction trips people up, so keep it simple:

  • Send Regular Price as the channel’s price.
  • For the channel’s sale_price, the Google Shopping template maps Price (current_price): it sends the sale price while a sale is running and the regular price otherwise, so sale_price is never empty. Google accepts a sale_price equal to the regular price, so this is safe.
  • Map Sale Price to sale_price instead if you want the field left empty whenever a product is not on sale.

Price with or without tax

The plain price attributes (Regular Price, Price, Sale Price) send the price exactly as it is entered in WooCommerce — they never add or remove tax, so they include tax only if your store enters prices including tax. To send a tax-inclusive price, map the …With Tax variant instead: CTX Feed runs the value through WooCommerce’s wc_get_price_including_tax() using the tax rates for the feed’s Country (a required field in Feed settings), so the amount matches a checkout total in that country. WooCommerce’s Default customer location setting plays no part. Use the plain attributes when the channel expects pre-tax prices, and the With Tax attributes when it expects tax-inclusive prices (common in the EU and UK).

How the price number is formatted

A price row ships the value exactly as WooCommerce stores it — 16980, 12.5 — until you tell the row to format it. Two controls shape the final output on the mapping row (expand it with More):

  • Output column — pick Price to write the number in the machine format every channel accepts: two decimals, a dot as the decimal separator and no thousand separator, so 1234.5 becomes 1234.50 and 173427.98 stays 173427.98. Pick Rounded Price to round to a whole number first and then apply the same format. Leave it on Default and the raw stored value is written. This is set automatically to Price when you choose a price attribute on a Google/Meta-family feed, which is what those channels expect. Your WooCommerce display settings (WooCommerce → Settings → General) never affect the feed.
  • Suffix — the text appended after the number. For Google, Meta, Pinterest and similar channels the price must carry its currency code (for example 19.99 USD), so CTX Feed auto-fills the suffix with a space plus your feed currency (Bing’s sale_price is the exception: it is always sent as a bare number). If you change the feed’s Feed Currency, the price-row suffixes update to match. The suffix is where the currency comes from: change it and the feed carries exactly what you typed; clear it and the price ships as a bare number (on a multi-currency store the Feed Currency fills in for an empty suffix).
CTX Feed attribute mapping row for Regular Price with its Channel attribute, Source, Value and Output cells numbered
  1. Channel attribute — the channel’s price field, such as price or sale_price.
  2. Source — set to Attribute so the value is pulled from a product price field.
  3. Value — the price attribute to output, for example Regular Price or Sale Price.
  4. Output — the number format for this row, Price (decimal) or Rounded Price.

With CTX Feed Pro the Number format row on the Filters tab changes that format for rows that use the Price or Rounded Price output: fill in only the boxes you want to change (Decimals, Thousand separator, Decimal separator) and leave the others blank to keep the defaults of 2, none and .. The boxes start empty. The free plugin shows the row but always writes the default format. Nothing in these boxes touches a row whose Output is Default, and dynamic-attribute conditions such as price >= 1000 always compare the plain number, whatever format you choose.

A price of zero or less is sent empty, so a product without a real price never shows up as free. A grouped product’s price is the sum of its visible child products.

Variable products

A variable product has no single price of its own, so CTX Feed derives one. In the feed’s Feed settings, when the parent variable product is written to the feed (the Include variations options Variable Products (Parent) or Variable + Variations), a Variable price selector appears with three choices:

  • Min Variation Price — the lowest variation price (the “from” price).
  • Max Variation Price — the highest variation price.
  • First Variation Price — the first variation’s price. This is the default.

When you export All Variations, each variation is its own row and reports its own real price, so this selector doesn’t apply. If no variation is actually discounted, the parent’s Sale Price attribute comes out empty; Price still reports the selected variation price.

Discount and dynamic-pricing plugins

If you run a discount plugin — Woo Discount Rules, WooCommerce Dynamic Pricing & Discounts, Advanced Woo Discounts, and similar — CTX Feed passes each price through the plugin’s own filters before formatting, so rule-based prices flow into the feed. A rule-based sale can even fill the sale_price field on a product that has no native WooCommerce sale price. No extra configuration is needed beyond having the discount plugin active.

Troubleshooting

  • Sale Price is empty. The row uses the Sale Price attribute and the product is not currently on sale, or its scheduled sale is outside the start/end window. CTX Feed only exports a sale price while the sale is live, so an expired sale never leaks into the feed. If you would rather send the regular price when there is no sale, map Price instead (the Google Shopping default).
  • The channel says price doesn’t match the landing page. Check the tax treatment: if your product pages show tax-inclusive prices, map the …With Tax attribute so the feed matches. Confirm the feed’s Country matches the market you are targeting.
  • Prices have the wrong decimals or separators. A row with Output Default writes the stored value untouched. Set the row’s Output to Price for two decimals, a dot and no thousand separator, or Rounded Price for whole-number channels. To use a different format, fill in the Number format boxes on the Filters tab (needs CTX Feed Pro). If an old feed shows separators you never typed, they were saved into that feed by an earlier version: clear the boxes or create a new feed.
  • Currency code is missing. Ensure the price row’s Suffix contains a space plus the currency (for example USD), or that the Output is set to Price for a channel that appends currency automatically.
  • A discount isn’t showing. Confirm the discount plugin is active and its rule applies to the product, then use Clear Cache and regenerate the feed.
Try CTX Feed for WooCommerce - Free Download or Upgrade to Pro

Leave a comment.