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
Postobject. - 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. - Pagination —
nextCursoron every response; point the next call at it withafter:. - 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/apifor 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 andcraft.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
License
Craft
Last release
April 24, 2026