Cato

Sign in to continue

Cato Autopilot

Run your Meta ads on autopilot. Let Cato scale your revenue.

Cato runs your Meta Ads 24/7, creating, optimizing, and scaling campaigns while you focus on your business.

Create new ads Upload from Drive folders and launch in one click — multi-headline DOF supported.
Scale winners ABO adsets above scalable ROAS auto-double; CBO campaigns scale at the campaign budget.
Kill bad spend Underperforming adsets are paused before they drain budget. Soft-band gets downscaled.
Launch campaigns Scan your Drive folder structure, tick the adsets you want, ship them all paused for review.
It only takes a minute to set up Cato CMO.

Performance overview

Live numbers across your connected ad accounts.

Spend
Revenue
ROAS
Purchases
Cost / Purchase
CTR (link)
Impressions
Active campaigns
Autopilot calendar

What's running, what's next

Launched and scheduled adsets on one timeline.

0 items
Active Campaigns
Connect Meta in Settings
Spend (7d)
Live once data flows
ROAS (7d)
Live once data flows
Ads Created
0
All-time on this account

Google Drive connection

Checking…
How to set up Google OAuth credentials
  1. Open Google Cloud Console → Credentials
  2. Click Create Credentials → OAuth client ID
  3. Application type: Web application
  4. Authorized redirect URI: http://127.0.0.1:8001/api/drive/callback
  5. Enable Google Drive API in API Library
  6. Copy the Client ID and Client Secret below
Checking TikTok connection…
Revenue
Total value of all conversions attributed to your campaigns across all platforms.
ROAS
Total Spend
Conversions
CPA

Top performers

Top bleeders

0 items
Name Spend Revenue ROAS Purch. CPA Leads CTR (link) CPC CPM Impr. Freq.
Pick a date range to load data.

Klaviyo is part of Nara

Klaviyo integration lives in Nara — our retention-focused companion tool. Unlock it there and the data flows into Cato automatically.

Open Nara
Two backend files to implement. Image generation depends on backend/openai_api.py::generate_images. Ad-copy generation depends on backend/claude_api.py::translate_and_improve. Brand profile fetching depends on backend/brand_profile.py::scrape_brand_info.

Your Brand Profile

Paste your product URL — we'll auto-extract the name, description, image. Used as context for every generation.

Edit details manually

Generate Creatives

Operational mode

Cadence is auto-derived from your last-30d spend. Loading…

Your thresholds

auto: —
auto: —

Multi-product mode

Different products with different margins? Set per-product thresholds.

Rules

Toggle each rule and tune its parameters. New / edited PAUSE rules shadow for 24h before acting.

Recent decisions

Time Rule Adset Action Status Reason
No automation activity yet.
Checking TikTok connection…
Not implemented yet. Funnel depends on backend/ga4.py (GA4 query + landing-page scrape + recommendations).

Analyze a Landing Page

Email support

For account, billing, onboarding, or technical questions, reach the Cato team by email.

support@catoads.app Email support

Slack connect

Use the shared workspace for faster collaboration on active projects and implementation help.

Coming soon

Live chat

In-app chat is on the roadmap and will be added soon for real-time support.

Coming soon

Frequently asked questions

Common answers for day-to-day support, onboarding, and billing.

How do I connect my Meta ad account?

Go to Settings → Meta Ads, paste your App ID, App Secret, Access Token, and Ad Account ID, then click Save & Connect. The status pill turns green when the credentials validate against the Marketing API.

How do I connect Google Drive?

Settings → Google Drive (OAuth). Create OAuth client credentials in Google Cloud Console with the redirect URI shown in the form, paste Client ID + Secret, then click Save & Connect to Google.

How does Media Buying auto-mode work?

The engine runs an hourly tick. In Auto mode it acts immediately on rule decisions; in Confirm mode it queues each decision for your approval; in Dry run mode it only logs what it would have done. Switch modes from the Operational mode card in the CMO tab.

How are breakeven and scalable ROAS calculated?

