# Atribución en iOS: SKAdNetwork y Apple Ads

URL: https://traqio.app/es/docs/concepts/ios-attribution
Last updated: 2026-10-22

Cómo mide Traqio iOS sin el IDFA: postbacks firmados de SKAdNetwork decodificados con tu mapeo de valores de conversión, y Apple Ads a través de AdServices.

iOS no tiene install referrer, y Traqio no lee el IDFA por defecto. Mide iOS a través de los dos canales que Apple creó para la atribución sin seguimiento del usuario: **SKAdNetwork** (SKAN), el framework de atribución de Apple que preserva la privacidad, para todas las redes publicitarias; y el **token de atribución de Apple Ads**, para los anuncios propios de Apple. Ninguno de los dos necesita el aviso de App Tracking Transparency.

## SKAdNetwork en un párrafo

Cuando el anuncio de una red publicitaria lleva a una instalación, iOS la registra en el dispositivo. Una vez cerrada la ventana de conversión, más un retraso aleatorio de al menos 24 horas, Apple envía un **postback** — firmado por Apple — a la red publicitaria y, si la app declara uno, al endpoint del desarrollador. El postback nombra la campaña (un identificador de fuente) y lleva el **valor de conversión** de la app. Nunca nombra al usuario ni al dispositivo. Eso hace que la medición SKAN sea agregada, aproximada y tardía por diseño: Traqio la reporta por campaña, nunca por usuario.

## Recibir los postbacks

Declara Traqio como endpoint de atribución de tu app, en `Info.plist`:

```xml
<key>NSAdvertisingAttributionReportEndpoint</key>
<string>https://api.traqio.app</string>
```

