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
| Question | Answer |
|---|---|
| Create the app in | Meta for Developers |
| UniPost credential card | Meta (Instagram / Threads) |
| Client fields to copy | App ID + App Secret |
| Best for | Products onboarding customer-owned Instagram, Threads, or Facebook assets with a single branded Meta app. |
| App review / approval | Plan 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/instagramhttps://api.unipost.dev/v1/oauth/callback/threadshttps://api.unipost.dev/v1/oauth/callback/facebookFirst 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 field | UniPost field | Notes |
|---|---|---|
| App ID | App ID | Paste into the Meta credential card in UniPost. |
| App Secret | App Secret | Stored encrypted; UniPost never shows it back in the read view. |
| OAuth redirect allowlist | Callback URLs below | Add 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
| Blocker | What to do about it |
|---|---|
| One Meta app, multiple surfaces | Instagram, 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 scale | A 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 asset | Meta 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.