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
10
Version
1.2.0
License
Craft
Compatibility
Craft 5
Last release
May 8, 2026
Categories
Activity (30 days)
0
Closed Issues
0
Open Issues
0
Merged PRs
0
Open PRs