Managing social ad platforms with an AI operator: Meta and beyond
Every major social ad platform has its own dashboard, its own campaign object model, and its own API with its own rate limits and quirks. The premise of an AI ad operator is that you should not need to know any of that — you describe what you want and the platform differences are handled underneath. That premise is mostly true, with some important caveats.
What platform differences actually matter
The differences that matter for an AI operator are the ones that affect what the model can read and draft — not the UI differences, which are irrelevant once you are working through an API.
The meaningful gaps are: Meta's campaign object hierarchy (Campaign → Ad Set → Ad) versus Google's (Campaign → Ad Group → Ad), where budget can be set (campaign-level on Meta versus campaign or ad group on Google), how audiences are defined (Meta's Lookalike vs. Google's Similar Audiences), and how conversion events are attributed.
- Meta — budget can be set at campaign level (CBO) or ad set level; Advantage+ campaigns reduce configurability; API exposes detailed audience and placement controls.
- Google Ads — budget always at campaign level; bid strategy at campaign level, bid overrides at ad group or keyword level; smart bidding requires clean conversion tracking.
- LinkedIn — campaign budget at campaign level; fewer audience signal types than Meta but strong job-title and company targeting; API is less mature.
- TikTok — Spark Ads (boosting organic posts) have different API semantics than standard paid ads; audience export from other platforms not natively supported.
How SpendSignoff normalizes across platforms
SpendSignoff stores a normalized representation of each campaign's state regardless of platform. A campaign_summary object has consistent fields — platform, campaign_id, daily_budget_usd, status, objective, performance_7d — whether the source is Google or Meta. The model reasons about this normalized layer.
When the model drafts a change, it translates back to the platform-native format: a budget change on Meta becomes a CBO campaign-level budget update if the campaign uses CBO, or an ad-set-level update if it does not. That translation happens in the server's policy core, not in the AI client's inference.
V1 platforms: Google Ads and Meta
Cross-platform reporting: the unified view
The most requested capability for social ad management is a single view of performance across platforms. Logging into Meta Ads Manager, then Google Ads, then LinkedIn Campaign Manager to get a complete picture of weekly spend and ROAS is the kind of context-switching that takes thirty minutes and produces errors from copying numbers between tabs.
SpendSignoff's query_reporting tool returns normalized performance data across all connected platforms in a single response. Ask your AI client "what was my total spend and blended ROAS last week across all platforms?" and get a consolidated answer with per-platform breakdown.
Platform-specific gotchas the model knows about
Some platform quirks need explicit handling in the tool layer. Meta's API returns estimated reach rather than exact audience size for custom audiences, so the model qualifies any audience-size estimate as approximate. Google's Responsive Search Ads report performance at the ad level but not at the headline or description asset level via the standard API — asset-level data requires a separate report query. These are not dealbreakers, but they affect how the model phrases its analysis.
FAQ
- Can I manage Instagram ad campaigns through SpendSignoff?
- Yes. Instagram ad campaigns are managed through the Meta Marketing API, which SpendSignoff connects to. Instagram placements are visible as placement options within Meta campaign ad sets.
- Does SpendSignoff support TikTok ads yet?
- TikTok is on the platform roadmap but not in the current V1 release. V1 covers Google Ads and Meta. Sign up for the waitlist to get notified when TikTok integration ships.
- How are platform API rate limits handled?
- SpendSignoff's sync pipeline manages API quotas with platform-specific rate limit budgets. The autonomy loop and user-initiated reads share a quota pool, with the loop running at lower priority so urgent user queries are not throttled by background sync.
Connect an account read-only and watch the operator work.
Reads are free on every plan. Nothing spends without your two-step approval.
Related reading