RSS → SLACK

Any RSS feed, posted to a Slack channel.

You want new releases, advisories or blog posts to show up where your team already looks. Slack's own RSS app is one more thing to configure per feed, and a hand-rolled poller means a seen-items table, a cron entry and the bug where it re-posts everything after a deploy. Point emit at the feed and give it a Slack incoming webhook instead.

One call

curl -X POST https://api.rssemit.com/v1/sinks \
  -H "Authorization: Bearer $EMIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "kind": "slack",
    "url": "https://hooks.slack.com/services/T000/B000/XXXX",
    "feed_url": "https://github.com/nodejs/node/releases.atom"
  }'

The feed here is a Node.js releases feed from the developer feed catalog, but any RSS, Atom or JSON Feed URL works — including feeds you don't own, and feeds emit built for you from a page that never had one.

Set up the Slack side

  1. Create a Slack app for your workspace at api.slack.com/apps (from scratch is fine).
  2. Turn on Incoming Webhooks in the app's settings.
  3. Choose Add New Webhook to Workspace and pick the channel the feed should post to.
  4. Copy the webhook URL (it starts with https://hooks.slack.com/services/) into url above. Treat it as a secret.
  5. Send a test with POST /v1/sinks/{id}/test to confirm it lands in the channel before you wait for the next item.

Or one digest a day

A busy feed doesn't need to ping the channel forty times. Add a schedule and emit holds new items and posts one message at the boundary:

curl -X POST https://api.rssemit.com/v1/sinks \
  -H "Authorization: Bearer $EMIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "kind": "slack",
    "url": "https://hooks.slack.com/services/T000/B000/XXXX",
    "feed_url": "https://github.com/nodejs/node/releases.atom",
    "schedule": "daily",
    "digest_hour": 9,
    "digest_tz": "America/New_York"
  }'

Use "schedule": "weekly" with digest_weekday (0 is Monday) for a weekly roundup. Without a schedule, each item is posted as it arrives.

The parts you were going to get wrong

Pricing

250 sink deliveries a month free. Polling feeds costs nothing, and each account gets 250 free sink deliveries per calendar month (UTC) across Slack, Discord, Teams, Telegram, Google Chat and JSON sinks. After that each delivery is 1 credit ($1.60 per 1,000 credits); a daily or weekly digest counts as one delivery however many items it carries, and test sends are free. If the allowance is used and the balance can't cover more, deliveries pause and items are held, not dropped, until you add credits.

This is a chat sink, not a webhook of yours

A Slack sink posts to Slack's incoming-webhook URL. It is separate from the JSON sink, which POSTs a feed's items to your own endpoint, and from the signed account-event webhooks in the API guide, which report things that happened in your emit account.

Other chat destinations

The same call works for other chat apps: change kind and the destination url. Setup for Discord, Microsoft Teams, Telegram and Google Chat is in the API guide, and they share the same allowance, digests and retries.

Connect Slack → Read the API docs