---
title: "Conector de Meta Ads"
description: "Guía completa de integración con Meta Ads para sincronizar audiencias de Facebook e Instagram Ads, conversiones y datos de campaña con Brevo a través de Tajo."
url: https://tajo.io/es/docs/connectors/marketing/meta-ads/
markdown: https://tajo.io/es/docs/connectors/marketing/meta-ads.md
lang: es-ES
robots: noindex
---

Solicita acceso anticipado

Escribe tu nombre y dirección de correo de trabajo. Te enviaremos un enlace para confirmar tu solicitud de acceso a Tajo.

# Conector de Meta Ads

Estado del conector: Planificado Aún no está construido. Tajo no ejecuta este conector hoy.

| Campo de origen | Campo de destino | Valor de ejemplo |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

Conecta Meta Ads (Facebook e Instagram) con Brevo a través de Tajo para sincronizar Custom Audiences, importar eventos de conversión vía la Conversions API y unir la publicidad social de pago con la automatización de marketing de ciclo de vida.

## Resumen

| Propiedad | Valor |
| --- | --- |
| **Plataforma** | Meta Ads (Facebook, Instagram, Messenger, WhatsApp) |
| **Categoría** | Marketing |
| **Complejidad de configuración** | Avanzada |
| **Integración oficial** | No |
| **Datos sincronizados** | Audiencias, Conversiones, Campañas, Leads |
| **Skills disponibles** | 8 |
| **Versión de API** | v25.0 (Graph API) |

## Funcionalidades

- **Sincronización de Custom Audiences** - Sube listas de contactos de Brevo como Custom Audiences de Meta
- **Conversions API (CAPI)** - Envía eventos de conversión server-side para una atribución precisa
- **Sincronización de formularios de lead** - Importa los envíos de Lead Ads de Facebook directamente a contactos de Brevo
- **Insights de campañas** - Trae las métricas de rendimiento de anuncios a los dashboards de Tajo
- **Lookalike Audiences** - Crea Lookalike Audiences a partir de segmentos de Brevo sincronizados
- **Sincronización de catálogos** - Sincroniza catálogos de productos para anuncios dinámicos
- **Multiplataforma** - Una sola integración cubre anuncios en Facebook, Instagram, Messenger y WhatsApp

## Requisitos previos

Antes de empezar, asegúrate de tener:

1. Una cuenta de Meta Business Manager
2. Una app de Facebook con acceso a la Marketing API
3. Un System User con los permisos adecuados
4. Un Access Token con permisos `ads_management` y `ads_read`
5. Una cuenta de Brevo con acceso a la API
6. Una cuenta de Tajo con credenciales de API

## Autenticación

### Access Token de System User

Meta recomienda usar tokens de System User para integraciones servidor a servidor. Estos tokens no expiran.

```bash
# Required permissions for System User
ads_management
ads_read
business_management
leads_retrieval
pages_read_engagement
catalog_management
```

### Autenticación a nivel de app

```bash
curl -G "https://graph.facebook.com/v25.0/act_AD_ACCOUNT_ID/campaigns" \
  -d "access_token=SYSTEM_USER_ACCESS_TOKEN" \
  -d "fields=name,status,objective"
```

## Configuración

### Configuración básica

```yaml
connectors:
  meta_ads:
    enabled: true
    app_id: "your-facebook-app-id"
    app_secret: "your-facebook-app-secret"
    access_token: "your-system-user-access-token"
    ad_account_id: "act_123456789"
    business_id: "987654321"
    pixel_id: "111222333444"

    # Data sync options
    sync:
      custom_audiences: true
      conversions_api: true
      lead_forms: true
      campaign_insights: true

    # API version
    api_version: "v25.0"
```

### Configuración de Custom Audiences

Sincroniza listas de Brevo con Custom Audiences de Meta:

