Blog
Meta workaround

How to use Meta performance before app approval

Native Meta OAuth is the cleanest long-term path, but it is not required for V1. Creative Tagger can launch with user-owned, read-only imports that put performance memory next to the creative library.

The important distinction is simple: Creative Tagger does not need to write to a user's ad account. It needs ad-level performance rows so it can match spend, ROAS, CTR, thumbstop, destination URL, and conversion data back to analyzed creatives.

That means there are three practical workflows before native Meta app approval: CSV import for the simplest performance path, an agent/MCP handoff for users who already pull Meta data in their own environment, and competitor row import for teams researching Meta Ad Library creatives without waiting on Creative Tagger's native app approval.

Workflow 1: CSV import

This is the easiest launch workflow for most users. The user exports a Meta Ads Manager report and uploads it in Creative Tagger.

  1. Open Meta Ads Manager and choose the account/date range.
  2. Export an ad-level report that includes ad name, ad id if available, destination URL, spend, impressions, clicks, purchases or conversions, revenue or purchase value, and video metrics when available.
  3. Open Creative Tagger, go to Connect or Reports, and upload the CSV.
  4. Creative Tagger matches rows to saved analyses by naming convention, filename, ad name, destination URL, and available ids.
  5. Reports, Chat, and the strategist can now answer questions by hook, landing page, angle, audience, offer, visual format, and brand-custom values.

The user experience is not complicated: export, upload, review match rate, then use Reports. It is not as magical as one-click OAuth, but it is easy to explain and it is read-only by design.

Workflow 2: user-owned agent or MCP import

More technical users may already have a Meta-capable MCP server, CLI, warehouse job, or internal script. In that case, the user can pull their own Meta rows with their own credentials, then send the normalized rows into Creative Tagger.

The security posture stays clean: the user connects to Meta in their own environment, and Creative Tagger receives only the performance rows needed for reporting. V1 still does not create campaigns, edit budgets, or write back to Meta.

The agent workflow looks like this:

  1. User connects their AI/client/tooling to Meta using their own approved path.
  2. Their agent fetches ad-level performance for the selected account/date range.
  3. The same agent calls Creative Tagger's import_meta_performance MCP tool or the POST /meta/import API.
  4. Creative Tagger stores the rows as performance memory for that brand.
  5. The user asks Creative Tagger Chat or their MCP-connected AI what is working and what to make next.

Workflow 3: competitor Ad Library import

Competitor analysis can use the same user-owned pattern. If a user or their agent gathers public Meta Ad Library rows through a browser, CSV export, CLI, or another MCP workflow, Creative Tagger can import those rows and classify the competitor strategy without needing Creative Tagger's native Ad Library token.

  1. User or agent gathers competitor ad rows from Meta Ad Library.
  2. The rows include useful fields such as ad id, page name, primary text, headline, platforms, spend range, impressions, and snapshot URL.
  3. The user pastes rows into the Competitors import box, or the agent calls import_competitor_ads / POST /competitors/import.
  4. Creative Tagger normalizes the ads and returns the same strategy breakdown as a native scan: hooks, visual styles, CTAs, emotions, estimated spend, and ad examples.

What data should the import include?

The matching gets better when the import includes names and URLs that also appear in the creative library. At minimum, include ad name, spend, impressions, clicks, and date range. Stronger imports include ad id, creative id, destination URL, purchases or conversions, purchase value or revenue, video plays, 3-second views, thruplays, and retention milestones.

{
"brand_name": "Acme",
"rows": [
{
"ad_name": "Acme_UGC_Question_SampleKit_9x16_V1",
"destination_url": "https://example.com/sample-kit",
"spend": 1250,
"impressions": 82000,
"clicks": 2140,
"revenue": 6400
}
]
}

Where this shows up in the product

Once performance rows are imported, the dashboard Reports screen lights up with prebuilt and custom reports. Chat can answer questions against the same performance memory. Once competitor rows are imported, the Competitors screen and MCP response show the competitor's creative strategy using the same taxonomy lens.

This is the practical V1 bridge: launch the product with CSV, user-owned agent imports, and competitor row imports now, then add native OAuth once app approval and provider setup are ready. The customer still gets the main value: their creative taxonomy, library, performance, competitor context, and AI memory in one place.