Tools

Product feed tools with Google Sheets

A Google Sheet shows up in feed management in three roles: as the whole catalog, as a merge file that adds columns the store lacks, and as a lookup table inside a rule. Most tools support the first; fewer support the second; Textfinity is built around the third as well. This page shows what Google, Textfinity, DataFeedWatch, Channable and GoDataFeed each publish about Sheets, and which role fits which job.

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

At a glance

  • Google Merchant Center reads a Sheet directly: Products → Add products → Use Google Sheets, with a template, synced every 24 hours by default. No rules, Google only.
  • Textfinity reads a Sheet as a shop source, joins one as a merged source by key, and uses one as a lookup inside mapping (replace from google sheet, extract from google sheet) and filters (is in google sheet list).
  • DataFeedWatch lists Google Sheets as a custom source on every plan. Channable imports a Sheet that is shared publicly and updated at least daily. GoDataFeed reads a Sheet published to the web as a CSV URL, as primary source or merge file.
  • Rule of thumb: store as the source, Sheet as the merge file for columns the store lacks, Sheet as the lookup for mappings the marketing team edits.

Three jobs a Google Sheet does in a product feed

Source. The sheet is the catalog: one row per product, one column per attribute. This is how Merchant Center's own Sheets data source works and how most feed tools import a sheet. It suits small, static catalogs and anything with no store behind it (a wholesaler's line sheet, a service catalog). It does not suit a store whose stock and prices change, because someone has to keep the sheet current.

Merge file. The store is the source and the sheet adds columns the export lacks: GTINs from a supplier, seasonal labels, fitment, a hand-written product highlight. The tool joins the sheet onto the catalog by SKU or id. GoDataFeed calls these merge files; Textfinity calls them merged sources.

Lookup table. The sheet is not joined at all; a rule reads it. A two-column sheet of store category to Google product category, a list of brands allowed on Meta, a map of color names to normalized values. The marketing team edits the sheet and the next rebuild picks it up. Textfinity has three rule types for this: replace from google sheet and extract from google sheet in mapping, and is in google sheet list in filters and conditional mapping rules.

Which product feed tools read Google Sheets, and how

Every tool below publishes Sheets support; the differences are in sharing requirements and roles. Merchant Center starts you from Google's template and syncs every 24 hours by default. DataFeedWatch lists Sheets as a custom source on all four plans. Channable imports a sheet that is shared publicly and asks for it to be updated at the same URL at least daily. GoDataFeed reads a sheet published to the web as a CSV (the URL ends in ?output=csv) as an HTTP primary source or a merge file joined on SKU. Textfinity adds a sheet as a shop source, joins one as a merged source, or reads one from a rule.

ToolSheet as sourceSheet as merge fileSheet as rule lookupSharing requirement
Google Merchant CenterYes, with templatenot publishedNonot published
TextfinityYesMerged source joined by keyreplace / extract from google sheet; is in google sheet listShared with your organization's Google service account
DataFeedWatchCustom source, all plansnot publishednot publishednot published
ChannableYes, Setup → Importnot publishednot publishedShared publicly
GoDataFeedHTTP source from published CSVMerge file joined on SKUnot publishedPublished to the web (public URL)

From each vendor's help or pricing page, checked 2026-10-27.

Sheet as source: when it is the right call

If there is no store system of record, the sheet is the catalog and that is fine. A wholesaler with 300 lines and monthly price changes, a maker with 40 products, a brand launching before the store exists. Merchant Center's template gives you the column names; a feed tool on top gives you rules (title building, category mapping, filters) and output for channels beyond Google.

Two cautions. First, every tool that reads a sheet by URL needs it reachable: Channable and GoDataFeed require a publicly shared or published sheet, which means anyone with the link can read it; keep cost and supplier columns out of it. Second, a sheet does not know your stock. If you sell from inventory, the store should be the source and the sheet a merge file, or you will advertise sold-out items until someone edits a cell.

Sheet as lookup: the role most tools skip

