Social Stream pulls Instagram posts straight into your Craft templates with a single Twig call. It handles the OAuth dance with Meta, keeps your long-lived access token refreshed, caches responses sensibly, and exposes a predictable data contract you can render however you like. No field type to configure, no element index to maintain — just connect an Instagram Business or Creator account in the control panel and start templating.

Features

  • Instagram Graph API v21.0 — posts, carousels, videos, captions, timestamps, like and comment counts, permalinks, and author metadata, all normalised into a consistent Post object.
  • Stale-while-revalidate caching — expired cache data is served immediately while a background job refreshes it. Your site never waits on Instagram.
  • Stampede protection — mutex locks prevent a thundering herd when the cache goes cold.
  • Automatic token refresh — long-lived tokens (60-day validity) are refreshed opportunistically, well before they expire. One cron line; no separate daily refresh job.
  • Load-balancer-safe cron — jobs are deduplicated against the Craft queue table (read through the primary database connection, so replica lag can't fool it). Safe to run on every web host in a distributed setup without any cron-on-one-host gymnastics.
  • Multi-site — each Craft site can connect its own Instagram account with its own settings. The site switcher at the top of the settings page handles it.
  • Connection Health panel — at-a-glance token status (green / amber / red), expiry date, last successful fetch, last error, rate-limit cooldown, and API version — right on the Connection tab.
  • Carousel support — carousel children are fetched in a single pass and exposed as post.children.
  • PaginationnextCursor on every response; point the next call at it with after:.
  • Stream Preview — render your connected feed live in the CP before touching a template.
  • Optional JSON API — a bearer-token-protected endpoint at /actions/social-stream/api for JavaScript front-ends, mobile apps, or headless setups.
  • Config file overrides — every CP setting is overridable via config/social-stream.php, so your environments stay deterministic.
  • Extensible — register your own provider with one Event::on() call and craft.socialStream.getStream({ provider: 'myprovider' }) just works. Lifecycle events let you short-circuit or transform fetches.

Standard

Plus $5/year after one year.

Installation Instructions

To install this plugin, copy the command above to your terminal.

Reviews

This plugin doesn't have any reviews.

Active Installs
0
Version
1.1.1
License
Craft
Compatibility
Craft 5
Last release
April 24, 2026
Categories