```yaml
custom_audiences:
  enabled: true
  lists:
    - brevo_list_id: 5
      audience_name: "All Customers"
      subtype: "CUSTOM"
    - brevo_list_id: 6
      audience_name: "High LTV Customers"
      subtype: "CUSTOM"
    - brevo_list_id: 7
      audience_name: "Recent Purchasers"
      subtype: "CUSTOM"

  # Matching fields
  match_keys:
    - EMAIL
    - PHONE
    - FN     # First name
    - LN     # Last name
    - CT     # City
    - ST     # State
    - ZIP
    - COUNTRY

  schedule: "daily"
  sync_mode: "mirror"
```

### Configuración de la Conversions API

```yaml
conversions_api:
  enabled: true
  pixel_id: "111222333444"
  test_event_code: ""  # Set for testing, clear for production

  events:
    - brevo_event: "order_completed"
      meta_event: "Purchase"
      value_field: "revenue"
      currency_field: "currency"
    - brevo_event: "cart_updated"
      meta_event: "AddToCart"
    - brevo_event: "customer_created"
      meta_event: "Lead"
    - brevo_event: "page_viewed"
      meta_event: "ViewContent"
```

## Endpoints de la API

| Método | Endpoint | Descripción |
| --- | --- | --- |
| `POST` | `/v25.0/act_{id}/customaudiences` | Crear una Custom Audience |
| `POST` | `/v25.0/{audience_id}/users` | Añadir usuarios a una Custom Audience |
| `DELETE` | `/v25.0/{audience_id}/users` | Eliminar usuarios de una Custom Audience |
| `POST` | `/v25.0/{pixel_id}/events` | Enviar eventos de la Conversions API |
| `GET` | `/v25.0/act_{id}/campaigns` | Listar campañas |
| `GET` | `/v25.0/act_{id}/insights` | Obtener insights de campaña |
| `GET` | `/v25.0/{form_id}/leads` | Obtener los envíos de formularios de lead |
| `POST` | `/v25.0/act_{id}/adcreatives` | Crear creatividades |
| `GET` | `/v25.0/{catalog_id}/products` | Listar productos del catálogo |

## Ejemplos de código

### Inicializar el conector de Meta Ads

```javascript
import { TajoClient } from '@tajo/sdk';

const tajo = new TajoClient({
  apiKey: process.env.TAJO_API_KEY,
  brevoApiKey: process.env.BREVO_API_KEY
});

// Connect Meta Ads account
await tajo.connectors.connect('meta-ads', {
  appId: process.env.META_APP_ID,
  appSecret: process.env.META_APP_SECRET,
  accessToken: process.env.META_ACCESS_TOKEN,
  adAccountId: 'act_123456789',
  pixelId: '111222333444'
});
```

### Enviar eventos por la Conversions API