Solo el origen — Apple añade su propia ruta. Las apps de Expo lo definen en `app.json` ([consulta Expo](https://traqio.app/es/docs/sdks/expo#app-json)). Sin él, Traqio solo ve lo que las redes deciden reportar sobre sí mismas.

Qué hace Traqio con cada postback:

- **Verifica la firma de Apple** — SKAdNetwork 2.1, 2.2, 3.0 y 4.0. Un postback que no supera la verificación no se guarda ni se cuenta. Las versiones 1.0 y 2.0, de versiones de iOS que ya no reciben tráfico publicitario, se rechazan.
- **Descarta los duplicados** según el propio id de transacción de Apple, y conserva intacto el original firmado, para que cualquier decodificación pueda volver a comprobarse más adelante.
- **Cuenta una instalación** solo para un postback *ganador* de la *primera* ventana — llegan hasta tres postbacks por instalación.

> **El valor de conversión no está firmado** Apple deja el valor de conversión fuera de los campos firmados. Se le da crédito en la medida de tu mapeo, y nunca como prueba de ingresos.

## Tu mapeo de valores de conversión

Seis bits significan lo que tú decidas. En la consola (tu producto → Integraciones → Configuración SKAN) publicas un **mapeo** en uno de dos modos:

| Modo | El valor fino (0–63) es… | Se decodifica como |
| --- | --- | --- |
| Ingresos | un índice en tramos de ingresos ascendentes | el límite inferior del tramo — «al menos X» |
| Eventos | una máscara de bits sobre hasta seis hitos con nombre | los hitos que alcanzó el usuario |

Añade **valores aproximados** (low, medium, high) para SKAN 4: Apple envía el valor aproximado en lugar del fino en sus niveles de privacidad más bajos *y* en la segunda y tercera ventana, así que sin ellos la mayoría de los postbacks no se decodifican en nada. Cada umbral aproximado debe ser uno de tus tramos de ingresos — si no, un postback SKAN 3 y uno SKAN 4 de la misma instalación se decodificarían en dos ingresos distintos; la consola lo rechaza.

Un mapeo se **publica, nunca se edita en el sitio**: un postback de la tercera ventana puede llegar 35 días después de la instalación, así que cambiar un mapeo crea una versión nueva, y cada postback registra la versión con la que se decodificó. Publica uno antes de tu primera campaña de iOS — sin él, las instalaciones se registran pero los postbacks no traen nada que decodificar.

### Las tres ventanas de conversión

| Ventana | Horas tras la instalación | Lleva |
| --- | --- | --- |
| 1 | 0 – 48 | el valor fino (o el aproximado en los niveles bajos) |
| 2 | 48 – 168 | solo el valor aproximado |
| 3 | 168 – 840 | solo el valor aproximado |

Puedes **bloquear** una ventana antes de tiempo — tras un número de horas, o en la siguiente actualización — para que su postback llegue antes. El precio es todo lo que esa ventana habría medido después del bloqueo; la consola muestra ese hueco antes de que guardes. El calendario forma parte del mapeo, así que cambiarlo no requiere publicar una nueva versión de la app.

### En el dispositivo

El SDK obtiene el mapeo publicado, acumula los ingresos entre arranques y define el valor: cada valor medido — compras e ingresos publicitarios de AdMob — lo mueve, y solo puede subir, como exige SKAN. Esto está completo en los SDK de [React Native](https://traqio.app/es/docs/sdks/react-native) / [Expo](https://traqio.app/es/docs/sdks/expo) e [iOS nativo](https://traqio.app/es/docs/sdks/ios); los demás registran la instalación en SKAdNetwork sin definir valores ([matriz](https://traqio.app/es/docs/sdks#capabilities)).

## Cómo aparece SKAN en los informes

- Las instalaciones SKAN y sus ingresos decodificados se reportan por campaña, aparte de los ingresos medidos y del ROAS.
- Los postbacks que no llevaban ningún valor utilizable — el umbral de privacidad de Apple — se cuentan como suprimidos, no se descartan.
- El indicador de nueva descarga de Apple se reporta en su propia columna.
- Cada postback recibido puede inspeccionarse tal como llegó, para tu propia verificación.

## Apple Ads

Apple Ads (antes Search Ads) atribuye sus propias instalaciones a través del framework **AdServices**, disponible desde iOS 14.3. El SDK pide a AdServices un **token de atribución** — un justificante opaco válido durante 24 horas, que no dice nada sobre el usuario — y lo envía a Traqio. Traqio lo resuelve con Apple, reintentando mientras Apple aún no lo haya registrado, y atribuye la instalación a la campaña, el grupo de anuncios y la palabra clave de Apple Ads cuando Apple lo confirma.

Apple decide el nivel de detalle de su respuesta según el estado de ATT que el usuario ya eligió para tu app. La mayoría de las instalaciones no proceden de Apple Ads; para esas, Apple responde que no hay nada que atribuir y la instalación se queda como estaba. Las instalaciones de Apple Ads aparecen como **Autoatribuido**.

## Lo que Traqio no usa

- El IDFA, por defecto — el SDK nunca muestra el aviso de ATT, y solo lee el IDFA si activas `collectAdvertisingId` y el usuario ya permitió el seguimiento (útil para Unity Ads y AppLovin).
- El portapapeles — leerlo muestra el aviso de pegado de iOS y solo cubre Safari.
- El fingerprinting de dispositivos, por defecto. Si activas la [coincidencia probabilística de web a app](https://traqio.app/es/docs/concepts/attribution#probabilistic), envía el consentimiento solo después de que el usuario haya autorizado App Tracking Transparency.

## Preguntas frecuentes

**¿Qué es un valor de conversión de SKAdNetwork?**
Un número de 0 a 63 (seis bits) que la app define en el dispositivo tras la instalación, y que Apple devuelve en el postback de SKAdNetwork. Su significado lo decide el anunciante: en Traqio, o bien un tramo de ingresos, o bien un conjunto de hasta seis hitos dentro de la app, definidos por el mapeo que publicas. SKAdNetwork 4 añade un valor aproximado (coarse) — low, medium o high — que Apple envía en lugar del valor fino en sus niveles de privacidad más bajos y en la segunda y tercera ventana.

**¿Por qué a algunas campañas de iOS les falta el valor de conversión?**
Apple oculta el valor de conversión — y a veces más — cuando una campaña tiene demasiadas pocas instalaciones para alcanzar su umbral de anonimato de grupo. Traqio cuenta esos postbacks e informa de cuántos fueron suprimidos, en lugar de ocultarlos o inventar un valor.

**¿Traqio muestra el aviso de App Tracking Transparency?**
No, y no lo necesita. SKAdNetwork y el token de atribución de Apple Ads funcionan sin ATT. Traqio solo lee el IDFA si lo activas y tu app ya tiene el ATT, así que para la mayoría de instalaciones los resultados de iOS son a nivel de campaña para SKAdNetwork y a nivel de instalación solo para Apple Ads.
