Guide: Content Ingestion Pipeline

Build a content ingestion pipeline that automatically collects newsletter content from Slack, Notion, Google Docs, HRIS, and GitHub into your content library.

Stop chasing people for content. Build a pipeline that collects newsletter material from your existing tools automatically.

The problem

The biggest time sink in internal newsletters isn't writing — it's collecting. You Slack people, send reminder emails, and still get updates at the last minute. A content ingestion pipeline solves this by meeting content where it already lives.

Architecture

Slack ──────┐
Notion ─────┤
HRIS ───────┤──→ Webhook Ingest ──→ Content Library ──→ Newsletter
GitHub ─────┤      (API)              (draft blocks)     (assembly)
Google ─────┘

Each source pushes content to your Internal Newsletter content library via the webhook ingest endpoint. Content arrives as draft blocks. The comms lead reviews, edits, and includes what's relevant.

Setting up sources

Slack

See the Slack integration guide for three approaches — from no-code Zapier to a custom Slack bot.

Best trigger: Emoji reaction (e.g. :newspaper:) on messages in #company-updates.

HRIS (BambooHR, Rippling, HiBob)

See the HRIS integration guide for connecting your HR system.

Best triggers: New hire, work anniversary, promotion.

Notion

Use the Notion API to watch for pages tagged "newsletter":

  1. Query the Notion API for pages in your "Company Updates" database
  2. Filter for pages with a "Newsletter" tag added since last check
  3. Extract title and body content
  4. POST to /api/v1/webhooks/ingest

GitHub / Linear

When a release is published:

  1. GitHub Actions workflow triggers on release.published
  2. Formats the changelog as HTML
  3. POSTs to ingest with block_type: "wins_milestones"

Google Forms

Replace your "submit newsletter content" email with a Google Form:

  1. Create a form with Title, Content, and Type fields
  2. Use Zapier/Make to forward responses to the ingest endpoint
  3. Employees submit content via a friendly form, it lands in your library

Managing the pipeline

Filtering by source

Use the API to see what came from where:

# All webhook-ingested content (needs review)
curl "$BASE_URL/content_blocks?source=webhook"

# All agent-created content
curl "$BASE_URL/content_blocks?source=agent"

# All employee submissions
curl "$BASE_URL/content_blocks?source=submission"

Review workflow

  1. Content arrives as draft blocks from various sources
  2. Comms lead reviews in the UI — edits, adds images, adjusts tone
  3. Marks good blocks as ready
  4. Ready blocks are available for newsletter assembly

This keeps the human in the loop while eliminating the collection burden.