The highest-value use of a sheet is the one the comparison table shows least support for. Category mapping is the standard case: a store has 80 product types and Google wants its taxonomy ids. Put the pairs in a sheet, point a replace from google sheet rule at it, and the feed's google_product_category fills from the sheet on every rebuild (the rule replaces substrings, so keep column A values specific, or pair it with an is in google sheet list condition for exact matches); add a product type and the merchandiser adds a row, no feed edit needed. The same mechanism handles brand allow-lists for a channel (filter: brand is in google sheet list), color normalization (Navy, navy, NAVY to Navy), size charts, and per-market shipping labels.

Lookups can also stay private. Textfinity reads sheets through your organization's Google service account, so you share the sheet with that account instead of publishing it to the web, which matters when the sheet encodes margins or supplier codes. In Textfinity, we set up the lookups as mapping rules and filters, including is in google sheet list, and share the service account address with you so the sheet never has to be published.

Examples

Worked examples, by situation

Three sheets in three roles, on three kinds of store.

Wholesale textiles · Google Shopping · 320 SKUs · Sheet is the catalog

Sheet as the source, with rules on top

Before

Sheet columns: Article, Name, Material, Width, Price EUR, Stock

After

id: TX-0412 · title: Linen Canvas 150cm, Natural, 100% Flax · price: 18.50 EUR · availability: in_stock

How we set it up

We add the sheet as the shop source and create a Google Shopping feed. title is an advanced rule: `[Name] + " " + [Width] + "cm, " + [Material]`; availability is advanced: `if calc{[Stock]} > 0 then "in_stock" else "out_of_stock"`; price gets the suffix " EUR" on the Price EUR column (advanced expressions cannot read a header with a space, so that one stays a plain suffix).

Auto accessories · Meta catalog · 2,400 SKUs · Shopify + supplier sheet

Sheet as a merge file for GTINs and fitment

Before

Shopify export: no barcode on 1,700 variants; fitment lives in the supplier's sheet keyed by SKU

After

gtin filled for 1,650 variants; custom_label_0: Toyota Camry 2018-2024; 50 unmatched SKUs excluded

How we set it up

We join the sheet as a merged source on sku, map gtin as a rename of the merged gtin column and custom_label_0 as a rename of merged fitment, and add an exclude filter where the merged gtin column is blank.

Fashion · Google Shopping and Pinterest · 4,100 SKUs · category sheet maintained by merchandising

Sheet as a lookup for Google product categories and a brand allow-list

Before

google_product_category: (empty); Pinterest feed includes 12 brands the brand agreements do not cover

After

google_product_category: 212 (from product_type "Dresses"); Pinterest feed limited to the 38 approved brands

How we set it up

We map google_product_category with replace from google sheet (product_type → category id, 80 rows, longer types such as Maxi Dresses above Dresses because it replaces substrings); on the Pinterest feed, an include filter "brand is in google sheet list" points at the approved-brands sheet, whose first tab holds the list.

Copy this plan

Set up a Google Sheet in the right role

Five steps. We do steps three and four in Textfinity with you; the last one happens in Merchant Center.

  1. 01

    Decide the role

    No store system: the sheet is the source. Store exists but lacks columns: merge file. Store has the data but the mapping changes often: lookup. Most stores end up with the second and third, not the first.

  2. 02

    Shape the sheet

    One header row, one row per product or per key, no merged cells, no double quotes around values, a key column (sku or id) that matches the store exactly, including case. Keep lookup sheets to two or three columns.

  3. 03

    Connect it

    As a source it is a shop; as a merge file it joins a shop; as a lookup it is referenced from a rule.

    What we set up: We add the sheet as the shop source, as a merged source joined on sku, or as a replace from google sheet rule on the column it feeds.
  4. 04

    Build the feed and check the join

    Create the channel feed, then search a few products in the explorer and confirm the merged or looked-up values appear. Unmatched merge keys show as empty and unmatched lookup values pass through unchanged; filter them out or fix the key.

    What we set up: We create the feed from the channel template, check the joined values in the product explorer, and add an exclude filter where the joined column is blank.
  5. 05

    Add the feed and set the schedule (outside Textfinity)

    Add the feed URL in Merchant Center as a scheduled data source; we do it with you, through access you give us or a short walk-through. The shop's sync schedule re-reads the sheet on each run, so edits land on the next rebuild without touching Merchant Center again.

