Meta App Review Screencast Script

Version 6 — Third Submission (Cancel-First OAuth Flow)
February 26, 2026 · Stylify Content Publisher
App NameStylify Content Publisher
App ID1275998977712554
Business EntityElev8 Ventures LLC
Approvedinstagram_business_basic — ✅ Approved Feb 26, 2026
Resubmittinginstagram_business_content_publish, instagram_business_manage_insights
Video Format2 videos — one per rejected permission (each fully self-contained)
Versionv6 — Denied permission demo moved BEFORE successful connect (cancel-first)

Version History & Root Causes

Why v4 Was Rejected

v4 Problem: Videos Were Not Self-Contained

Only Video 1 (basic) contained the full OAuth login flow. Videos 2 and 3 started with the account already connected and submission descriptions said:

"The OAuth login flow is demonstrated in the instagram_business_basic screencast."

Meta reviewers evaluate each permission independently — likely different reviewers. They don't cross-reference other videos.

v5 Fix: Each video made fully self-contained with the complete OAuth flow.

Why v5 Needed Correction Before Recording

v5 Problem: Cancel-at-End Creates a Broken State

v5 placed the "denied permissions" demo at the end of each video (Phase 3). The sequence was:

Phase 1: Successful OAuth → Connected
Phase 2: Feature demo
Phase 3: Disconnect → OAuth again → Cancel → Friendly error

The problem: Disconnecting in Stylify's Settings only removes the token from Stylify's database. It does NOT revoke the app authorization on Instagram's side. So when you attempt OAuth a second time and click Cancel, Instagram may still treat the account as authorized — because it already granted access in Phase 1. The "denied" state may not be clean, and the app may still show as connected.

v6 Fix: Cancel-First OAuth Flow. The denied permissions demo is now shown FIRST — before the app has ever been authorized. The user cancels on the consent screen during the first OAuth attempt (clean state, never been authorized). Then the user reconnects immediately using a second OAuth attempt (Allow this time). This guarantees the Cancel demo works correctly because the account has never previously granted access.

Full Change Log: v4 → v5 → v6

OAuth in every videov4: Only Video 1 → v5+: In EVERY video
Cross-referencesv4: "See basic screencast" → v5+: No cross-references
Videos neededv4: 3 → v5+: 2 (basic approved)
Denied permissions demo positionv5: End of video (Phase 3) → v6: FIRST in Phase 1 (before successful connect)
OAuth attempts per videov5: 2 (allow first, cancel second) → v6: 2 (cancel first, allow second)
Entity namev4: KW Aesthetics LLC → v5+: Elev8 Ventures LLC

Pre-Recording Checklist

❗ CRITICAL: Each Video Starts Disconnected — AND Never Previously Authorized

Before recording EACH video, go to Settings → Instagram → Disconnect. This removes the token from Stylify. Each video starts with Instagram not connected in Stylify, and the account has not previously authorized the app in this browser session. The Cancel demo happens first (clean state), followed by the Allow demo.

⚠️ Recording Order

Record Video 1 (content_publish) FIRST if you need to publish a post for Video 2's insights data. If you already have a 24+ hour old published post, order doesn't matter.

💡 The Cancel-First Flow in Plain English

Each video now shows: (1) Settings — not connected, (2) Click Connect → Meta login → consent screen → click Cancel → back to Stylify → friendly error message, (3) Click Connect again → consent screen → click Allow → connected, (4) Feature demo. No Phase 3 needed — the denied demo is already done in Phase 1.

Two Video Scripts

Each video is fully self-contained. No video references any other video. Denied permissions demo comes first in Phase 1.

Video 1: Content Creation & Publishing

instagram_business_content_publish
Target length: ~2 minutes 10 seconds · FULLY SELF-CONTAINED · Cancel-First Flow
🆕 v6: Denied permissions demo is shown FIRST, before successful connect

