> ## Documentation Index
> Fetch the complete documentation index at: https://rogus-docs.frimty.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Custom feeds (XML and CSV)

> Build a Blank XML or CSV feed with your own field names and order, for shopping channels that do not use Google's product specification.

A **Blank XML** or **Blank CSV** feed contains exactly the fields you define, named exactly as you name them, in the order you put them. Nothing is added and nothing is assumed.

Use one when a channel wants a file in its own shape, or when you need a spreadsheet of your catalog.

## How it differs from a Google feed

A Google feed is built around Google's specification — Rogus knows which attributes exist, which are required, and what a valid value looks like. A blank feed has none of that, because the fields are yours and Rogus has no idea what the channel expects.

That means:

|                         | Google Shopping                             | Blank XML / CSV                                    |
| ----------------------- | ------------------------------------------- | -------------------------------------------------- |
| Field names             | Google's, fixed                             | Yours, anything you type                           |
| Which fields exist      | Google's list                               | Only what you add                                  |
| Format checks on values | Yes — title length, price format, and so on | **No**                                             |
| Items skipped           | When a required attribute is missing        | Only when a field **you marked required** is empty |
| Suggested fixes         | Yes                                         | No                                                 |

The missing checks are deliberate, not unfinished. You never agreed to Google's rules for this file, so Rogus does not hold your data to them.

## The field list

Open the feed and stay on the **Feed configuration** tab. Every row is one field.

Each field has:

* **Name** — becomes the XML element name, or the CSV column heading
* **Source** — a product or variant field, a metafield, or a fixed value
* **Fallback** — used only when the source is empty for that item
* **Required** — "Skip the variant when empty"

The list order is the file order. Reorder the rows and the file changes to match.

## The Required toggle

**Required is off by default and only you can turn it on.** It is the only thing that can leave a product out of a blank feed.

Turn it on for a field the channel cannot accept a row without — usually the id, sometimes the price. Leave it off for anything optional: the item still publishes, and that field is simply empty for it.

<Warning>
  A field marked required with no source set would skip **every** variant in your catalog. Rogus blocks that before it runs and tells you which field is the problem.
</Warning>

## What Rogus starts you with

A new blank feed comes with six fields already set up, which you can rename, reorder or delete:

| Name           | Source                                   | Required |
| -------------- | ---------------------------------------- | -------- |
| `id`           | Variant ID                               | Yes      |
| `title`        | Product title + variant options          | No       |
| `url`          | Product URL                              | No       |
| `image`        | Variant image, else product image        | No       |
| `price`        | Variant price (always the current price) | No       |
| `availability` | Availability from inventory              | No       |

Note that `price` here is the **current** price, not the regular one. That is the right default for a plain export. Google's convention is the unusual one, and it applies only to Google feeds — see [Attribute mapping](/feeds/attribute-mapping).

## Naming fields

**CSV:** the name becomes the column heading exactly as you typed it. Anything goes.

**XML:** the name becomes an element name, and XML has rules — no spaces, and it cannot start with a digit. If you type something XML cannot use, Rogus rewrites it rather than breaking the file: spaces and symbols become underscores, and a leading digit gets an underscore in front of it.

That rewrite is a last resort, not a feature. A single bad element name makes the whole document unreadable, and the channel then rejects every item rather than one. If Rogus renamed a field, rename it yourself so you know what the channel is receiving.

## Rows and columns

One variant is one row, the same as a Google feed. A product with ten variants produces ten rows.

For CSV, every row is lined up against the header, so a field with no value for that item leaves an empty cell rather than shifting the rest of the row into the wrong columns.

## What a blank feed cannot do

* **It cannot be sent directly to Merchant Center.** Google's API needs Google's attribute names, and a blank feed does not have them. Use a Google Shopping feed for that, or give the channel the feed URL.
* **It gets no format warnings and no suggested fixes**, as explained above.

Both are consequences of the fields being yours. If you want Google's checks, you want a Google feed.