Customization tips

Make it yours

Never publish a sheet with cost columns

Tools that read a sheet by public URL expose every tab. Keep a separate, minimal sheet for feed data, or use a tool that reads the sheet through an account connection so it can stay private.

Use the store for stock, always

A sheet as the source means hand-edited availability. If a store exists, make it the source and demote the sheet to a merge file. Merchant Center's own 24-hour sync does not fix a stale cell.

Keep lookup keys normalized

An is in google sheet list check fails on "Dresses " with a trailing space, and replace from google sheet matches substrings, so a Dresses row also rewrites Maxi Dresses. Run feed hygiene's value consistency check on the key column and fix the values at the source; a regex rule cannot clean the key first, because each column takes one rule.

Side by side

What we could verify

Google Merchant CenterTextfinityDataFeedWatchChannableGoDataFeed
Sheet as primary sourceYes, template providedYes, custom source on all plansYes, Setup → ImportYes, published CSV URL
Sheet as merge / supplementalnot publishedMerged source joined by keynot publishednot publishedMerge file joined on SKU (case-sensitive)
Sheet as rule lookupreplace / extract from google sheet; is in google sheet listnot publishednot publishednot published
Sharing needednot publishedOrganization's Google service accountnot publishedPublicPublished to web (public URL)
RefreshEvery 24 hours by defaultPer-shop schedule; edits rebuilt in ~5 min1 / 2 / 5 per day by planRecommended at least daily; 1 / 3 / 24 syncs by tierOn the import schedule, or a manual import
Rules on the sheet dataTransforms, regex, DSL, 26 filter operatorsRules engineIf/then rulesRules engine
Channels from the sheetGoogle only11 templates plus custom feeds2,000+6 on the Medium package60+
PriceFreeQuoted per catalog$64/mo and up€59/mo and up (5K-item package)$99/mo Plus
Field limits statednot publishednot publishednot publishednot published200 fields across primary and merge files

Checked 2026-10-27 on Google Merchant Center Help, Textfinity, DataFeedWatch's pricing page, Channable's help center and GoDataFeed's help center. Prices as each page shows them; Channable in euros.

FAQ

Questions about product feed tools with google sheets

Can Google Merchant Center read a product feed from Google Sheets?

Yes. In Merchant Center choose Products → Add products → Use Google Sheets, start from Google's template or your own sheet, and Merchant Center syncs it on a schedule that defaults to every 24 hours. It is free and needs no third-party tool, but there are no rules and it serves Google only.

Which feed tools can use a Google Sheet as a lookup table in rules?

Textfinity publishes three rule types for it: replace from google sheet and extract from google sheet in mapping, and is in google sheet list in filters and conditional mapping rules. DataFeedWatch, Channable and GoDataFeed publish Sheets as a source or merge file; their pages do not describe a lookup rule.

Does the sheet have to be public?

For Channable the help center says it must be shared and publicly available; for GoDataFeed it must be published to the web as a CSV, which makes the URL readable by anyone who has it. Merchant Center's Sheets help page does not state a sharing requirement. Textfinity reads the sheet through your organization's Google service account, so it can be shared with that account rather than published.

Should my whole catalog live in a Google Sheet?

Only if there is no store system of record. If a store exists, use it as the source so stock and prices update automatically, and use the sheet for columns the store lacks (merge file) or mappings that change often (lookup).

Set up for you

Have your Google Sheet put to work as a lookup.

Send us your store and your category or brand sheet. We point a replace from google sheet rule at it in Textfinity and publish the feed, so your team keeps editing the sheet and the feed follows.

Have us connect your sheetOr email support@textfinity.io

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