izeme

Marketing

Lanza campañas en la cuenta publicitaria del cliente: conexión OAuth, pago de tu SaaS con Stripe, disparo a n8n y sincronización de métricas (Meta Insights + leads en Supabase).

Stripe: falta STRIPE_PUBLIC_KEYWebhook: create-campaign

Flujo previsto

  1. 1
    Conectar cuentaOAuth Meta (Google después).
  2. 2
    Pago SaaSStripe confirma antes de publicar.
  3. 3
    Elegir creatividadPlantilla + zona + presupuesto diario.
  4. 4
    Lanzar → n8nCrea campaña/anuncio vía API.

Cuentas publicitarias

Conecta la cuenta donde corre el gasto (Meta, Google o TikTok). Tras OAuth, tokens y metadatos se guardan en Supabase (`tenants_ad_accounts`) para n8n y la app.

Meta Ads

Facebook / Instagram

OAuth con permisos ads_management, ads_read y business_management.

Sin workspace activo detectado en el servidor. Si ya tienes tenant_memberships, aplica las migraciones 0020 y 0021 (RPC resolve_active_tenant_id). Si no, añade membresía / default_tenant_id. Puedes pulsar el botón; si falta tenant, Meta te redirigirá con un mensaje de error.
Conectar Meta (OAuth)

Añade en .env.local (y reinicia next dev): META_APP_ID, META_APP_SECRET y, en producción, NEXT_PUBLIC_APP_URL igual que la URL de redirección en Meta. Alias admitidos: FACEBOOK_APP_ID / FACEBOOK_APP_SECRET; el ID puede ser NEXT_PUBLIC_META_APP_ID.

Google Ads

Búsqueda, Display y YouTube

OAuth con scope adwords. Requiere GOOGLE_ADS_DEVELOPER_TOKEN en servidor.

Sin workspace activo. Conecta Google tras resolver el tenant (igual que Meta).
Conectar Google Ads (OAuth)

Añade en .env.local: GOOGLE_ADS_CLIENT_ID, GOOGLE_ADS_CLIENT_SECRET, GOOGLE_ADS_DEVELOPER_TOKEN. Redirect URI autorizada en Google Cloud: NEXT_PUBLIC_APP_URL/api/integrations/google-ads/callback

TikTok Ads

TikTok Marketing API

OAuth del portal business-api.tiktok.com. Registra la misma redirect URI en tu app (Mis aplicaciones).

Sin workspace activo. Conecta TikTok tras resolver el tenant.
Conectar TikTok Ads (OAuth)

En .env.local: TIKTOK_MARKETING_APP_ID, TIKTOK_MARKETING_SECRET. Redirect en TikTok: NEXT_PUBLIC_APP_URL/api/integrations/tiktok-ads/callback

Pago del servicio con Stripe

El gasto de anuncios lo cobra Meta (o Google) en la tarjeta del cliente. Stripe sirve para que pague tu SaaS (activación, fee mensual, etc.) antes de que el backend deje lanzar la campaña hacia n8n.

Falta STRIPE_PUBLIC_KEY en .env

Qué hay hoy en el código

  • Comprobación de que existe STRIPE_PUBLIC_KEY (cabecera de esta página y chip arriba).
  • services/stripe/budget.tsvalidateCampaignBudget: si no hay clave pública, el formulario "Lanzar campaña" no pasa la validación; si la hay, solo valida el mínimo de presupuesto diario (15 €).

Qué falta para Stripe “de verdad”

  • STRIPE_SECRET_KEY y STRIPE_WEBHOOK_SECRET solo en el servidor (nunca en el cliente).
  • Ruta tipo POST /api/billing/checkout-session que cree una Checkout Session y devuelva la URL de pago.
  • Webhook checkout.session.completed que marque en Supabase “pagado” para ese tenant o campaña.
  • En el lanzamiento: comprobar en servidor ese estado antes de llamar a create-campaign.

Plantillas de vídeo

Subirás los archivos a Supabase Storage y enlazarás cada plantilla aquí. El comercial solo elige una opción al lanzar; no edita vídeo en la app.

Venta

Captación rápida de vendedores

Mensaje directo para propietarios que quieren vender con agencia.

ID: tpl-1

Venta

Propiedad premium destacada

Enfoque en exclusividad y visitas cualificadas.

ID: tpl-2

Inversión

Oportunidad para inversores

Renta y revalorización; tono informativo.

ID: tpl-3

Lanzar campaña

El formulario llama a POST /api/webhooks/create-campaign con validación y auditoría. Cuando tengas Checkout, bloquea el envío hasta que el pago esté confirmado en servidor.

Conecta al menos una cuenta publicitaria activa en Supabase (Meta o Google) en la sección superior antes de lanzar campaña. El envío permanece deshabilitado hasta entonces.
Pendiente en backend: OAuth Meta/Google, guardar meta_campaign_id al crear, Checkout Stripe real y job de métricas (Insights). Esta UI ya envía platform para n8n.

Rendimiento por campaña

Estos datos vendrán de Meta Insights (impresiones, clics, gasto) y de tus leads en Supabase; el CPL se calculará en servidor o en n8n al sincronizar.

CampañaEstadoImpresionesClicsLeadsCPL
Seller Leads MadridActiva12.4505403218,4 €
Luxury Owners BCNBorrador000
Rent to Sell ValenciaPausada83402211422,1 €