Usage
The Feeder CP section is visible under Feeder in the Craft CP nav (only for admins when Allow Admin Changes is enabled — otherwise only Settings is shown), with Dashboard, Overview, Feeds, Mappings, Rules, History, and Settings.
Feeds
Feeder → Feeds lists every feed with its output format, source, site, and enabled state. From here a feed can be edited, generated, enabled/ disabled, or deleted — including in bulk, by selecting multiple rows.
Creating a feed
Open Feeder → Feeds → New Feed.
Source
| Field | Description |
|---|---|
| Name | Display name. Must be unique. Required. |
| Filename | Base filename used for the generated export (without extension — the extension is derived from the output format). Must be unique. Required. |
| Element type | The export source (Entries, Categories, Users, Assets, or, when installed, Products/Variants/Orders/Customers). Changing it reloads the available source fields and condition rules. Required. |
| Conditions | An inline element condition (by date created, ID, slug, related-to/not-related-to) narrowing which elements this feed exports. Combined with any attached rules. |
Fields, template mode and modifiers
The feed editor's main panel has an editor for Header pattern, Element pattern, and Footer pattern. As soon as any one of them is non-empty, the feed switches to template mode: instead of the built-in CSV/JSON/XML writer, Feeder renders the header pattern once, the element pattern once per exported row, and the footer pattern once, concatenating the result. Leave all three blank to use the plain CSV/JSON/XML writer selected in Output.
Inside any pattern, reference a source field with {fieldHandle} — the
sidebar's Fields panel lists the handles available for the selected
source, generated as clickable chips that insert into the active editor.
Chain modifiers onto a placeholder with |:
| Modifier | Effect |
|---|---|
trim | Trims surrounding whitespace. |
lower / lowercase | Lowercases the value. |
upper / uppercase | Uppercases the value. |
slug / slugify | Converts the value to a URL-safe slug. |
prepend:VALUE | Prepends VALUE to the value. |
append:VALUE | Appends VALUE to the value. |
replace:SEARCH,REPLACEMENT | String-replaces SEARCH with REPLACEMENT. |
default:VALUE | Substitutes VALUE when the field is empty/null. |
json | JSON-encodes the value. |
map:mappingHandle | Looks up the value in the named mapping profile and substitutes the target value. |
Example: {category|map:heureka-to-craft-categories} looks the category
name up in the heureka-to-craft-categories mapping; {title|trim|slugify}
trims and slugifies the title. Modifiers apply left to right, so
{price|default:0|json} falls back to 0 before JSON-encoding.
The sidebar also has an Output-specific snippets panel with starter markup for the currently selected output (e.g. an XML item/wrapper snippet) to speed up building a template from scratch.
Outside of template mode, use the Fields section to type or paste one
field definition per line, in the same output=source|modifier|modifier
syntax (the output= prefix is optional when the output name matches the
source field handle). This list is also what the console's
export/fields action reads and writes.
Currency and number formatting
| Field | Description |
|---|---|
| Currency | The currency code used to format monetary fields. Defaults to the site's store currency when left blank. |
| Show currency abbr | Appends the currency code/abbreviation after formatted amounts. |
| Number of decimal points | Decimal precision for formatted amounts. |
| Separator for the decimal point | Character used as the decimal separator. |
| Thousands Separator | Character used as the thousands separator. |
| Date format | Date format applied when normalizing date/time fields. |
Run mode
| Field | Description |
|---|---|
| Generate feed | Manually (run via the Generate feed button or console only) or By Schedule (a cron expression, evaluated whenever feeder/export/run-due is invoked — see Developer API → Scheduling). |
| Schedule pattern | A standard cron expression (e.g. 0 2 * * * for daily at 02:00, */30 * * * * for every 30 minutes). Required when Generate feed is By Schedule. |
Delivery (FTP/FTPS/SFTP)
Always shown on the feed's edit form regardless of Enable remote transfers in Settings — that setting is a stored preference with no effect on this section in v1.3.0. When the feed's own Enabled field (in this Delivery section) is off, the generated file is only written locally (or downloaded, for a manual browser-triggered generate).
| Field | Description |
|---|---|
| Enabled | Turns on remote delivery for this feed after each generation. |
| Host | Server hostname. Append a port with host:port if the server doesn't use the protocol's default port. |
| Protocol | FTP, FTPS, or SFTP. SFTP requires the PHP ssh2 extension; FTP/FTPS require the PHP ftp extension. |
| User / Password | Credentials for the remote server. |
| Path | Remote directory the file is uploaded into. Created automatically if it doesn't exist (FTP/FTPS). |
| Passive Mode | FTP/FTPS passive mode toggle. Not applicable to SFTP. |
Other
| Field | Description |
|---|---|
| Site | The site whose content is exported. |
| Compress | Optional compression applied to the output file. |
| Enable this feed | Disabling a feed excludes it from scheduled runs (run-due) and console run/queue actions look it up but won't queue a disabled feed via the scheduler. |
Generating a feed
From a saved feed's edit screen, Generate feed queues an export job
(the same path the scheduler and console export/queue use) and redirects
back with a flash message including the job ID. Feeder processes queued
exports in batches and resumes from a checkpoint file if the same feed is
queued again after a failure or interruption — so re-queuing a failed run
is safe and won't start over from row zero unless the previous run
completed or its checkpoint was cleared.
Once at least one export has been generated, the feed's edit screen shows the Latest generated files list with a download link per run.
Deleting a feed
Use Delete Feed on an existing feed's edit screen, or the bulk delete action from the Feeds list.
Mappings
Feeder → Mappings manages named source-value → target-value lookup tables, most commonly used to translate your store's categories or attribute values into a channel's own vocabulary (e.g. mapping Craft category names to a marketplace's numeric category IDs).
Open Feeder → Mappings → New Mapping.
| Field | Description |
|---|---|
| Name | Display name. Must be unique. Required. |
| Handle | The token referenced from a feed's field template as |map:handle. Must be unique. |
| Description | Optional free-text description. |
| Source label / Target label | Column headers shown above the mapping's value rows in the editor (e.g. "Craft category" / "Marketplace category ID"), purely for readability. |
| Enable this mapping profile | Disabled mappings are excluded from the |map: chip list shown in the feed editor. |
Below the header fields, add one row per value pair: a source value (what
appears in your Craft data) and the target value it should become in the
export. Row order can be adjusted (sort_order), and individual rows can be
enabled/disabled without deleting them.
Once at least one mapping exists, its handle appears as a clickable
|map:handle chip in every feed's template-mode sidebar (see
Fields, template mode and modifiers).
Rules
Feeder → Rules manages reusable element conditions that can be attached to any number of feeds, so a filtering condition only needs to be defined once (e.g. "only entries created in the last 30 days") and reused across every feed that needs it.
Open Feeder → Rules → New Rule.
| Field | Description |
|---|---|
| Name | Display name. Must be unique. Required. |
| Description | Optional free-text description, max 255 characters. |
| Priority | Integer used to order rules when more than one is attached to the same feed. Required. |
| Condition | An element condition builder (by date created, ID, slug, related-to/not-related-to) — the same rule types available on a feed's own inline Conditions field. |
| Enable this rule | Disabled rules are ignored even if still attached to a feed. |
Attach a rule to a feed from the feed editor's condition/rules section; a feed's exported rows must satisfy its own inline condition and every enabled rule attached to it.
History
Feeder → History lists every export run, most recent first: the feed
it belongs to, status (success/failed), row count, delivery target
(local, browser, or an ftp:///ftps:// URL), and — for local runs
with a file still on disk — a Download link
(feeder/history/<id>/download) to re-fetch the exact file that run
produced.
Whether runs are logged at all is controlled globally by Enable history logging in Settings. Run history retention (days) is a stored preference only in v1.3.0 — nothing prunes old entries or files automatically, so history rows accumulate until removed manually.
Dashboard and Overview
Feeder → Dashboard and Feeder → Overview give an at-a-glance view across all feeds (dashboard widgets and a tabular overview, respectively) — useful for spotting a feed that hasn't run recently or that failed on its last attempt without opening each feed individually.
A typical flow, end to end
- An admin creates a
marketplace-categoriesmapping translating Craft category names to the marketplace's numeric category IDs. - They create a
30-days-activerule restricting exports to entries created in the last 30 days. - They create a Products feed with Output: XML, attach the
30-days-activerule, and use template mode with{categoryId|map:marketplace-categories}in the element pattern to pull in the mapped category. - Generate feed is used once to confirm the output and check History for the row count and any errors.
- Generate feed is set to By Schedule with
0 3 * * *(daily at 03:00) and FTP delivery is enabled pointing at the marketplace's drop folder — so from then on, the feed regenerates and uploads itself automatically once the recurringrun-dueconsole call is wired into the server's cron (see Developer API → Scheduling).