Airwave for Craft CMS

Free for Craft CMS 5

Feeds, in both directions

Most feed plugins read. Airwave reads and publishes, and the two halves share one data model — so a feed you pull in can be re-broadcast on a feed you send out without writing a template. Paste a URL, put a tag on a page, and you are done.

Airwave

One line, or none at all

A tag in a template. A reference tag an author can paste into rich text, with no template change and no editor integration. Or a Feed field, so the person choosing which feeds appear on a page is the person editing it.

twig
{# In a template #}
{{ craft.airwave.render('craft-news', { limit: 5, layout: 'cards' }) }}

{# In any CKEditor, Redactor or HTML field #}
{airwave:craft-news:render}

{# Several feeds as one stream, newest first (Pro) #}
{{ craft.airwave.renderMerged(['craft-news', 'php-weekly'], { limit: 10 }) }}

{# Or take the markup over completely #}
{% for item in craft.airwave.items({ source: 'craft-news', limit: 5 }) %}
    <a href="{{ item.getLink() }}">{{ item.titleText }}</a>
    <p>{{ item.getExcerpt(160) }}</p>
{% endfor %}

Features

Four dialects in, four destinations out, and one item shape in the middle doing all the work.

Every dialect, sniffed not guessed

RSS 2.0, RSS 1.0 (RDF), Atom 1.0 and JSON Feed, detected by reading the document rather than trusting the file extension or the Content-Type.

  • Feeds are served as text/html constantly — the header is not evidence
  • Paste a site address instead and Airwave finds what it advertises

Filtered on the way in

Keyword, category, author and date rules run before an item is stored — so an item you never wanted is not merely hidden, it was never kept, and can never turn up in an entry by accident.

  • Changing the rules only affects future items
  • Reapply is a separate, explicit button, because it deletes things

A bad afternoon never blanks your page

If a refresh fails — the host is down, the certificate lapsed, the XML is broken — the stored items stay and keep rendering. Only the feed's health indicator changes.

Items as real entries

Map an item onto your own entry type with tokens or Twig, preview what would happen, and run it in capped background batches. Nothing is ever imported twice.

  • Dedupe is the record of this item became that entry — it survives renaming, moving and deleting
  • Categories create tags, but never invent branches in your category tree

Publish feeds of your own

A channel is a URI on your site plus enough configuration to answer it. Point it at a section and Airwave works out the mapping — or point it at the feeds it has already collected and publish a curated feed with no template at all.

  • RSS on Lite; RSS, Atom and JSON Feed on Pro
  • Cached, with a Cache-Control header that matches

Safe to point at a stranger's URL

Every host is resolved and private and reserved addresses are refused — on every hop of a redirect chain, because an open redirect on a public host walks straight past a check that only looks at the URL somebody typed.

  • Every item goes through HTML Purifier before it can reach a page
  • Aggregated markup is purified again on the way out of a channel

Frequently Asked Questions

The questions worth answering before you install it.

Start free, upgrade when you are curating

Lite covers three feeds and one published channel, for nothing. Pro is $59 with a $29/year renewal, and adds unlimited feeds and channels, filters, importing, merged streams, and Atom and JSON Feed output.