# Integración con Meta Ads

<Aside type="caution" icon="setting" title="Se necesita ayuda del equipo de desarrollo">
 Necesitarás ayuda de tu equipo de desarrollo para configurar la integración. Por favor, comparte esta guía con ellos.
</Aside>

La integración con [Meta Ads](https://www.facebook.com/business/ads) te permite sincronizar las audiencias de Pushwoosh con tus cuentas publicitarias de Meta. Úsala para dirigirte o excluir a usuarios en campañas publicitarias y añadir anuncios de pago como otro canal en tu customer journey.

## Casos de uso

Usa esta integración para:

* dirigirte a usuarios de alto valor en múltiples canales para aumentar las compras o la interacción
* hacer retargeting a usuarios que responden menos en otros canales
* crear audiencias de supresión para que los clientes leales no reciban anuncios innecesarios


## Prerrequisitos
Antes de conectar Meta Ads, asegúrate de que:

* Tienes el rol de **Administrador** en tu cuenta de Pushwoosh. Consulta [Gestionar el acceso y los permisos de los usuarios](/es/product/account-management-and-security/multi-login-accounts/#creating-and-managing-roles-also-known-as-groups) para ver cómo funcionan los roles y permisos.
* Tienes un [**Facebook Business Manager**](https://www.facebook.com/business/tools/business-manager) configurado para gestionar los activos de Facebook de tu marca, incluyendo cuentas publicitarias, páginas y aplicaciones.
* Tienes una [**Cuenta publicitaria de Facebook**](https://www.facebook.com/business/tools/ads-manager) activa vinculada a tu Business Manager.
* El administrador de tu Facebook Business Manager te ha concedido permisos de **Gestionar campañas** o **Gestionar cuentas publicitarias** para las cuentas publicitarias que planeas usar con Pushwoosh.
* Has aceptado los términos y condiciones de la cuenta publicitaria para esas cuentas.
* Has aceptado los [**Términos de las audiencias personalizadas de Facebook**](https://business.facebook.com/legal/terms/customaudience) para las cuentas publicitarias de Facebook que planeas usar con Pushwoosh.

## Configurar Meta Ads en Pushwoosh

1. En Pushwoosh, ve a **Configuración** > **Integraciones de terceros**.

2. En la tarjeta de Meta Ads, haz clic en **Página de inicio de sesión**.

<img src="/integrations-meta-ads-integration-1.webp" alt="Página de integraciones de terceros con la tarjeta de Meta Ads mostrando los enlaces de Configuración, Guía de configuración y Página de inicio de sesión"/>

3. Inicia sesión en tu cuenta de Meta y luego haz clic en **Continuar**.

4. Selecciona las cuentas publicitarias que quieres conectar.
<img src="/integrations-meta-ads-integration-6.webp" alt="Pantalla de Meta para elegir la opción de acceso empresarial para la integración conectada" width="480" />

5. Revisa los permisos solicitados para la cuenta publicitaria y el acceso empresarial.

6. Haz clic en **Guardar**. Meta mostrará una confirmación de que tu cuenta está conectada.

### Revisar el estado de la conexión


Después de la configuración, serás redirigido a la página de **Meta Ads** en Pushwoosh.

<img src="/integrations-meta-ads-integration-8.webp" alt="Página de Meta Ads de Pushwoosh con la insignia de Conectado, tabla de cuentas publicitarias con la columna de cuenta empresarial, acciones de cabecera y Cómo sincronizar audiencias con Meta" />

La tabla de cuentas publicitarias lista cada cuenta conectada con:

* **Nombre de la cuenta publicitaria**
* **Cuenta empresarial**
* **ID**

Abre los tres puntos al final de una fila y elige **Eliminar cuenta publicitaria** para eliminar esa cuenta publicitaria de la lista en Pushwoosh.

### Gestionar cuentas publicitarias conectadas

En la página de **Meta Ads**, haz clic en **Gestionar cuentas** para abrir el diálogo. Usa el interruptor en cada fila para incluir o excluir esa cuenta publicitaria de la integración.
Haz clic en **Aplicar** para guardar los cambios o en **Cancelar** para cerrar sin guardar.

Para ajustar la vista de la lista:

* Activa o desactiva **Mostrar solo conectadas** para limitar las filas que aparecen.
* Escribe en **Buscar por nombre o id...** para encontrar cuentas en la lista.

<img src="/integrations-meta-ads-integration-4.webp" alt="Diálogo de Gestionar cuentas publicitarias con el interruptor Mostrar solo conectadas, búsqueda por nombre o id, interruptores de fila con insignias de Conectado o Desconectado, Cancelar y Aplicar" />



### Mapear tags del proyecto a campos de Meta

El mapeo de propiedades de usuario te permite decirle a Pushwoosh qué atributos de usuario de Meta deben actualizar qué campos de **Nombre de Tag** en tu proyecto. De esa manera, cuando los datos provienen de Meta, se guardan donde esperas.

<Aside type="note">
Para la sincronización de audiencias, Pushwoosh siempre envía un identificador por usuario desde **Email**, **Número de teléfono** o **MADID**, dependiendo de lo que exista en el perfil. Configura el mapeo cuando quieras que Meta reciba atributos de usuario **adicionales** más allá de los identificadores anteriores.
</Aside>

1. En la página de **Meta Ads**, haz clic en **Mapear datos de usuario**.

2. Para cada **Campo de Facebook** en la columna izquierda, elige un **Nombre de Tag** en tu proyecto desde el control de la derecha.
Mapea solo las filas que necesites.

<img src="/integrations-meta-ads-integration-3.webp" alt="Modal de Mapear tags del proyecto a campos de Meta con las columnas Campo de Facebook y Nombre de Tag, casilla de sobrescribir, Cancelar y Guardar" width="480" />

<Aside type="note" title="Campos mapeados automáticamente">
Pushwoosh mapea estos campos automáticamente. No los configuras en **Mapear tags del proyecto a campos de Meta**:

* **Email**
* **Phone number**
* **MADID**
</Aside>
3. Haz clic en **Guardar** para aplicar el mapeo o en **Cancelar** para cerrar sin guardar.

## Habilitar la recopilación de MADID en el SDK

Meta Ads hace coincidir a los usuarios utilizando identificadores de dispositivo (MADID) recopilados a través del SDK móvil.
El SDK de Pushwoosh no recopila identificadores de publicidad (GAID en Android, IDFA en iOS)
automáticamente. Ambas plataformas requieren el consentimiento explícito del usuario antes de que se pueda leer el identificador.
En tu aplicación, solicita el consentimiento del usuario, lee el identificador cuando se permita y pasa el
valor al SDK.

<Tabs syncKey="maid-sdk">
<TabItem label="Android">

**1. Añade la dependencia**

```groovy
implementation 'com.google.android.gms:play-services-ads-identifier:...'
```

**2. Declara el permiso AD_ID (requerido para targetSdk ≥ 33)**

Añade esto a tu `AndroidManifest.xml`:

```xml
<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
```

<Aside type="caution">
Sin este permiso en Android 13+, `AdvertisingIdClient.getAdvertisingIdInfo()` devuelve silenciosamente un UUID con ceros (`00000000-0000-0000-0000-000000000000`). El SDK de Pushwoosh lo normaliza a `null`, por lo que no se envía ningún MADID al servidor y la coincidencia de audiencias de Meta no funcionará.
</Aside>

**3. Recupera el GAID y pásalo al SDK**

`getAdvertisingIdInfo` debe ser llamado en un hilo de fondo:

```java

String gaid = AdvertisingIdClient.getAdvertisingIdInfo(context).getId();

Pushwoosh.getInstance().setAdvertisingId(gaid);

```

Para borrar el valor almacenado en el backend, pasa `null` o una cadena vacía:

```java
Pushwoosh.getInstance().setAdvertisingId(null);
```

**Notas de comportamiento:**

- Si el valor no ha cambiado desde la última llamada exitosa, no se realiza ninguna solicitud de red.
- Si la solicitud de red falla, reintenta en el próximo inicio de la aplicación.
- La llamada se ignora cuando `Pushwoosh.stopCommunication()` está activo.
- El UUID de ceros (`00000000-0000-0000-0000-000000000000`) se trata igual que `null` — el MADID almacenado se borra en el backend.

</TabItem>
<TabItem label="iOS">

**1. Añade la descripción de uso a `Info.plist`**

Apple requiere esta clave antes de mostrar el diálogo de permiso ATT:

```xml
<key>NSUserTrackingUsageDescription</key>
<string>We use your advertising identifier to show you relevant ads.</string>
```

**2. Declara el dominio de seguimiento en tu manifiesto de privacidad**

Si tu aplicación usa IDFA para el seguimiento, Apple requiere que listes los dominios que reciben datos de seguimiento en tu [manifiesto de privacidad](https://developer.apple.com/documentation/bundleresources/privacy-manifest-files) (`PrivacyInfo.xcprivacy`). Consulta [TN3182](https://developer.apple.com/documentation/technotes/tn3182-adding-privacy-tracking-keys-to-your-privacy-manifest) para los requisitos completos.

Establece `NSPrivacyTracking` en `true` y añade el dominio de seguimiento de Pushwoosh a `NSPrivacyTrackingDomains`:

```xml
<key>NSPrivacyTracking</key>
<true/>
<key>NSPrivacyTrackingDomains</key>
<array>
    <string>tracking.svc-nue.pushwoosh.com</string>
</array>
```

<Aside type="note">
Si el usuario no ha otorgado el permiso ATT, iOS bloquea las solicitudes de red a todos los dominios listados en `NSPrivacyTrackingDomains`. El MADID no se enviará independientemente de lo que haga tu código.
</Aside>

**3. Solicita la autorización de seguimiento y pasa el IDFA al SDK**

`ATTrackingManager` requiere iOS 14 o posterior. Si tu objetivo de despliegue es inferior a iOS 14, envuelve la llamada en una comprobación de disponibilidad.

El SDK de Pushwoosh no llama a `ATTrackingManager`. Solicita la autorización de seguimiento en tu aplicación y luego pasa el resultado al SDK:

```swift
import AppTrackingTransparency
import AdSupport

if #available(iOS 14, *) {
    ATTrackingManager.requestTrackingAuthorization { status in
        let idfa = status == .authorized
            ? ASIdentifierManager.shared().advertisingIdentifier.uuidString
            : nil
        Pushwoosh.configure.setAdvertisingId(idfa)
    }
}
```


Para borrar el valor almacenado en el backend, pasa `nil` o una cadena vacía:

```swift
Pushwoosh.configure.setAdvertisingId(nil)
```

**Notas de comportamiento:**

- Si el valor no ha cambiado desde la última llamada exitosa, no se realiza ninguna solicitud de red.
- Si la solicitud de red falla, llama a `setAdvertisingId` de nuevo en el próximo inicio de la aplicación.
- La llamada se ignora cuando `Pushwoosh_ALLOW_SERVER_COMMUNICATION` está deshabilitado.
- El UUID de ceros (`00000000-0000-0000-0000-000000000000`) se trata igual que `nil` o una cadena vacía — el MADID almacenado se borra en el backend.

> Llama a `requestTrackingAuthorization` desde el flujo principal de la interfaz de usuario de tu aplicación. Apple recomienda hacerlo después de mostrar tu propia pantalla explicativa, no inmediatamente al iniciar.

</TabItem>
</Tabs>

### Cómo funciona

Una vez que llamas a `setAdvertisingId`, el SDK envía el valor al endpoint de seguimiento de Pushwoosh como el campo `madid` junto con el código de la aplicación y el ID de hardware del dispositivo. Pushwoosh utiliza este identificador para hacer coincidir tus registros de dispositivos con las audiencias de Meta Ads para la sincronización.


## Sincronizar audiencias en journeys

El punto de **Sincronización de audiencia** en el **Journey Builder** vincula tu journey a una Audiencia Personalizada de Meta. Cada vez que un usuario llega a ese punto, Pushwoosh le pide a Meta que lo añada a la audiencia o lo elimine de ella.

Por ejemplo, puedes usar esto para dejar de mostrar un anuncio de un seminario web a los usuarios que ya se han registrado, para no malgastar el presupuesto publicitario en personas que ya no necesitan verlo.

Para configurar la sincronización de audiencia:

1. Abre el [**Journey Builder**](/es/product/customer-journey/pushwoosh-journey-overview/).

2. Añade una [**Entrada basada en audiencia**](/es/product/customer-journey/journey-elements/entry-elements/audience-based-entry/). En **Fuente de audiencia**, elige un segmento o lista de Pushwoosh que defina quién entra en este journey. Por ejemplo, un segmento **Usuarios con el tag `webinar_registered` establecido en `true`**. Solo esos usuarios avanzarán por el journey y llegarán a la **Sincronización de audiencia**.

3. Añade el punto de **Sincronización de audiencia**.

4. En **Cómo sincronizar la información de los usuarios con la audiencia de Meta**, elige una opción:
   * **Añadir usuarios a la audiencia**. Añade a cada usuario que llega a este paso a la audiencia de Meta que selecciones. Por ejemplo, úsalo para empezar a mostrar un anuncio a los usuarios que se inscribieron pero aún no han asistido.
   * **Eliminar usuarios de la audiencia**. Elimina a cada usuario que llega a este paso de esa audiencia de Meta. En este ejemplo, selecciona esta opción para dejar de mostrar el anuncio del seminario web a los usuarios que ya se registraron.

5. En **Cuenta de Meta Ads**, selecciona la cuenta publicitaria conectada.

6. En **Audiencia**, selecciona la audiencia de Meta, por ejemplo **Webinar**.

<img src="/integrations-meta-ads-integration-10.webp" alt="Panel de Sincronización de audiencia con el menú desplegable de Audiencia y la Audiencia Personalizada de Meta seleccionada" />

7. Haz clic en **Aplicar** para guardar el punto o en **Cancelar** para cerrar sin guardar.

8. Termina de configurar el journey y luego lánzalo.

<img src="/integrations-meta-ads-integration-9.webp" alt="Panel de Sincronización de audiencia con nombre del paso, añadir o eliminar usuarios, cuenta de Meta Ads, Audiencia, Aplicar y Cancelar" />

Cuando esos usuarios llegan a la **Sincronización de audiencia**, son eliminados de la audiencia **Webinar** en Meta, por lo que ya no ven el anuncio del seminario web allí.

## Comportamiento y manejo de errores

El procesamiento del Journey depende de la disponibilidad de la cuenta y la audiencia de Meta:

* Meta actualiza la audiencia solo cuando puede hacer coincidir al usuario con los datos que proporciona Pushwoosh. Si Meta no puede hacer coincidir al usuario, la audiencia no cambia para ese usuario, y este continúa en el journey.
* Si un perfil llega al punto de **Sincronización de audiencia** mientras la cuenta publicitaria conectada está desconectada, el journey se detiene para ese perfil y Pushwoosh envía notificaciones del sistema y por correo electrónico.
* Si una audiencia seleccionada no se encuentra en Meta y la API devuelve un error, el journey se detiene para ese perfil y Pushwoosh envía notificaciones del sistema y por correo electrónico.

## Estadísticas de sincronización de audiencia
Después del lanzamiento, abre las estadísticas del paso **Sincronización de audiencia** para ver el volumen de entradas, adiciones y eliminaciones, y perfiles omitidos. Para detalles de las métricas, consulta [**Sincronización de audiencia**](/es/product/statistics-and-analytics/journey-statistics/journey-element-statistics/#audience-sync) en **Estadísticas de Customer Journey**.

<img src="/integrations-meta-ads-integration-11.webp" alt="Estadísticas de Sincronización de audiencia con Entradas totales, Añadidos a la audiencia de Meta, Eliminados de la audiencia de Meta, Omitidos no sincronizados pasan al siguiente paso, Exportar usuarios y Cuenta de Meta Ads para sincronización" />