Skip to main content

Social feed and Instagram connection

Your dashboard can show the most recent posts from your organization's Instagram and X / Twitter accounts side-by-side with bulletins. The Instagram integration goes through the Instagram Graph API and pulls posts automatically; X / Twitter is a manual link only. This page covers how to connect Instagram, what happens after the token expires, and how the feed behaves on member dashboards.

Open the social accounts panel

Org → Settings → Social Accounts. The panel lists every social account currently attached to your organization, with status badges for Active, Inactive, and (for Instagram only) OAuth.

Each row shows the platform icon, the handle, an external-link button to open the profile in a new tab, and a delete (trash) button.

Social Accounts panel showing connected Instagram with the OAuth badge and a manually-added X account Social Accounts panel showing connected Instagram with the OAuth badge and a manually-added X account

Two ways to add an account

There are two distinct flows on this page, and the choice matters:

  1. Connect Instagram (recommended for Instagram). This is the OAuth flow through Facebook Login that grants the platform a long-lived access token. The dashboard will then pull the account's recent posts on a schedule. Required if you want posts to appear automatically.
  2. Add Account (manual link). Pick a platform, paste the profile URL, and enter the handle. No OAuth, no token, no auto-fetching. This is useful when you only want a profile link displayed somewhere — it does not surface posts on member dashboards.

X / Twitter only supports the manual flow. There's no Twitter OAuth on the page in v0.62.1.

Connect an Instagram business account

To pull Instagram posts onto the dashboard, the account must be a Business or Creator account on Instagram and it must be connected to a Facebook Page that you administer. The Graph API does not work with personal Instagram accounts.

To connect:

  1. From Org → Settings → Social Accounts, click Connect Instagram.
  2. You'll be redirected to Facebook Login. Sign in with the Facebook account that manages your organization's Facebook Page.
  3. Grant the requested permissions. The platform asks for the minimum set required to read Instagram posts (instagram_basic, pages_show_list, pages_read_engagement, business_management).
  4. Facebook redirects you back to the settings page. The OAuth callback runs in the background.
  5. The flow inspects every Facebook Page you administer and looks for a connected Instagram business account. If exactly one is found, it's connected automatically. If several are found, all of them are connected by default; you can delete the ones you don't want from the panel.
  6. Connected accounts show an OAuth badge in their row, indicating the long-lived token is in place. The first batch of recent posts is fetched immediately in the background.

Token lifetime and automatic refresh

Instagram long-lived tokens are valid for 60 days. The platform stores the token encrypted at rest. A background task runs daily and refreshes any token that is set to expire within the next 7 days, swapping in a fresh 60-day token without any admin intervention.

In practice, as long as your account is active and the daily refresh task is running, you should not need to reconnect Instagram. If the refresh task fails to acquire a new token — for example, because the Facebook user revoked the app, because the password changed, or because the Page was unpublished — the existing token will eventually expire and the OAuth badge will drop off the row.

You'll typically see the symptom as "Instagram posts stopped updating about a week ago." The fix is to click Connect Instagram again from the same admin or any national admin account.

What appears on the dashboard

Members see a Social card on their dashboard. The card has three filter tabs at the top — All, IG, X — and a scrollable post list beneath. Each row in the list shows:

  • The platform icon (IG or X)
  • The handle and platform name
  • A two-line content preview
  • Likes count and either comment count (Instagram) or repost count (X)
  • A relative timestamp ("3h ago", "2d ago", "1w ago")
  • A thumbnail of the post's media if there is one

Tapping a row opens the original post in a new tab. The dashboard fetches up to a small batch of recent posts per account; if you have no Instagram connection, the IG tab still appears but is empty.

Click Add Account to open the manual dialog. Pick the platform, paste the profile URL, and enter the handle (the dialog auto-extracts the handle from the URL if it can). You can optionally add a display name.

This adds the account as a row but does not start fetching posts. There is no automatic post fetch for X / Twitter accounts in v0.62.1 — the manual-add flow is essentially a profile pointer. Use it for X / Twitter or as a placeholder while you wait to do the Instagram OAuth flow.

Disconnect an account

Click the trash icon on any row. The account is deleted along with all of its cached posts. If you delete an OAuth-connected Instagram account and want to reconnect later, you'll need to run Connect Instagram again — the platform does not retain the revoked token.

Mobile differences

The Social Accounts panel works on phones but is tight; the connect and add buttons stack rather than sitting side-by-side. The Facebook OAuth redirect leaves the in-app browser, hands off to the system browser or the Facebook app if installed, then returns via universal link. If the return path fails (some carrier networks block it), open the desktop site and reconnect there.

The dashboard Social card on phones drops to a single column. The filter tabs stay; thumbnails shrink to a smaller fixed size.

What chapter officers see that you don't

Chapter officers do not have access to Org → Settings → Social Accounts at all. They see the resulting Social card on their dashboards exactly like a regular member. If an officer asks to be able to swap the connected Instagram account, that's a national admin decision — the officer cannot do it themselves.

Errors and edge cases

  • "Instagram OAuth is not configured." The platform-level Facebook App ID and secret aren't set. Ask your platform admin to configure META_APP_ID, META_APP_SECRET, and META_OAUTH_REDIRECT_URI. Until those are set, the Connect Instagram button returns this error.
  • "No Facebook Pages found." Your Facebook user doesn't administer any Pages. Instagram business accounts are always linked to a Facebook Page — you can't bypass this. Create or get added to the Page first, then retry.
  • "No Instagram Business/Creator accounts found connected to your Facebook Pages." Your Facebook Page exists but doesn't have a connected Instagram account, or the connected Instagram account is personal rather than business/creator. Convert the Instagram account to Business in the Instagram app, link it to the Facebook Page, then retry.
  • "Invalid or expired state." The OAuth state token timed out (10 minutes) or the page was reloaded mid-flow. Start over by clicking Connect Instagram again.
  • Posts seem to lag the actual Instagram feed. The dashboard does not stream Instagram in real time. Recent posts are fetched on connect and refreshed on the same daily schedule that refreshes the token; you should expect lag of up to a day.

Troubleshooting

  • "It worked yesterday and now posts have stopped showing up." Open the Social Accounts panel and check the row's badge: if OAuth is gone, the token expired and the refresh failed. Click Connect Instagram again.
  • "We have two Instagram accounts and only want one to show up." Run Connect Instagram; both will be added. Delete the one you don't want from the panel.
  • "A member's filter shows IG with no posts." Either no Instagram is connected, the connected account has no recent posts, or the background fetch hasn't run yet. Wait a few minutes after connecting, then reload the dashboard.
  • "I want to remove our Instagram account from the platform entirely." Click the trash icon on the row. The encrypted token is deleted along with the row; the platform retains no copy.

What's deliberately not built

  • No OAuth for X / Twitter. X support is profile-link only.
  • No live polling — posts refresh on the daily background schedule, not in real time.
  • No deeper analytics on the dashboard (per-post engagement charts, week-over-week trends).
  • No member-level filtering — every member sees the same Social card content.
  • No publishing to Instagram from inside the platform. This is read-only.

Last verified against v0.62.1 (2026-05-11).