```javascript
// Send a purchase event via Conversions API
const response = await fetch(
  `https://graph.facebook.com/v25.0/${PIXEL_ID}/events`,
  {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      data: [{
        event_name: 'Purchase',
        event_time: Math.floor(Date.now() / 1000),
        action_source: 'website',
        user_data: {
          em: [hashSHA256('jane@example.com')],
          ph: [hashSHA256('+15551234567')],
          fn: [hashSHA256('jane')],
          ln: [hashSHA256('kim')],
          client_ip_address: '192.168.1.1',
          client_user_agent: 'Mozilla/5.0...',
          fbc: 'fb.1.1234567890.AbCdEfG',  // Click ID
          fbp: 'fb.1.1234567890.987654321'  // Browser ID
        },
        custom_data: {
          value: 89.99,
          currency: 'USD',
          content_ids: ['SKU-001'],
          content_type: 'product'
        }
      }],
      access_token: process.env.META_ACCESS_TOKEN
    })
  }
);
```

### Sincronizar una Custom Audience desde una lista de Brevo

```javascript
// Upload a Brevo contact list as a Meta Custom Audience
await tajo.connectors.syncAudience('meta-ads', {
  brevoListId: 5,
  audienceName: 'High Value Customers',
  matchKeys: ['EMAIL', 'PHONE', 'FN', 'LN'],
  syncMode: 'mirror'
});
```

### Obtener insights de campañas

```javascript
// Get campaign performance metrics
const insights = await tajo.connectors.query('meta-ads', {
  resource: 'campaigns',
  fields: ['campaign_name', 'impressions', 'clicks', 'spend',
           'actions', 'cost_per_action_type'],
  dateRange: { since: '2024-01-01', until: '2024-01-31' },
  level: 'campaign'
});
```

## Límites de velocidad

| Recurso | Límite | Detalles |
| --- | --- | --- |
| **Marketing API** | Por niveles | Según el nivel de acceso de la app y el gasto |
| **Subidas a Custom Audience** | 700 peticiones/hora | Por cuenta publicitaria |
| **Conversions API** | 2.000 eventos/s | Por píxel |
| **Insights API** | 200 llamadas/hora | Por cuenta publicitaria |
| **Obtención de leads** | 200 llamadas/hora | Por página |
| **Peticiones por lotes** | 50 peticiones/lote | Por llamada batch |

Se requiere verificación de empresa

El acceso completo a la Marketing API requiere verificación de empresa en Meta Business Manager. Las apps no verificadas están limitadas al modo desarrollo con límites de velocidad restringidos.

## Resolución de problemas

| Problema | Causa | Solución |
| --- | --- | --- |
| `OAuthException` | Token expirado o no válido | Regenera el access token del System User |
| Bajo match rate en Custom Audience | Calidad de datos deficiente | Hashea toda la información personal con SHA-256 e incluye varias match keys |
| Conversiones no atribuidas | Faltan parámetros `fbc`/`fbp` | Pasa el Facebook Click ID y el Browser ID desde las cookies |
| `RATE_LIMIT_REACHED` | Demasiadas llamadas a la API | Implementa backoff exponencial; revisa el nivel de acceso de la API |
| Formularios de lead no se sincronizan | Falta el permiso `leads_retrieval` | Añade el permiso al System User |
| Eventos en modo test | `test_event_code` aún activo | Elimina el test event code en producción |

## Buenas prácticas

1. **Usa tokens de System User** - Los System Users proporcionan tokens estables y sin expiración para integraciones de servidor
2. **Hashea toda la información personal** - Haz hash SHA-256 de toda la información personal antes de enviarla a Meta
3. **Envía por CAPI y por Pixel** - Usa tanto la Conversions API como el Meta Pixel para tracking redundante con deduplicación
4. **Incluye event IDs** - Establece `event_id` en los eventos de CAPI y de Pixel para permitir la deduplicación
5. **Pasa `fbc` y `fbp`** - Incluye el Facebook Click ID y el Browser ID para maximizar la atribución de conversiones
6. **Verifica tu empresa** - Completa la verificación de empresa para obtener acceso completo a la API y límites de velocidad más altos
7. **Usa `test_event_code`** - Prueba los eventos de la Conversions API en Events Manager antes de pasar a producción

## Seguridad

- **Tokens de System User** - Tokens de autenticación no personales, limitados al negocio
- **Hash SHA-256** - Toda la información personal se hashea antes de transmitirse a los servidores de Meta
- **App Secret Proof** - Capa adicional opcional de seguridad en la autenticación
- **Limitación por negocio** - Permisos limitados a cuentas publicitarias y páginas concretas
- **Cumplimiento de Meta** - Sujeto a los Términos de Plataforma y las políticas publicitarias de Meta
- **Condiciones de procesamiento de datos** - Se aplican las Condiciones de procesamiento de datos de Meta para datos de la UE

## Recursos relacionados

- [Conector de Google Ads](https://tajo.io/es/docs/connectors/marketing/google-ads)
- [Conector de Klaviyo](https://tajo.io/es/docs/connectors/marketing/klaviyo)
- [Conector de Brevo](https://tajo.io/es/docs/connectors/marketing/brevo)
- [Skill de sincronización de clientes](https://tajo.io/es/docs/skills/data-sync/customer-sync)
