Skip to main content

Permissions we request

Last updated: May 2, 2026 · A complete list of every OAuth scope One Click Campaign Studio asks for, why it’s needed, and what would break without it. This is our single source of truth for app-review submissions.

Meta — Facebook + Instagram

Connected via Facebook Login. Instagram Business publishing rides on the same OAuth grant because Instagram Business accounts are linked to a Facebook Page.

ScopeWhy we need itWhat would break without it
emailAccount identitySign-in via Facebook
public_profileDisplay the connecting user’s name in SettingsSettings page can’t identify which Facebook user is connected
pages_show_listList the Facebook Pages the user manages so they can pick which one to post toPage picker UI in Settings → Connected accounts is empty
pages_manage_postsPublish text/image/video posts to the selected Facebook Page from the campaign composerFacebook posts can’t be published
pages_read_engagementPull engagement counts (likes, comments, reach) for posts we previously publishedEngagement metrics on the post analytics dashboard are blank
instagram_basicIdentify the Instagram Business account linked to the chosen Facebook PageCannot detect or display the user’s IG Business account
instagram_content_publishPublish images, videos, and carousels to the user’s Instagram Business accountInstagram posts can’t be published

LinkedIn — member feed

Sign In with LinkedIn using OpenID Connect. Posts to the connecting member’s feed.

ScopeWhy we need itWhat would break without it
openidStandard OpenID Connect identity claimCannot identify the connecting member
profileDisplay the member’s name + profile picture in SettingsSettings shows “LinkedIn user” with no name or avatar
emailMatch the LinkedIn account to an existing OCCS account on first connectA second OCCS account would be created on first sign-in via LinkedIn
w_member_socialPublish text posts (and, in the planned business-page expansion, image/video posts) to the member’s feedLinkedIn posts can’t be published

LinkedIn — business Pages

Second LinkedIn app, separately connected from the personal-feed app. Posts to LinkedIn Pages that the connecting member is an Administrator of.

ScopeWhy we need itWhat would break without it
openid profile emailIdentify the connecting member in Settings (same as personal-feed flow)Settings shows no name or avatar for the connection
r_organization_adminList the LinkedIn Pages this member admins so they can pick which Page to post toPage picker UI in Settings → Connected accounts is empty
w_organization_socialPublish posts to the selected LinkedIn Page from the campaign composerPage posts can’t be published
rw_organization_adminRead engagement counts (likes, comments, reach) on Page posts we previously published, for the analytics dashboardEngagement metrics on the post analytics dashboard are blank for Page posts

Google — YouTube, Sheets, Ads

A single Google OAuth grant covers three distinct in-product workflows. Users see all scopes in a single consent screen but only the scopes for the workflow they actually invoke ever get exercised against Google’s APIs.

ScopeWorkflowWhy we need itWhat would break without it
email profileSign-inAccount identityCannot match Google sign-in to an OCCS account
youtubeYouTubeList the user’s YouTube channels so they can pick which channel to upload videos to + update channel branding when neededChannel picker is empty; cannot select a channel
youtube.readonlyYouTubeStrict subset of youtube, declared explicitly so least-privilege intent is on the recordNo functional impact (subset)
youtube.uploadYouTubeUpload sales videos and produced video assets to the user’s YouTube channel as part of multi-channel campaign publishingYouTube uploads can’t happen; campaigns with a YouTube branch fail
spreadsheets.readonlySheetsRead row data from a spreadsheet the user picks, to import contacts into OCCS contact listsSheets contact import is non-functional
drive.metadata.readonlySheetsShow the user a list of their spreadsheets to choose from. Metadata only — we never download Drive file contentCannot present a spreadsheet picker
adwordsAdsCreate campaigns, ad groups, keywords, and responsive search ads in the user’s Google Ads account from the campaign launch flowGoogle Ads launches fail; users can’t publish ad campaigns

X (Twitter)

OAuth 2.0 PKCE flow. Posts to the connecting account.

ScopeWhy we need it
tweet.readRequired by X for any authenticated request
tweet.writePublish tweets from the campaign composer
users.readDisplay the connecting account’s @handle in Settings
offline.accessIssue refresh tokens so we don’t force the user to reconnect every two hours

TikTok

TikTok Business OAuth. Posts videos to the connecting account.

ScopeWhy we need it
user.info.basicIdentify the connecting account in Settings
video.publishPublish videos from the campaign composer

Revoking access

You can revoke any integration at any time from Settings → Connected accounts. We call the provider’s revoke endpoint as part of the disconnect flow so the OAuth grant is invalidated at the source — not just deleted from our database. You can also delete your entire One Click Campaign Studio account from Settings → Account, which disconnects all integrations and purges your personal data per our Privacy Policy.

Questions

Email privacy@1clickcampaign.com with any questions about a specific scope or its use.