Ads Monitor

Agency access only.

Smiles Agency · Sign in with your Google account

Smiles Ads Dashboard

Dashboard
Fetching data…
📊

Ready when you are

Add your Meta token and ad account IDs in Setup, then hit Run Report to pull live campaign data.

🎯

No campaign data yet

Run a report first to see individual campaign breakdowns.

❤️

No health data yet

Run a report to see your account health scores.

⚠️

No data yet

Run a report to see revenue at risk from underperforming campaigns.

🔮

No data yet

Run a report to model what-if scenarios for your campaigns.

No actions yet

Run a report to generate a prioritised action list.

🤖

AI-powered recommendations

Add your Anthropic API key in Setup, run a report, and Claude will analyse your campaigns and tell you exactly what to do this week.

New Ad Creative
🖼️
Drop images or videos here
PNG, JPG, GIF, MP4 — up to 30 MB each
Square (1:1) recommended · up to 10 files
Creative Library
🎨

No creatives yet. Upload your first ad above!

Client
Displayed on the client selector screen and in reports.
Domain or direct image URL — shown on the client selector card.
Meta Ads
Shared across all brands unless overridden per brand below. Business Manager → System Users → Generate Token (ads_read scope).
Brand Accounts
KPI Targets & Settings
AI Insights — Optional
Get a key at console.anthropic.com — enables Claude to write recommendations after each report run.
Google Ads — CSV Upload
Google Ads API can't be called from a browser. Export a Campaign report from the Google Ads UI and upload it here.
📁
Drop Google Ads CSV here
or click to browse
Dashboard Login
Deploy to Team
Download a ready-to-deploy file with credentials baked in and drop it on Netlify.
Team Sync — Supabase
Connect a free Supabase database so your whole agency shares one live config. Any client or setting change is instantly visible to everyone.
The public "anon" key from Supabase Settings → API. Safe to include in the deployed file.
Ad Uploader — Database Setup

Run this once to create the creative_batches table in your Supabase project. This enables shared creative history across your whole team.

CREATE TABLE IF NOT EXISTS creative_batches (
  id          uuid DEFAULT gen_random_uuid() PRIMARY KEY,
  client_id   text REFERENCES clients(id) ON DELETE CASCADE,
  brand_name  text,
  ad_name     text,
  headlines   jsonb DEFAULT '[]'::jsonb,
  primary_texts jsonb DEFAULT '[]'::jsonb,
  campaign_id   text,
  campaign_name text,
  adset_id    text,
  adset_name  text,
  cta         text DEFAULT 'SHOP_NOW',
  destination_url text,
  status      text DEFAULT 'draft'
                CHECK (status IN ('draft','uploaded','error')),
  meta_ad_id  text,
  error_message text,
  image_count integer DEFAULT 0,
  thumbnail   text,
  created_by  uuid REFERENCES auth.users(id),
  created_at  timestamptz DEFAULT now()
);

ALTER TABLE creative_batches ENABLE ROW LEVEL SECURITY;

-- All authenticated users can manage creative batches
CREATE POLICY "Authenticated users can manage batches"
ON creative_batches FOR ALL
USING (auth.uid() IS NOT NULL);