Meta Ads Integration
Connect Meta Ads to report on your Facebook and Instagram ads across every ad account you manage, and let Theo build new ads for you. Nothing is ever spent without your clear yes.
Why Connect Meta Ads?
How the Connection Works
Meta Ads connects with a token you create in your own Meta Business account. It belongs to a system user: a non-person account inside your Business portfolio that can work with the ad accounts and Pages you assign to it.
This setup is for your portfolio's own assets. An admin usually completes it in about 15 minutes. Meta's labels and requirements can vary by account; follow any additional prompts Meta displays.
Before You Start
- • Admin access to the Business portfolio that owns your ad accounts (business.facebook.com)
- • A Facebook account registered as a Meta developer. Registering is free.
- • A Facebook Page in the same portfolio. Ads always run from a Page.
- • To create ads, not to read reports: a payment method on each ad account
Get Your Token
Prefer one step at a time? In Ad Studio, open Where ads go → Meta ads → Connect Meta Ads and choose Guide me through setup. The same wizard is available on Connections. It keeps these seven steps in order, with a menu path, a checkpoint, and help on each screen. If you already have a token, choose I already have a token to go straight to the secure handoff.
1. Create the app
On Meta for Developers, choose Create app and give it any name. When asked for a use case, pick the one below, then pick the Business portfolio that owns your ad accounts.
Create & manage ads with Marketing API
Skip the similar Ads Manager use case. It has no Marketing API access, so Theo couldn't create ads with it.
Open Meta for Developers2. Complete app settings
In App settings → Basic, add a Privacy policy URL (your website's privacy page is fine) and choose a Category, then save. In App settings → Advanced, leave Require app secret switched off: with it on, Meta refuses a token that arrives without the app secret.
3. Publish the app
Press Publish in the app's left sidebar and complete any requirements Meta displays. Check that the app is published. An unpublished app may still read reports but refuse to create ads (error 1885183).
4. Create a system user
In Business settings → Users → System users, choose Add and set the role to Admin (the default is Employee). Small portfolios can have only one admin system user. If you already have one, for example from setting up the Conversions API, use it instead of adding another.
Open System users5. Assign your assets
Select the system user and choose Assign assets. Add each ad account with full control (Manage ad accounts), each Page with Ads and Insights, and the app itself with full control. The app is the step most people miss: without it, the app isn't offered in the next step. Instagram accounts are optional. Don't choose Everything, which also covers payment methods.
6. Generate the token
Choose Generate token and pick the app. Choose Never if available and your business allows it, or use the expiry your company requires. Select all the required permissions, generate the token, and copy it right away: Meta shows it only once.
ads_readads_managementbusiness_managementpages_show_listpages_read_engagement
Optional for lead forms; these permissions do not set up lead delivery:
pages_manage_adsleads_retrieval
7. Connect and check access
Connect Meta Ads (next section) and paste the token on the secure page that opens. Theo then checks it and shows which ad accounts and Pages it can reach.
Meta recommends tokens that expire. If your company requires one, pick an expiry instead of Never, and paste a new token before it runs out.
Connecting Meta Ads
Connect directly from Ad Studio
Open Where ads go in the studio rail, or Change destination while reviewing an ad, then choose Connect Meta Ads. You do not need to visit Connections. Connections offers the same wizard, and saying “connect Meta Ads” in Theo chat opens a compact guide. Checkmarks record your own progress, not verified changes inside Meta.
Open ConnectionsPaste the token on the secure page
On the wizard's final step, confirm your token is ready and choose Open secure connection. This tab leaves for the secure page; paste your token only there, never in the wizard or chat. If the page cannot open, your place is kept so you can try again.
See what it can reach
Back where you started, the wizard first confirms the connection, then checks which ad accounts and Pages the token reaches. Ad Studio saves your project before leaving and can restore the same review in this tab; you still approve every publish or launch yourself. A return URL alone is not a successful connection. Repair buttons open the relevant step; after assigning assets, check access again with the same token. This read-only check does not verify billing, app publication, or every advertising permission, and creates or launches nothing.
What You Can Do
- • List your ad accounts, campaigns, ad sets and ads, with status and budgets
- • Pull performance for any date range: spend, impressions, reach, clicks, CTR, CPC, CPM and results
- • Compare campaigns and accounts, and ask Theo what is working and what isn't
- • Upload a Theo-made image and build a campaign, ad set and ad around it, created paused
- • Launch, pause or change a budget, after Theo tells you exactly what will change and you say yes
- • Let a Theo Agent worker report on your ads with the access you grant it on its Connections tab
Spending Is Always Your Call
Reading reports never needs a confirmation. Anything that could spend money or change delivery does: Theo first tells you the ad account, the daily budget and the most it could spend, and waits for your clear yes.
New ads are always created paused, so you can review them in Ads Manager first. They start spending only when you approve the launch.
Using Meta Ads from Theo Chat
“Connect Meta Ads”
Puts a Connect card with the setup steps in the chat
“How did my ads do last week, by account?”
Pulls spend and results for each ad account
“Which campaign has the best cost per result?”
Compares your campaigns side by side
“Turn this design into a $20 a day ad”
Builds the ad paused, then launches it only after your yes
Meta Ads in Ad Studio
Your work in Ad Studio is an ad project; a Meta campaign is the campaign in Ads Manager. Pick a brand, then use Where ads go to connect and choose its ad account, advertising Page, and destination. Social posts are separate from paid Meta ads. Saving a brand default seeds future projects, without changing projects or ads that already exist.
Choose Use an existing Meta campaign to browse accessible campaigns and ad sets, or Create a new Meta campaign to review a separate campaign's audience, budget and schedule. Search covers loaded results; use Load more when offered. Saved or previously used destinations for this brand appear first, never guesses based on a campaign's name. Switching destinations affects future ads only.
Running ads in an existing Meta campaign is not available here yet. You can save the destination, use Ads Manager, or choose a new Meta campaign. An existing ad set keeps its shared budget, audience, placements and schedule. Its budget is not added for each creative and is not a private spending cap for your project; changes to these shared settings belong in Ads Manager.
Open a finished still and choose Run on Meta, or select several. Review the copy and destination, then Create paused. Launch is a separate approval that names the budget and schedule. For separate new campaigns, the batch shows their combined budgets. The budget approval ceiling checks each promotion's daily budget; it is not a combined project spending cap.
Every ad in Meta ads shows its delivery and review status, including Meta's rejection reasons. Launch, Pause and Remove act on the resources created for that promotion; an ad in an existing campaign never controls its parent campaign or ad set. Change budget is available only for a separate campaign created by Ad Studio. A paused parent must be reviewed in Ads Manager, not activated automatically.
Results offers This ad project, This brand, and Whole account. Project and brand reports cover their recorded Meta ads, including archived creatives, not unrelated ads sharing a campaign. Whole account is an explicit choice. Incomplete reads are marked, and an empty project is never silently replaced with account-wide results. Ask Theo can suggest what to run or help revise a rejected ad, but publishing still needs your approval.
Several Ad Accounts
One token reaches every ad account assigned to its system user, so three ad accounts in one portfolio need just one connection. When there is more than one, Theo asks which account you mean.
To add an ad account later, assign it to the same system user (step 5). The token you already connected keeps working.
Ad accounts should be owned by the portfolio where you made the token. An account that another portfolio only shares with you may show up but refuse changes. Make the token in the portfolio that owns it.
Keeping Your Token Safe
- • Never paste the token into a chat or an email. Only paste it on the secure connect page.
- • To replace a token, choose Replace token in Ad Studio's Meta destination editor or on Connections. Prepare the new token, then confirm the interruption on the final step. Only that final action disconnects the old connection. Cancelling before it preserves the connection. If disconnection fails, no replacement starts; if opening the secure page fails afterward, Retry does not disconnect again.
- • Disconnecting removes our copy of the token. It stays valid at Meta until you revoke it.
- • To revoke it at Meta, open Business settings → System users, select the system user and revoke its tokens.
Troubleshooting
Theo says no ad account is assigned to the system user
The token works but reaches no ad account. Assign your ad accounts to the system user with Manage ad accounts (step 5), then run the check again. No new token is needed.
Theo says the token can't list ad accounts
The token was generated without the ads permissions. A permission can't be added to an existing token, so generate a new one with every permission in step 6 ticked, then choose Replace token.
Meta refused the token
The token may have been revoked or may belong to a different app, or the app requires an app secret. Check that Require app secret is off (step 2), then generate a new token (step 6).
The app isn't listed when I generate a token
Assign the app to the system user with full control (step 5). It is the step most people miss.
Creating an ad fails with error 1885183
The app is still unpublished. Publish it from the app's left sidebar (step 3).
I can't add another system user
Smaller portfolios allow one admin system user. Use the existing one: assign the new app and your assets to it.
Ads can't be created, but reports work
Creating ads needs a payment method on the ad account and a Page the token can advertise as. Add a payment method in Ads Manager, and assign the Page with the Ads task (step 5).
Related Articles
Facebook Pages Integration
Connect Facebook Pages to publish posts, photos, links, and view engagement insights.
Instagram Integration
Connect Instagram Business to publish photos, reels, view insights, and manage content.
TikTok Ads Integration
Connect TikTok Ads to review and manage campaigns, ad groups, ads, budgets and performance reports from Theo chat — changes to spend always wait for your yes.