Back to .md Directory

Facebook App Review Guide - WhatsApp Business Management Permission

Guides developers through Facebook App Review submission for the whatsapp_business_management permission using a server-to-server token model.

May 2, 2026
0 downloads
2 views
ai agent rag eval
View source

What this file does

Guides developers through Facebook App Review submission for the whatsapp_business_management permission using a server-to-server token model.

When to use it

  • Submitting a WhatsApp bot for App Review without a user-facing OAuth flow
  • Building a single-business WhatsApp integration with a permanent Page Access Token
  • Creating a screencast to demonstrate permission usage for Meta review
  • Avoiding common rejection reasons in Facebook App Review

Assumes this stack

WhatsApp Cloud APIMeta Business Manager

Facebook App Review Guide - WhatsApp Business Management Permission

Current Setup Analysis

Your app uses a server-to-server authentication model with a permanent Page Access Token, not a user-facing OAuth flow. This is common for single-business WhatsApp bots.

Two Submission Options

Option 1: Server-to-Server Submission (Recommended for your use case)

Since you're using a page access token and don't have a user-facing login flow, clearly state this in your submission.

Submission Notes Template

This is a server-to-server application using a Page Access Token with whatsapp_business_management permission.

AUTHENTICATION METHOD:
- No frontend Meta login flow is visible to end users
- The application uses a permanent Page Access Token generated via Meta Business Manager
- Token has whatsapp_business_management permission pre-authorized by the business owner

USE CASE:
This WhatsApp AI Agent automatically responds to customer inquiries for CubreJardin business via WhatsApp Cloud API. The bot:
- Receives incoming WhatsApp messages via webhook
- Processes FAQs using RAG (Retrieval Augmented Generation)
- Sends automated responses to customers
- Escalates complex queries to human agents

PERMISSION USAGE:
The whatsapp_business_management permission is used to:
1. Receive incoming messages from customers (webhook subscription)
2. Send text responses to customer inquiries
3. Send approved message templates outside 24-hour window
4. Mark messages as read
5. Transfer conversation control to human agents (Page Inbox)

TOKEN GENERATION FLOW (shown in screencast):
1. Business owner logs into Meta Business Manager
2. Navigates to WhatsApp Business Account settings
3. Generates System User with whatsapp_business_management permission
4. Creates permanent token assigned to the WhatsApp Business Phone Number
5. Token is configured in the server application environment variables

What to Show in Screencast

  1. Meta Business Manager Access (2-3 min)

    • Log into business.facebook.com
    • Navigate to Business Settings → Users → System Users
    • Show existing system user OR create new one
    • Show whatsapp_business_management permission is granted
  2. Token Generation (2-3 min)

    • Click "Generate New Token"
    • Select your app
    • Check "whatsapp_business_management" permission
    • Show token being generated (blur the actual token)
    • Explain: "This token will be used server-side"
  3. Application Configuration (1-2 min)

    • Show .env.example file (NOT actual .env with real tokens)
    • Highlight FACEBOOK_PAGE_ACCESS_TOKEN variable
    • Explain: "The generated token is configured here"
  4. End-to-End Use Case (3-5 min)

    • Show webhook configuration in Meta Dashboard
    • Demonstrate incoming message to WhatsApp number
    • Show webhook receiving the message (server logs)
    • Show bot processing and responding
    • Show message delivered to customer
    • (Optional) Show escalation to human agent
  5. Captions to Include

    • "Server-to-server app - no user login required"
    • "Business owner grants permissions via Business Manager"
    • "Token configured in server environment"
    • "whatsapp_business_management enables sending/receiving messages"

Option 2: Implement OAuth Flow (If you want multi-tenant support)

If you want to allow multiple businesses to connect their WhatsApp numbers to your platform, you'll need a proper OAuth flow. See oauth_implementation_guide.md for details.


Screencast Best Practices

Technical Requirements

  • Language: English UI (change Meta interface to English)
  • Resolution: 1920x1080 minimum
  • Duration: 5-10 minutes (max 15 minutes)
  • Format: MP4, MOV, or AVI
  • Audio: Clear narration in English OR text captions

Narration Script Template

"This is a server-to-server WhatsApp Business API integration for CubreJardin customer support.

[Screen: Meta Business Manager login]
I'm logging into Meta Business Manager as the business owner.

[Screen: System Users]
Here in Business Settings, I navigate to System Users where we manage API access.

[Screen: System User details or create new]
This system user has the whatsapp_business_management permission, which allows our server to send and receive messages through WhatsApp Cloud API.

[Screen: Generate Token or show existing]
We generate a permanent token with the whatsapp_business_management permission selected. This token is configured server-side in our application.

[Screen: Application code/env example]
The token is securely stored in environment variables, not exposed to end users.

[Screen: Webhook configuration]
Our webhook is configured to receive messages from our WhatsApp Business Number.

[Screen: Send test message from phone]
When a customer sends a message to our WhatsApp number...

[Screen: Server receiving webhook]
Our server receives the webhook event with the message content...

[Screen: Bot responding]
The bot processes the inquiry using AI and sends an automated response...

[Screen: Customer receives message]
The customer receives the answer immediately.

This demonstrates the complete flow of the whatsapp_business_management permission usage in our server-to-server application."

What to Blur/Hide

  • ❌ Actual access tokens
  • ❌ App secrets
  • ❌ Phone number IDs (optional, can show)
  • ✅ Can show: webhook URLs, public endpoints, demo messages

Recording Tools

  • macOS: QuickTime Player (free), ScreenFlow (paid), or OBS Studio (free)
  • Captions: iMovie (free on Mac), DaVinci Resolve (free), or Camtasia (paid)

Common Rejection Reasons & How to Avoid

Rejection ReasonSolution
"Doesn't show Meta login flow"Clearly state "server-to-server" in submission notes
"Doesn't show permission grant"Show System User permissions in Business Manager
"Doesn't show end-to-end use case"Include complete flow: message in → processing → response out
"No captions/unclear UI"Add text overlays explaining each step
"Non-English interface"Change Meta Business Manager language to English

Checklist Before Submission

  • Submission notes explicitly say "server-to-server app"
  • Submission notes explain no frontend login flow
  • Screencast shows Meta Business Manager access
  • Screencast shows whatsapp_business_management permission
  • Screencast shows token generation or existing token access
  • Screencast demonstrates complete message flow (send → receive → respond)
  • Screencast has English captions/narration
  • All sensitive tokens/secrets are blurred
  • Duration is 5-15 minutes
  • Video quality is clear and readable

Next Steps

  1. Record Screencast: Follow the script above
  2. Add Captions: Explain each step clearly
  3. Review: Watch it yourself - is the flow clear?
  4. Submit: Upload to Facebook App Review with the submission notes

Need Help?

What's inside

Two submission options, screencast script, rejection table, and a 10-item checklist

Change this for your project

  • Replace CubreJardin with your business name throughout
  • Replace FACEBOOK_PAGE_ACCESS_TOKEN with your actual env variable name if different
  • Replace carlosgl93/cubrejardin-ai-agent with your repository name if referenced

Where it goes

Keep in docs/ or alongside the feature. Agents read it to implement against a defined contract.

Worth borrowing

  • Structuring App Review submission notes around authentication method, use case, and permission usage
  • Including a screencast script with timestamps and captions to preempt rejection reasons

Related Documents