Ads

Ads brings paid acquisition into the Loop. Torno drafts campaigns and creative from your Hypotheses, grounds every generated word in your Brand Kit, and treats publishing as what it is — a money-spending action that needs a human.

Account connections

Google Ads and Meta accounts connect per Property via OAuth. Credentials are never agent-readable; agents operate through Torno’s governed capabilities, not through your tokens. Connection health, review tier, and any degradation are visible in realtime on the account page.

Campaigns Torno creates satisfy the platform’s required minimum functionality for management. Types it cannot manage — imported or unsupported types such as Performance Max — remain report-only rather than pretending to be editable. Sandbox accounts are labeled and excluded from real spend ledgers.

Campaign and creative drafts

An ad_campaign Change becomes an editable scaffold: audience, network structure, budget, creative slots, placements, targets, and a generated UTM and click-ID convention. Torno normalizes tracking parameters at publish time rather than trusting hand-edited URLs.

Creative generation reads only the published Brand Kit bundle plus fenced evidence. Every creative version records the Brand Kit version, model, prompt, and inputs that produced it — provenance first, prose second.

Lint and policy checks

Deterministic banned-claims lint blocks publishing outright; there is no override that skips it. Semantic lint findings attach to the Approval Request as advisory context under the default gate. Ads and briefs share the same persisted lint gate, so nothing public can route around the Brand Kit’s rules.

Spend governance

Publishing is human-approval-gated by shipped default, even for a broadly scoped agent, and an agent can never approve its own spend. Agent-initiated spend is capped at $50 per day by default. Both controls live in Policy and approvals.

Approval reserves budget atomically and mints a one-time execution grant; a publish journal with idempotency prevents duplicate network actions. Daily reservations settle against platform actuals, and overdelivery or a failed next-day reservation can auto-pause the campaign. Pause is always immediately available and audited; resume goes back through governance.

Costs, conversions, incrementality

Cost and impression imports flow into CAC through the semantic layer. Platform-reported conversions stay separately labeled from Torno-measured outcomes — a platform-reported conversion is never silently blended into the Needle. Forged attribution parameters cannot become measured joins.

When you want a causal read on spend, geo and budget on-off incrementality designs run as external-arm Experiments. Conversion uploads back to platforms exist only in profile mode and require per-Customer consent; when consent is unavailable, the upload fails closed. See Identity and privacy.

Honest notes

Ad platform integrations ship as adapters with per-connection verification. The account page shows what has been verified for your specific connection — health, review tier, and capability status — and that indicator, not this page, is the statement of what your account can do today. Torno does not claim live Google or Meta operations are verified for your account until your connection reports it.