Skip to main content
Connecting social accounts has two separate parts:
  1. OAuth: the user grants bundle.social access to the platform account.
  2. Channel selection: bundle.social selects the exact Page, channel, organization, location, board, subreddit, or workspace target to use for this team.
Most integration bugs happen when these steps get mixed together. OAuth says “this Meta user granted access.” Channel selection says “this team should use this Facebook Page.”

Hosted Flow

Create a portal link and let bundle.social handle OAuth, pickers, language, and UI.

Custom UI Flow

Build the account picker yourself and call the connect and channel endpoints directly.

Channel Management

Use set-channel, refresh-channels, and unset-channel for platforms with multiple targets.

OAuth Options

Understand disableAutoLogin, forceBrowserOAuth, withBusinessScope, and Instagram connection methods.

Callback Parameters

Handle success and error query parameters after OAuth completes.

Which Flow Should I Use?

FlowBest forWhat you build
Hosted flowMost appsA button that opens the portal link
Custom UI flowApps that need a fully custom account connection UIOAuth button, callback handling, channel picker, and reconnect states
Use the hosted flow unless you have a strong reason to own the whole connection UI.

The Meta Rule

For Facebook and Instagram via Facebook, ask the user to select all Pages and Instagram accounts they manage in the Meta OAuth screen. After OAuth, choose the one Page or Instagram account for the current bundle.social team in the hosted picker or with POST /api/v1/social-account/set-channel. This does not mean one team publishes to every Page. Meta keeps the app grant for every Page the user manages, while bundle.social stores the selected target separately per team.
If the same Meta user connects multiple bundle.social teams and selects only one Page during each OAuth flow, Meta can overwrite page grants for the bundle.social app at the Meta-user level.That can leave one team looking connected in bundle.social, while Meta has removed the Page grant remotely. Publishing can then fail with must be granted before impersonating a user's page.
Correct flow:
  1. Reconnect Facebook or Instagram via Facebook.
  2. In Meta OAuth, choose Select all or manually select every Page and Instagram account the Meta user manages.
  3. Back in bundle.social, select the one Page or Instagram account for this team.
  4. Retry the failed post.

Platform Selection Rules

PlatformOAuth enough?Needs set-channel?Notes
FacebookNoYesSelect a Facebook Page.
Instagram via FacebookNoYesSelect an Instagram account connected to a Facebook Page.
Instagram direct OAuthYesNoPass instagramConnectionMethod: "INSTAGRAM" in custom UI.
LinkedInNoYesSelect a member profile or Company Page.
YouTubeNoYesSelect a YouTube channel.
Google BusinessNoYesSelect a business location.
PinterestUsually yesNoBoards can be refreshed with refresh-channels.
RedditUsually yesNoDestinations can be refreshed with refresh-channels.
SlackUsually yesNoWebhook channels can be refreshed with refresh-channels.
DiscordUsually yesNoWebhook channels can be refreshed with refresh-channels.
Need endpoint details? Start with Hosted Flow or Custom UI Flow.