Phase 1 now includes two OAuth attempts: (1) Cancel on consent screen — shows denied handling in a clean state, (2) Allow on consent screen — shows successful connection. No Phase 3 needed.

Phase 1: Intro, Denied Demo, Then Successful OAuth (0:00 – 1:15)
TimeWhat to ShowNarration + Caption
0:00–0:10 Meta Developer Dashboard showing App ID 1275998977712554. This is Stylify Content Publisher, App ID 1275998977712554 — a social media platform for hair stylists. I'll demonstrate the instagram_business_content_publish permission, including how the app handles both granted and denied permissions.
🎬 CAPTION: Stylify Content Publisher | App ID: 1275998977712554 | Demonstrating: instagram_business_content_publish
0:10–0:20 Navigate to stylify-ai.com → Settings → Instagram section. Show account is NOT connected. I'm logged in as a test user. In Settings, the Instagram section shows no account is connected.
🎬 CAPTION: Settings → Instagram: No account connected
0:20–0:30 Click "Connect Instagram." Browser redirects to Meta login page. PAUSE 3–5 seconds on login screen. I'll first show what happens when a user declines permissions. I click Connect Instagram and am redirected to Meta's OAuth login page.
🎬 CAPTION: Denied permissions demo — Click "Connect Instagram" → Meta OAuth login page
0:30–0:45 Enter credentials, click Log In. PAUSE 5+ seconds on consent screen. Move cursor over content_publish permission. Then click "Cancel" or "Don't Allow." After logging in, Meta shows the permissions consent screen. You can see instagram_business_content_publish listed here. This time, I'll click Cancel to demonstrate what happens when a user denies access.
🎬 CAPTION: Consent screen — instagram_business_content_publish visible → User clicks Cancel
0:45–0:55 Browser redirects back to Stylify. Show friendly error / "no account connected" message. PAUSE 3–4 seconds. Stylify handles the denial gracefully — a friendly message, no errors, no crashes, no broken state. The user can retry anytime.
🎬 CAPTION: Permission denied → Friendly message, no crash, no broken state → User can retry
0:55–1:00 Click "Connect Instagram" again. Note: Meta will skip the login screen this time — since you logged in moments ago, it goes directly to the consent screen. PAUSE 3–5 seconds on consent screen. Move cursor over content_publish permission. I'll connect now and grant access. I click Connect Instagram again. Because I'm already logged into Meta, the consent screen appears directly — no login step needed. You can see instagram_business_content_publish listed here.
🎬 CAPTION: Retry → Already logged into Meta → Consent screen appears directly → instagram_business_content_publish visible
1:00–1:10 Click "Allow." Browser redirects back to Stylify. Settings shows @getstylify connected. The user clicks Allow to grant access. They're redirected back to Stylify, which now shows the connected Instagram Business account — @getstylify. The content_publish permission is active. I'll now demonstrate the publishing workflow.
🎬 CAPTION: User clicks "Allow" → Redirected back → @getstylify connected — content_publish active
Phase 2: Content Creation & Publishing (1:10 – 2:10)
1:10–1:20 Navigate to Content Calendar. Show calendar with existing posts. This is the Content Calendar where stylists manage their weekly Instagram posts. I'll create a new post to demonstrate the full publishing flow.
🎬 CAPTION: Content Calendar — stylist's weekly post management
1:20–1:30 Tap an empty day. Select post type (e.g., Transformation). Upload a photo. I select a post type — Transformation — and upload a before-and-after photo of a client's hair.
🎬 CAPTION: Creating new post: Select type → Upload photo
1:30–1:40 Show generating state, then PostReviewScreen with caption, hashtags, photo. Stylify generates a caption personalized to this stylist's brand voice, along with relevant hashtags.
🎬 CAPTION: Personalized caption + hashtags generated in stylist's voice
1:40–1:50 Make a small edit to the caption. Click "Post to Instagram." Show publishing progress. Wait for success. The stylist reviews and edits the caption, then taps Post to Instagram. Stylify uses instagram_business_content_publish to create a media container via Instagram's Content Publishing API and publish it to their feed.
🎬 CAPTION: Stylist approves → "Post to Instagram" → Content Publishing API → Published to feed
1:50–2:10 Show success. Post marked "Posted" with timestamp. Navigate briefly to Privacy Policy page (stylify-ai.com/privacy). Published successfully. The calendar confirms with a timestamp. Our privacy policy at stylify-ai.com/privacy details how content data is handled. Content is only published when the stylist explicitly taps the publish button — never automatically. That concludes the instagram_business_content_publish demonstration.
🎬 CAPTION: Published → Calendar confirms | Publishing only on explicit user action | Privacy: stylify-ai.com/privacy
📋 Submission Description for instagram_business_content_publish (copy-paste)Stylify Content Publisher is a social media management platform for hair stylists. App ID: 1275998977712554. This screencast demonstrates the instagram_business_content_publish permission with on-screen captions throughout. The video is fully self-contained and shows the complete flow — including both denied and granted permission handling — without referencing any other video. DENIED PERMISSION HANDLING (shown first): The video begins with no Instagram account connected. The user clicks "Connect Instagram" and is redirected to Meta's OAuth login page. They enter credentials and the consent screen appears showing instagram_business_content_publish. The user clicks Cancel to decline. Stylify returns a friendly message with no crashes and no broken state — the user can retry at any time. COMPLETE OAUTH FLOW — GRANTED (shown second): The user clicks "Connect Instagram" again. The consent screen reappears with instagram_business_content_publish visible. This time the user clicks Allow. They are redirected back to Stylify where the connected Instagram Business account (@getstylify) is displayed and the content_publish permission is active. END-TO-END PUBLISHING USE CASE: After connecting, the user creates a new Instagram post: selects a post type (Transformation), uploads a photo, Stylify generates a personalized caption and hashtags in the stylist's brand voice, the user reviews and edits the content, then taps "Post to Instagram." Stylify uses the instagram_business_content_publish permission to create a media container via Instagram's Content Publishing API and publish to the user's Instagram feed. The calendar confirms the post is published with a timestamp. Content is only published when the user explicitly taps the publish button — never automatically without user approval. All authentication is browser-based OAuth (not server-to-server). The complete Meta login and permissions consent flow — including both the denial and approval paths — is visible in this video. Privacy Policy: https://stylify-ai.com/privacy Data Deletion: https://stylify-ai.com/data-deletion Test Account: stylist@example.com / admin1234

