Skip to main content
Version: 2.0.0

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

FieldDescription
NameDisplay name. Must be unique. Required.
FilenameBase filename used for the generated export (without extension — the extension is derived from the output format). Must be unique. Required.
Element typeThe export source (Entries, Categories, Users, Assets, or, when installed, Products/Variants/Orders/Customers). Changing it reloads the available source fields and condition rules. Required.
ConditionsAn 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 |:

ModifierEffect
trimTrims surrounding whitespace.
lower / lowercaseLowercases the value.
upper / uppercaseUppercases the value.
slug / slugifyConverts the value to a URL-safe slug.
prepend:VALUEPrepends VALUE to the value.
append:VALUEAppends VALUE to the value.
replace:SEARCH,REPLACEMENTString-replaces SEARCH with REPLACEMENT.
default:VALUESubstitutes VALUE when the field is empty/null.
jsonJSON-encodes the value.
map:mappingHandleLooks 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

FieldDescription
CurrencyThe currency code used to format monetary fields. Defaults to the site's store currency when left blank.
Show currency abbrAppends the currency code/abbreviation after formatted amounts.
Number of decimal pointsDecimal precision for formatted amounts.
Separator for the decimal pointCharacter used as the decimal separator.
Thousands SeparatorCharacter used as the thousands separator.
Date formatDate format applied when normalizing date/time fields.

Run mode

FieldDescription
Generate feedManually (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 patternA 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).

FieldDescription
EnabledTurns on remote delivery for this feed after each generation.
HostServer hostname. Append a port with host:port if the server doesn't use the protocol's default port.
ProtocolFTP, FTPS, or SFTP. SFTP requires the PHP ssh2 extension; FTP/FTPS require the PHP ftp extension.
User / PasswordCredentials for the remote server.
PathRemote directory the file is uploaded into. Created automatically if it doesn't exist (FTP/FTPS).
Passive ModeFTP/FTPS passive mode toggle. Not applicable to SFTP.

Other

FieldDescription
SiteThe site whose content is exported.
CompressOptional compression applied to the output file.
Enable this feedDisabling 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.

FieldDescription
NameDisplay name. Must be unique. Required.
HandleThe token referenced from a feed's field template as |map:handle. Must be unique.
DescriptionOptional free-text description.
Source label / Target labelColumn headers shown above the mapping's value rows in the editor (e.g. "Craft category" / "Marketplace category ID"), purely for readability.
Enable this mapping profileDisabled 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.

FieldDescription
NameDisplay name. Must be unique. Required.
DescriptionOptional free-text description, max 255 characters.
PriorityInteger used to order rules when more than one is attached to the same feed. Required.
ConditionAn 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 ruleDisabled 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

  1. An admin creates a marketplace-categories mapping translating Craft category names to the marketplace's numeric category IDs.
  2. They create a 30-days-active rule restricting exports to entries created in the last 30 days.
  3. They create a Products feed with Output: XML, attach the 30-days-active rule, and use template mode with {categoryId|map:marketplace-categories} in the element pattern to pull in the mapped category.
  4. Generate feed is used once to confirm the output and check History for the row count and any errors.
  5. 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 recurring run-due console call is wired into the server's cron (see Developer API → Scheduling).