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