Video 2: Post Insights & Analytics

instagram_business_manage_insights
Target length: ~1 minute 55 seconds · FULLY SELF-CONTAINED · Cancel-First Flow
🆕 v6: Denied permissions demo is shown FIRST, before successful connect

Phase 1 now includes two OAuth attempts: (1) Cancel on consent screen, (2) Allow on consent screen. No Phase 3 needed.

📊 Prerequisite

Requires at least one published post 24+ hours old so insights data has populated. Record Video 1 first if needed.

Phase 1: Intro, Denied Demo, Then Successful OAuth (0:00 – 1:05)
TimeWhat to ShowNarration + Caption
0:00–0:10 Meta Developer Dashboard showing App ID 1275998977712554. This is Stylify Content Publisher, App ID 1275998977712554 — a social media platform for hair stylists. I'll demonstrate the instagram_business_manage_insights permission, including both denied and granted permission handling.
🎬 CAPTION: Stylify Content Publisher | App ID: 1275998977712554 | Demonstrating: instagram_business_manage_insights
0:10–0:20 Navigate to stylify-ai.com → Settings → Instagram. Show NOT connected. I'm logged in as a test user. In Settings, no Instagram account is connected.
🎬 CAPTION: Settings → Instagram: No account connected
0:20–0:30 Click "Connect Instagram." Redirect to Meta login. PAUSE 3–5 seconds on login screen. I'll first show what happens when a user denies permissions. Clicking Connect Instagram redirects to Meta's OAuth login page.
🎬 CAPTION: Denied permissions demo — Click "Connect Instagram" → Meta OAuth login page
0:30–0:44 Enter credentials, log in. PAUSE 5+ seconds on consent screen. Move cursor over manage_insights permission. Click "Cancel" or "Don't Allow." After logging in, Meta shows the consent screen. You can see instagram_business_manage_insights listed here — this time I'll click Cancel to show what happens when a user denies access.
🎬 CAPTION: Consent screen — instagram_business_manage_insights visible → User clicks Cancel
0:44–0:52 Redirect back to Stylify. Show friendly error message. PAUSE 3–4 seconds. Stylify handles the denial gracefully — friendly message, no crashes, no broken state. The user can retry anytime.
🎬 CAPTION: Permission denied → Friendly message, no crash → Retry available
0:52–1:00 Click "Connect Instagram" again. Note: Meta will skip the login screen this time — since you logged in moments ago, it goes directly to the consent screen. PAUSE 3–5 seconds on consent screen. Move cursor over manage_insights permission. I'll connect now and grant access. I click Connect Instagram again. Because I'm already logged into Meta, the consent screen appears directly — no login step needed. You can see instagram_business_manage_insights listed here.
🎬 CAPTION: Retry → Already logged into Meta → Consent screen appears directly → instagram_business_manage_insights visible
1:00–1:10 Click "Allow." Redirect back to Stylify. Settings shows @getstylify connected. The user clicks Allow to grant access. They're redirected back to Stylify with @getstylify connected. The manage_insights permission is now active. I'll show how the app uses this data.
🎬 CAPTION: User clicks "Allow" → Redirected back → @getstylify connected — manage_insights active
Phase 2: Per-Post Insights & Aggregated Analytics (1:10 – 1:55)
1:10–1:20 Navigate to Calendar. Tap a published post (24+ hours old). Show InsightsCard loading then displaying metrics. On the Content Calendar, I'll open a published post. Stylify uses manage_insights to fetch this post's performance data from Instagram's Insights API. Posts must be at least 24 hours old for metrics to populate.
🎬 CAPTION: Published post → Insights fetched via instagram_business_manage_insights API
1:20–1:30 Point cursor at each metric: reach, impressions, engagement, saves. PAUSE 1–2 seconds on each. Here are the post's actual performance metrics — reach, impressions, engagement, and saves. This is real data fetched from Instagram, helping stylists understand which content resonates with their audience.
🎬 CAPTION: Per-post insights: Reach, Impressions, Engagement, Saves — real data from Instagram
1:30–1:40 Navigate to Progress tab. Show aggregated metrics: total reach, average engagement, published count. Scroll slowly. These metrics are also aggregated on the Progress page. Stylists see total reach, average engagement rate, and top-performing content — all powered by the manage_insights permission. We only access post-level metrics — never private messages, follower lists, or sensitive data.
🎬 CAPTION: Progress page: Aggregated analytics — total reach, avg engagement | Post-level metrics only
1:40–1:55 Navigate briefly to Privacy Policy page (stylify-ai.com/privacy). Return to Progress page. Our privacy policy at stylify-ai.com/privacy details how insights data is used. That concludes the instagram_business_manage_insights demonstration — from OAuth connection through to per-post and aggregated analytics.
🎬 CAPTION: Privacy: stylify-ai.com/privacy | Deletion: stylify-ai.com/data-deletion | manage_insights: OAuth → insights → analytics
📋 Submission Description for instagram_business_manage_insights (copy-paste)Stylify Content Publisher is a social media management platform for hair stylists. App ID: 1275998977712554. This screencast demonstrates the instagram_business_manage_insights permission with on-screen captions throughout. The video is fully self-contained and shows the complete flow — including both denied and granted permission handling — without referencing any other video. DENIED PERMISSION HANDLING (shown first): The video begins with no Instagram account connected. The user clicks "Connect Instagram" and is redirected to Meta's OAuth login page. They enter credentials and the consent screen appears showing instagram_business_manage_insights. The user clicks Cancel to decline. Stylify returns a friendly message with no crashes and no broken state — the user can retry at any time. COMPLETE OAUTH FLOW — GRANTED (shown second): The user clicks "Connect Instagram" again. The consent screen reappears with instagram_business_manage_insights visible. This time the user clicks Allow. They are redirected back to Stylify where the connected Instagram Business account (@getstylify) is displayed and the manage_insights permission is active. END-TO-END INSIGHTS USE CASE: After connecting, the video demonstrates two use cases: (1) Per-post metrics — the user opens a published post (24+ hours old) and Stylify fetches reach, impressions, engagement, and saves from Instagram's Insights API using the manage_insights permission. (2) Aggregated analytics — the Progress page shows total reach, average engagement rate, and top-performing content across all published posts, all powered by the manage_insights permission. This data helps stylists understand which content types resonate with their audience. We only access post-level performance metrics — never private messages, follower lists, or other sensitive data. All authentication is browser-based OAuth (not server-to-server). The complete Meta login and permissions consent flow — including both the denial and approval paths — is visible in this video. Privacy Policy: https://stylify-ai.com/privacy Data Deletion: https://stylify-ai.com/data-deletion Test Account: stylist@example.com / admin1234

