instagram_business_manage_messages vs instagram_manage_messages: Which Should You Request?
The difference between Instagram Business Login scopes and the older Facebook Login Instagram permissions, which one your app needs, and why mixing them gets rejected.
Meta has two ways for apps to access Instagram professional accounts, and each has its own set of permissions. Requesting the wrong set for your login flow is one of the most common reasons Instagram submissions get rejected.
The two flows
| Instagram API with Facebook Login | Instagram API with Instagram Business Login | |
|---|---|---|
| User logs in with | ||
| Needs a Facebook Page | Yes, linked to the Instagram account | No |
| Profile and media | instagram_basic | instagram_business_basic |
| Messages | instagram_manage_messages | instagram_business_manage_messages |
| Comments | instagram_manage_comments | instagram_business_manage_comments |
| Publishing | instagram_content_publish | instagram_business_content_publish |
| Insights | instagram_manage_insights | instagram_business_manage_insights |
Which one to use
- Your users are creators and small businesses who may not have a Facebook Page: Instagram Business Login.
- Your users already manage Facebook Pages, or you also need Facebook Page permissions: Facebook Login.
- You need both Facebook and Instagram in one inbox: Facebook Login usually keeps it to one flow.
Why mixing them gets rejected
The reviewer logs in using the flow in your screencast. If they see Facebook Login but you requested instagram_business_manage_messages, the permission can’t be exercised in that flow, so it’s rejected. The reverse is also true.
Messaging checklist for either flow
- The Instagram account is a professional account (Business or Creator).
- Allow access to messages is turned on in the Instagram app settings (Messages and story replies → Message controls → Connected tools).
- The screencast shows a message arriving from a test account, a reply sent from your app, and the reply arriving in Instagram.
- If agents reply after 24 hours, request Human Agent too.
Not sure which flow your app is on? Ask me. It takes a minute to check and can save a rejection.