SEM
Built end-to-end. No glue code required.

Everything you'd build yourself, already built.

SEM ships with the unsexy plumbing: OAuth flows, token refresh, RLS, billing, email delivery, audit logs. So you can spend your time on the campaigns, not the wiring.

Connections

OAuth into all five ad networks. Tokens encrypted at rest with AES-256-GCM. Refresh handled automatically.

Reporting

Cross-platform CPA, ROAS, spend, and conversions in one dashboard — refreshed on a schedule.

CRM

Capture leads from ads, segment by source, follow up with email sequences. No external ESP required.

Billing

Stripe-powered subscriptions, customer portal, and invoices. We don't see the card.

Owner portal

Separate admin app for finance, support, and impersonation — gated by a platform-admin role.

Security

Row-level security on every table. Service-role keys never touch the browser. Audit log on impersonation.

01 — Reporting

One number per metric. Across every platform.

We pull last-30-day spend, clicks, conversions, and conversion value from each network and roll them up. Drill into any campaign to see which platform is pulling weight — and which is dragging.

  • Spend, clicks, impressions, conversions, ROAS, CPA
  • Per-campaign and platform-level breakdowns
  • Auto-refresh on a schedule + on-demand sync
  • Currency-aware (each connection keeps its own)
Campaigns
Last 30 days · 5 platforms
Spend
$48,219
+12%
Conv.
4,231
+18%
Brand search — Google
$12,4005.4x
Retargeting — Meta
$8,9003.2x
Local prospect — Nextdoor
$3,1002.1x
02 — Marketing CRM

Your ads create leads. Your CRM follows up.

Drop a public lead-capture endpoint into your landing pages, segment contacts by source campaign, and trigger sequences. Sends go through Resend with React Email templates.

  • Public POST /api/public/leads/<your-org> with CORS
  • Tag-based segments + saved audiences
  • One-shot email blasts with open + click tracking
  • Drip sequences triggered on tag-add or form submit
  • Resend webhook for delivery / bounce / complaint events
Contacts
437 total · 12 from ads this week
[email protected]
Google · landing-ALead
[email protected]
Meta retargetingTrial
[email protected]
Nextdoor — localCustomer
03 — Billing

Stripe Customer Portal. Built in.

Customers self-serve plan changes, downloads invoices, and updates payment methods. You don't touch a single Stripe screenshot. Subscriptions sync to your DB via webhooks.

  • 14-day free trial baked into checkout
  • Stripe Customer Portal links from /billing
  • Webhook-synced subscriptions table for in-app gating
  • Receipt emails with branded React Email templates
Billing
Growth · $199/mo · renews May 26
Current period
Apr 26 – May 26
Status
Active
Trial ended
Apr 2026 — invoice
$199.00Paid
Mar 2026 — invoice
$199.00Paid
Networks

Five platforms, one API surface.

Each adapter speaks the same internal contract — connect, refresh, list accounts, list campaigns. Adding a sixth platform later is a day of work, not a quarter.

Google Ads
Full OAuth 2.0 + Google Ads API v18. Pulls campaign list, status, budget, and 30-day metrics via GAQL.
Microsoft (Bing) Ads
Microsoft identity OAuth + ads.manage scope. Account list and campaign reporting (rolling out via the Bulk API).
Meta
Facebook Login + Marketing API v21. ad_accounts, campaigns, daily/lifetime budget, insights with conversion attribution.
Nextdoor Ads
Nextdoor Ads Manager API. Advertiser list, campaign metadata, status — insights endpoint integration in progress.
CGMIMM Ads
Direct integration with the CGMIMM internal ad network. API key flow today, OAuth coming.

Owner portal

Separate admin app at admin.sem.cgmimm.com. Search any user, open any organization, view subscription state, impersonate to debug — every action logged.

  • Platform-admin role separate from org admin
  • Audit log on every impersonation
  • Last-admin protection (can't lock yourself out)
  • Read-only by default; explicit elevation for writes

Security

Postgres row-level security on every table. OAuth tokens encrypted at rest. Service-role keys live only on the server.

  • AES-256-GCM token encryption
  • Row-level security on profiles, orgs, members, subs, campaigns, contacts
  • Webhook signatures verified for Stripe, Resend, Supabase auth hook
  • CORS-controlled public lead endpoint

See it on your own data.

Connect one platform in under two minutes. We'll show you the rest.