If you haven't entered manual values, the engine analyzes your last 30 days of adset insights and computes spend-weighted ROAS quartiles. Inferred breakeven is anchored at the P25; inferred scalable is anchored at the P75 (with floors so we never recommend below 0.8 / 2.0). Per-product overrides take precedence when multi-product mode is on.

What happens when a rule fires?

Decisions pass through safety gates (launch cooling, per-target action cooling, shadow period for new PAUSE rules, hard caps per tick). Surviving decisions either log to dry-run, queue for approval, or execute via Meta — depending on your operational mode. Every decision is written to the audit log.

Why am I hitting rate limits from Meta?

The dev-tier app has tight ceilings on calls per app and per ad-account. The engine caches Meta responses per user for ~90 seconds to reduce calls, but bursts of UI actions can still hit the limit. Once your app passes Meta App Review the ceiling goes up substantially.

How do I upload ads from a Drive folder?

Uploader → From Google Drive. Paste the folder URL, click Scan, tick the ad sets you want to launch, then click Launch (all paused by default). The job runs in the background — you can hit Run in background to navigate elsewhere while it completes.

What if something looks broken or data is missing?

Refresh the page first. If the issue persists, open DevTools → Console and copy any red errors, plus the Network response of the failing endpoint. Then email support with: the tab you were on, the brand/account, and what you were doing when it broke.

Need hands-on help?

Email support@catoads.app for setup, troubleshooting, or rollout questions.

Contact support
General

Appearance

Theme and UI preferences
Theme

Dark mode is on by default. Toggle in the sidebar foot.

Account

Profile information from your login provider
Loading…
Connections

Meta (Facebook) Ads

Checking connection…
How to get your credentials
  1. Create a Business App at developers.facebook.com
  2. Copy App ID and App Secret from the dashboard
  3. Generate an Access Token via Graph API Explorer with the ads_management permission
  4. Copy your Ad Account ID from Business Settings → Ad Accounts (format: act_XXXXXXXXX)

TikTok Ads

Marketing API · sandbox mode while your app is in review
Checking connection…
How to get your credentials
  1. Sign in at business-api.tiktok.com/portal/ with your TikTok Business account.
  2. Create a Marketing API app and complete business verification.
  3. Add redirect URI: http://127.0.0.1:8001/api/tiktok/callback
  4. Enable scopes: Account, Campaign, Ad Group, Ad, Creative, Reporting (all read + write where needed).
  5. Copy the app_id (numeric, ~16 digits) and app_secret below.

Google Drive (OAuth)

Create OAuth 2.0 credentials in Google Cloud Console (type: Web application, redirect URI: http://127.0.0.1:8001/api/drive/callback).

Google Analytics 4

Create a service account in Google Cloud, give it Analytics Reader on your GA4 property, and upload the JSON key here.

AI Providers

Used by Creative Studio (image generation, copy improvement) and Brand Profile.

Slack

Daily / weekly performance digests, bleeder + scaling alerts
Checking connection…
How to register a Slack app
  1. Go to api.slack.com/appsCreate New App → From scratch.
  2. Name it (e.g. "Cato"), pick your workspace.
  3. Under OAuth & PermissionsBot Token Scopes, add: chat:write, channels:read, groups:read, channels:join, team:read.
  4. Add redirect URL: http://127.0.0.1:8001/api/slack/callback
  5. Copy the Client ID and Client Secret from Basic Information below.

Optional Integrations

Each unlocks a specific Creative Studio source. All optional.

Configuration

Ad Naming Convention

Define your tag letters and what each represents.
Set up with AI Paste an existing ad name and let Claude detect the structure, or generate a fresh skeleton.
Each row is one tag in your ad name. Tag = the letters in brackets. Field key = how the app refers to it internally (use product, angle, creator, editor, audience, date, or any custom string).

Products

Per-product description, URL, photos, and ROAS thresholds. Detected automatically from your naming convention.

Performance thresholds

These drive the Needs Attention list on the Dashboard. Adsets get flagged when they've spent at least the minimum in the lookback window AND ROAS is below break-even (or CAC is above your ceiling).