Post-Recording Checklist

  1. Watch each video end-to-end — verify captions are readable and accurate
  2. BOTH videos: First OAuth attempt ends with Cancel and friendly error message visible
  3. BOTH videos: Meta login screen visible (3–5 sec) AND consent screen visible (5+ sec) on BOTH OAuth attempts
  4. BOTH videos: Specific permission name pointed to on consent screen during BOTH attempts
  5. BOTH videos: Second OAuth attempt ends with Allow and @getstylify shown as connected
  6. Video 1: Full create → review → edit → publish → success confirmation flow visible
  7. Video 2: Per-post metrics AND aggregated Progress page analytics shown
  8. Privacy Policy page loads quickly during recording
  9. Lengths: Video 1 ~2:10, Video 2 ~1:55 (within Meta's 1–3 min range)
  10. CRITICAL: Submission descriptions do NOT reference any other video
  11. Export: MP4, H.264 codec, 1080p, under 500 MB
  12. Upload each to Meta Developer Dashboard under its permission
  13. Paste matching submission description for each

Recording Tips

💡 Rule #1: Each Video Must Stand Alone

A Meta reviewer watches ONLY the video for their assigned permission. They won't see your other videos. If they watch on mute, captions must tell the entire story.

ℹ️ On the Second OAuth (Allow), Meta Will Skip the Login Screen

Because you logged into Meta during the Cancel demo, the second OAuth attempt goes directly to the consent screen — no username/password. This behavior is expected and is now scripted explicitly in each video's Phase 1 scene table with the correct narration. The consent screen still shows the permission name clearly, which is what Meta reviewers need to see.

Recording Order Summary

✅ Skipinstagram_business_basic — Already approved.
Step 1Disconnect Instagram in Settings (clean start for Video 1)
Step 2Record Video 1 (content_publish):
— OAuth attempt 1: Connect → login → consent → Cancel → friendly error
— OAuth attempt 2: Connect → consent → Allow → connected
— Feature: create → review → publish → success
Step 3Disconnect Instagram again (clean start for Video 2)
Step 4Record Video 2 (manage_insights):
— OAuth attempt 1: Connect → login → consent → Cancel → friendly error
— OAuth attempt 2: Connect → consent → Allow → connected
— Feature: per-post insights → Progress analytics
Step 5Add captions in Descript, review for accuracy
Step 6Export & upload each to Meta Developer Dashboard
Step 7Paste submission descriptions
Step 8Submit for review 🚀