For
Product feeds for dropshipping
A dropshipping product feed is only as good as the supplier file behind it, and supplier files are usually the weakest data in ecommerce: shared manufacturer copy, stale stock, guessed barcodes and no word on where the parcel ships from. Google and Meta judge your store on that data. Here is what to fix, what Merchant Center's policies actually say, and a feed set-up sized to a dropshipping catalog.
We connect your store, build the feed and keep it in sync. Updated 2026-10-27.
At a glance
- Google's Misrepresentation policy does not name dropshipping, but it bans hiding where products ship from, showing a fast delivery time while burying longer handling delays, and listing items you cannot fulfill.
- Egregious misrepresentation (false identity or location) can suspend a Merchant Center account on detection without warning; other violations get a warning at least 7 days before suspension.
- Fix the supplier data before it reaches a channel: stock buffer, max_handling_time and ships_from_country columns, the manufacturer's brand and GTIN (never invented), and your own titles and descriptions.
- Textfinity reads the supplier file as CSV or Google-shaped XML over HTTP or SFTP; we set it up to join the file to your store by SKU, filter and map it, and publish a CSV feed per channel. It cannot read disapprovals back from Merchant Center.
What breaks in a dropshipping product feed
- Stock lag: the supplier's stock count is hours old, so the feed says in stock for items the supplier has sold out. Google lists offering items you cannot fulfill under misrepresentation.
- Shared copy: hundreds of stores import the same supplier titles and descriptions, so your listing has nothing that sets it apart and often carries the supplier's spelling and keyword lists.
- Identifiers: Google says not to guess GTINs and that an incorrect GTIN causes disapproval. Use a GTIN only if the supplier passes the manufacturer's barcode; otherwise brand plus MPN, or identifier_exists no.
- Brand: Google wants the generally recognized brand, and for compatible products (a case for a phone) the actual manufacturer, not the brand of the device. Your store name is only valid for private-label goods.
- File shape: many suppliers publish a nested XML of their own design. Textfinity reads CSV or Google-shaped XML (one flat item per product), so ask the supplier for a CSV export or convert it once.
Merchant Center policies a dropshipping feed has to respect
Google's Misrepresentation policy does not use the word dropshipping. The rules that catch dropshippers are the ones about business identity and fulfillment: you may not hide where products ship from to create an impression of local stock or fast delivery, you may not show a delivery time prominently while hiding longer processing or handling time, and you may not list items as available when you cannot fulfill the order. Undisclosed fees and refusing returns your own policy allows are also listed.
In feed terms, that means three columns must tell the truth: availability, max_handling_time (business days, 0 for same day) and ships_from_country. Shipping cost is required for Shopping ads and free listings in 21 countries including the US, UK, Germany and the Netherlands, either in Merchant Center shipping settings or in the shipping attribute, and it must match your store's shipping page. Diagnostics for rejected items live in Merchant Center; Textfinity does not import them, so check that tab after each change.
Supplier columns to Google Shopping attributes
| Supplier column | Feed attribute | Rule in Textfinity |
|---|---|---|
| sku | id | Rename; keep your store SKU, not the supplier's, if they differ |
| qty | availability | Advanced: if [qty] is empty then "out_of_stock" else if calc{[qty]} > 0 then "in_stock" else "out_of_stock", plus a filter that drops low stock |
| name | title | Replace from AI config with the supplier name as fallback |
| manufacturer | brand | Rename; leave empty for unbranded goods, never "Generic" |
| ean | gtin | Conditional rename: only if it matches regexp ^(\d{8}|\d{12,14})$ |
| dispatch_days | max_handling_time | Rename, or add static value from your slowest supplier |
| warehouse_country | ships_from_country | Rename, or add static value (two-letter code) |
| image | image_link | Rename; exclude rows whose image URL is blank |
Attribute names and formats from Google's product data specification, checked 2026-10-27. Supplier column names vary; these are typical.
Sizing the feed to a dropshipping catalog
Supplier catalogs are large and most of it should never reach an ad channel. Curate first: a Google Sheet of the SKUs you actually sell, a stock floor, a price floor. A dropshipping feed needs those filter rules from day one, and usually AI-rewritten titles and descriptions to replace the shared supplier copy. The curated SKU count, not the supplier's full file, is what the feeds carry and what a quote is based on.
Examples
Worked examples, by situation
Four dropshipping stores, four different supplier problems.
Curate the supplier catalog and keep a stock buffer
Filter rules
include if [sku] is in google sheet list "Listed SKUs"
exclude if [qty] is less than 5
exclude if [image] is blank
exclude if [price] is less than 8How we set it up
We add an include filter with is in google sheet list, then exclude filters with is less than and is blank. The 5-unit buffer absorbs the hours between supplier stock updates, so ads stop before the supplier runs dry.
Supplier stock joined onto the Shopify catalog
Before
Shopify: SKU PT-2201, Inventory quantity 40 (never updated) Supplier CSV: sku PT-2201, qty 0
After
id: PT-2201 availability: out of stock
How we set it up
We join the supplier CSV as a merged source by URL or SFTP, keyed on SKU, and map availability with an advanced rule: if [qty] is empty then "out of stock" else if calc{[qty]} > 0 then "in stock" else "out of stock" (Meta spells it with a space; the empty check keeps a blank quantity from failing the rule, but every Shopify product needs a row in the supplier CSV, since a product with no match has no qty column and the rule fails).
Compatible-product brand and an honest handling time
Before
title: iPhone 15 Case Shockproof Apple Luxury brand: Apple max_handling_time: (empty)
After
title: Lumio Shockproof Case for iPhone 15, Clear brand: Lumio max_handling_time: 4 ships_from_country: CN
How we set it up
We map brand by rename from manufacturer; title with an advanced rule: [manufacturer] + " " + [style] + " Case for " + [model] + ", " + [color]; max_handling_time and ships_from_country as static values. Merchant Center transit times must match your store's shipping page.
Own titles and descriptions, in German
Before
name: Fashion Women Necklace Gold Plated Heart Pendant Chain Gift
After
title: Herzanhänger Halskette, 18 Karat vergoldet, 45 cm Kette, Damen
How we set it up
We set up an AI config that enhances the title with output language German, reading name, material and length; once the generations are accepted, title uses replace from AI config with name as fallback. Only accepted titles are used; products not yet reviewed keep the supplier name.
Copy this plan
Plan: a supplier file to a clean Shopping feed
Steps 1 to 6 are set up in Textfinity; the last one lines up Merchant Center with the store.
01
Get the supplier file in a readable shape
Ask for a CSV export (comma, tab, semicolon or pipe) or Google-shaped XML. Nested custom XML and JSON are not read; convert those once to CSV.
What we set up: We connect the file as a CSV/XML URL source, or over SFTP if the supplier drops files on a server.02
Join supplier stock to your store
If you sell through Shopify, the store is the main source and the supplier file is joined to it by SKU, so stock and dispatch days come from the supplier and everything else from your store.
What we set up: We connect the Shopify store and add the supplier file as a merged source keyed on SKU.03
Profile the data
Feed hygiene shows the percentage filled per column, titles over 150 characters, malformed image URLs and spelling variants such as Black, black and BLK.
What we set up: We run feed hygiene on the joined catalog.04
Curate and buffer
Include only the SKUs you sell, exclude low stock, missing images and loss-making prices.
What we set up: We add filters with is in google sheet list, is less than and is blank.05
Map the truthful attributes
availability from supplier stock, max_handling_time from dispatch days, ships_from_country, the manufacturer's brand, GTIN only when it is a real barcode.
What we set up: We build the Google Shopping feed with gtin as a rename conditioned on matches regexp, and ships_from_country as a static value.06
Replace supplier copy
Rewrite titles and descriptions from the product facts, review the new text and use only what you approve in the feed.
What we set up: We set up AI configs for titles or descriptions and map them with replace from AI config.07
Match Merchant Center to the store
Register the feed URL in Merchant Center as a scheduled fetch, then set shipping costs, handling and transit times and the return policy there to the same values as your store pages. This step happens in Merchant Center.
What we set up: We hand you the feed URL and register it with you: you give us access or we walk you through it.
Customization tips
Make it yours
Stock buffer versus lost impressions
A higher stock floor stops more oversold orders but hides products that still had a few units. Start at the number of units you typically sell between two supplier updates and lower it once the supplier's file refreshes more often.
Quote the slowest supplier
If two suppliers fulfill the same SKU, set max_handling_time from the slower one. A promise you beat costs nothing; a promise you miss is the pattern the policy describes.
One feed per channel, not one per supplier
Merge suppliers into one catalog and filter per channel. Fewer feeds are easier to keep right, and one feed per channel keeps ids stable when you switch suppliers.
Leave the GTIN empty rather than borrowed
A supplier's internal code in the gtin column fails Google's checksum and gets the item disapproved. An empty gtin with brand plus MPN, or identifier_exists no for truly unbranded goods, is the accepted route.
FAQ
Questions about product feed for dropshipping
Can a dropshipping store use Google Shopping?
Google's policies do not ban dropshipping by name. They require that you do not hide where products ship from, that delivery and handling times are shown honestly, that listed items can be fulfilled, and that your business identity and return terms are clear. Stores that meet those rules can list products like any other merchant.
Why do dropshipping stores get suspended for misrepresentation?
The policy covers hidden fulfillment sources, delivery times shown prominently while longer handling is buried, items listed as available that cannot be fulfilled, undisclosed fees and refused returns. Egregious cases such as a false business identity or address can be suspended without prior warning.
What format should a supplier product feed be in?
For Textfinity, a delimited text file (CSV, TSV, semicolon or pipe) or an XML file in Google Shopping's RSS 2.0 or Atom shape, reachable by URL or SFTP. Custom nested XML and JSON are not read, so ask the supplier for a CSV export.
Can I use the supplier's product descriptions?
You can, but so can every other store selling the same products, and supplier copy often carries keyword lists and promotional text that Google's description rules exclude. Rewriting titles and descriptions with an AI config gives each listing its own text, which is reviewed before it enters the feed.
Set up for you
Have your supplier file turned into a feed Google can trust.
Send us your store and the supplier file. We set Textfinity up to merge the supplier stock, curate the SKUs you sell and publish a feed per channel, rebuilt on schedule.
Tell us your store and channels. We reply within 24 hours.