Using FeedManager

Last modified: 7/28/2026

Using FeedManager

FeedManager is the runtime of the feeds addon — it pulls structured data from external feeds (earthquake catalogs, alert feeds, any JSON/GeoJSON endpoint) on a schedule and makes the records available on your pages, without creating one page per record. The data lives in a record store and refreshes on its own; your page just displays the latest.

The feeds addon is disabled by default. An administrator must enable it and configure at least one source before anything renders.

Enabling (administrators)

Add flat config keys to the instance's custom configuration (or via the admin configuration UI):

ngdpbase.addons.feeds.enabled: true
ngdpbase.addons.feeds.sources.usgs-quakes.adapter: geojson
ngdpbase.addons.feeds.sources.usgs-quakes.url: https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_day.geojson
ngdpbase.addons.feeds.sources.usgs-quakes.type: Event
ngdpbase.addons.feeds.sources.usgs-quakes.intervalMinutes: 30

Each source needs adapter, url, and type. Optional: intervalMinutes or dailyAt (schedule), recordIdField, itemsPath and map (field mapping for rest-json).

Available adapters today: geojson (GeoJSON FeatureCollections), rest-json (generic JSON endpoints), and xml (generic XML documents — attributes are addressed as element.@attribute, element text as element.#text). More formats (RSS/Atom, CSV) are planned.

Showing feed data on a page

A table of records — DataFeedPlugin

[{DataFeed source='usgs-quakes'}] renders the source's records as a sortable table. Useful parameters:

Example:

[{DataFeed source='usgs-quakes' columns='place,magnitude' sort='magnitude-desc' max='10'}]

Hiding unwanted records — exclude

exclude='field~pattern' removes records whose field matches pattern. Matching ignores upper/lower case, and the pattern is a regular expression, so | means "or":

[{DataFeed source='volcano-news' exclude='summary~VAAC:|VA ADVISORY|DTG:'}]

That example drops re-published aviation bulletins from a general news feed, leaving the original reporting.

Two things to know:

A map of records — format='map'

When records carry coordinates, format='map' plots them on an interactive map instead of a table:

[{DataFeed source='firms-viirs' format='map' columns='frp,confidence,acq_date'}]

When a feed has nothing to show

A feed with no records is normal, not a fault — an alerts feed is empty precisely when there is nothing to alert about. The plugin says so in plain language:

No records are currently available for this feed.

Use empty= when the page can say something more useful than the generic wording:

[{DataFeed source='tsunami-alerts' empty='No tsunami messages are currently active for the US.'}]

Two situations are not treated as an empty feed, and empty= deliberately does not cover them:

Both show a short diagnostic instead, because they mean the page is broken rather than quiet. Hiding them behind reassuring wording would let a page announce "nothing is currently active" when in fact nothing was ever checked.

A scrolling one-liner — MarqueePlugin

The latest records can run as a banner without any feed-specific plugin:

[{MarqueePlugin fetch='FeedManager.toMarqueeText(source=usgs-quakes,max=5)'}]

Good to know

See Plugins for the complete plugin list.