Meta White-label Setup

Use your own Meta app so Instagram, Threads, and Facebook OAuth prompts show your brand instead of UniPost. This is the guide to get one Meta app working inside UniPost quickly.

Fastest route to a first success: create the app in Meta for Developers, add the callback URL shown on this page, paste the credentials into UniPost, then connect one real test account before you expand scope or review work.

At a glance

QuestionAnswer
Create the app inMeta for Developers
UniPost credential cardMeta (Instagram / Threads)
Client fields to copyApp ID + App Secret
Best forProducts onboarding customer-owned Instagram, Threads, or Facebook assets with a single branded Meta app.
App review / approvalPlan for App Review / Advanced Access before broad production rollout, especially if you need public customer onboarding.

Before you start

  • A Meta Business account with access to Meta for Developers.
  • A clear list of which surfaces you need first: Instagram, Threads, Facebook Pages, or a combination.
  • A test business asset you can safely reconnect more than once during setup.
  • Your production brand name and logo, because Meta surfaces them during review and consent.

Callback URLs to whitelist

Copy these exactly into the platform developer console. Redirect mismatches are the fastest way to burn time during setup.

https://api.unipost.dev/v1/oauth/callback/instagram
https://api.unipost.dev/v1/oauth/callback/threads
https://api.unipost.dev/v1/oauth/callback/facebook

First working setup

1
Create one Meta app for your first launch surface
Start with the smallest surface set you need right now. A single Meta app can back multiple UniPost flows, but setup is faster if you first prove one happy path with a test asset.
2
Add every UniPost callback you plan to use
Meta setups are easiest when you whitelist all expected UniPost callback URLs up front. If your team will connect Instagram and Threads from the same app, add both callback URLs before testing.
3
Copy the App ID and App Secret into UniPost
Open the White-label Credentials screen in UniPost, find the Meta card, and paste the App ID and App Secret exactly as shown in Meta. Save once; you do not need separate credentials per profile field.
4
Run one connection test with a real test asset
Use an actual Instagram account, Threads profile, or Facebook Page you control. The goal is to confirm the consent screen shows your app and that UniPost returns to the workspace without an OAuth error.
5
Only then expand scope and review work
After one test asset connects end to end, add any extra products, permissions, or review submissions. This keeps your troubleshooting surface small while you prove the base wiring.

What to paste into UniPost

Meta app fieldUniPost fieldNotes
App IDApp IDPaste into the Meta credential card in UniPost.
App SecretApp SecretStored encrypted; UniPost never shows it back in the read view.
OAuth redirect allowlistCallback URLs belowAdd every Meta callback your rollout needs before testing.

Save the credentials first, then start a fresh connection attempt. Troubleshooting an OAuth flow against stale credentials usually creates false leads.

Connect an Instagram account through your app

After your Meta app credentials are saved, prove the customer-facing flow your own app will use: create an API key, choose the branded profile, create a Connect session, send the returned OAuth URL to your end user, then confirm UniPost recorded the managed Instagram account.

1
Step 1: create your first API key in the dashboard
Open UniPost in the same workspace where you saved the Instagram credentials, create an API key, and store it immediately. The first key must be created in the dashboard because there is no API key available yet to call POST/v1/api-keys.
2
Step 2: list profiles and copy the `profile_id` you will use for branding
Every workspace gets at least one profile. Start by listing profiles so you can grab the id for the profile that should own your hosted Connect branding.
3
Step 3: patch the profile branding that should show on hosted Connect
With the profile_id in hand, update the logo, display name, and primary color. This is the fastest way to confirm your hosted Connect surface is reading your own branding instead of UniPost defaults.
4
Step 4: create an Instagram Connect session for your app user
From your backend, create a Connect session with platform set to instagram, the branded profile_id, and your stable external_user_id. UniPost returns a hosted OAuth URL. Redirect your app user to that URL, or open it inside the connection flow in your own product, so they can authorize their Instagram account under your white-label app. The same Meta credential pair can support Instagram, Threads, and Facebook, but each Connect session still needs the exact surface the user is connecting.
5
Step 5: confirm the managed Instagram account is visible through the API
After the user completes OAuth, UniPost stores the connected Instagram account as a managed account tied to your external_user_id. Verify it through the accounts API; the same user should also appear in the dashboard's Developer App Users view. If your rollout starts with Threads or Facebook instead, use the matching platform value when you create the session and when you filter the accounts list.
6
Step 6: use that managed account and profile in your first real API workflow
At this point you have the four values you need most often: API_KEY, profile_id, external_user_id, and the connected Instagram account_id. From here, run a small end-to-end publish test against the connected account so you know the white-label Meta app is usable, not just visible.

Common blockers

BlockerWhat to do about it
One Meta app, multiple surfacesInstagram, Threads, and Facebook can share one Meta app, but each UniPost flow may use a different callback path. Whitelist all needed paths before you test.
Review can block scaleA test user flow may work before full public rollout is approved. Do not assume one successful internal test means public customer onboarding is ready.
Use a real test assetMeta permissions often behave differently if the connected asset is incomplete or not properly linked to a business account.

Definition of done

  • Your Meta app redirects back to UniPost without an OAuth error.
  • The consent screen shows your app name, not UniPost.
  • At least one target asset appears connected inside UniPost.
  • You have recorded which of the three Meta callback URLs your rollout actually depends on.

Next steps