Primeros pasos
Inicio rápido: tu primera instalación atribuida
De una cuenta vacía a una instalación atribuida a su anuncio en unos 30 minutos: crea la app, añade el SDK, crea un enlace e instala desde él.
Esta guía lleva una app de cero a una primera instalación que Traqio atribuye a un anuncio. Usa Android para la instalación atribuida, porque Android es la plataforma en la que la atribución se puede demostrar en el acto: el Install Referrer de Google Play lleva el id de clic de Traqio desde el anuncio hasta la app. Todo, salvo la última comprobación, funciona igual en iOS.
Acceso anticipado
Pasos#
Crea tu app en la consola#
Regístrate en traqio.app, gratis y sin tarjeta. La consola se abre en Añade tu app: dale un nombre y luego su bundle id (App Store), su nombre del paquete (Google Play), o ambos. Una app en Traqio cubre las dos tiendas; los informes las combinan y pueden separarlas.
El bundle id y el nombre del paquete son aquello con lo que se asocian las instalaciones, así que deben ser exactamente los que usan tus fichas en las tiendas.
Copia la clave SDK#
En cuanto la app existe, la consola muestra su clave SDK (más adelante: tu app → Integraciones → SDK). La clave es pública por diseño: va dentro de tu app y la identifica, nada más.
Instala el SDK#
Elige tu plataforma. Los demás SDK (Capacitor, Kotlin Multiplatform, .NET MAUI, Unity) tienen los mismos tres pasos en sus propias páginas, enumeradas en la introducción a los SDK.
npx expo install @traqio/expo @react-native-async-storage/async-storage npx expo prebuild --clean npx expo run:android # or: npx expo run:ios — a development build, not Expo Gonpm install @traqio/react-native @react-native-async-storage/async-storage cd ios && pod install// app/build.gradle.kts dependencies { implementation("io.khufu.traqio:traqio-android:0.1.0") }// Package.swift .package(url: "https://github.com/khufuio/traqio-ios", from: "0.1.0")flutter pub add traqioInicialízalo una vez al arrancar#
Llama a
initlo antes posible en el arranque de tu app, con tu clave SDK y el endpointhttps://api.traqio.app: solo el origen, sin ruta.// app/_layout.tsx — once, at module level, before the first screen renders import { Traqio, getNativeBridge } from "@traqio/expo"; import Constants from "expo-constants"; Traqio.init({ sdkKey: "YOUR_SDK_KEY", endpoint: "https://api.traqio.app", native: getNativeBridge(), // Install Referrer on Android, SKAdNetwork + Apple Ads on iOS appVersion: Constants.expoConfig?.version, });// index.js — before AppRegistry.registerComponent import { Traqio, getNativeBridge } from "@traqio/react-native"; import { version } from "./package.json"; Traqio.init({ sdkKey: "YOUR_SDK_KEY", endpoint: "https://api.traqio.app", native: getNativeBridge(), appVersion: version, });class App : Application() { override fun onCreate() { super.onCreate() Traqio.init(this, sdkKey = "YOUR_SDK_KEY", endpoint = "https://api.traqio.app") } }import SwiftUI import TraqioSDK @main struct MyApp: App { init() { Traqio.start(sdkKey: "YOUR_SDK_KEY", endpoint: "https://api.traqio.app") } var body: some Scene { WindowGroup { ContentView() .onOpenURL { Traqio.handleUrl($0) } .onContinueUserActivity(NSUserActivityTypeBrowsingWeb) { Traqio.handleUserActivity($0) } } } }import 'package:flutter/widgets.dart'; import 'package:traqio/traqio.dart'; Future<void> main() async { WidgetsFlutterBinding.ensureInitialized(); await Traqio.init(sdkKey: 'YOUR_SDK_KEY', endpoint: 'https://api.traqio.app'); runApp(const MyApp()); }El endpoint debe ser exactamente este
El SDK se traga los errores de red por diseño (los pone en cola y reintenta), así que un host mal escrito no produce ningún error en ninguna parte: la app parece sana y la consola sigue vacía. Si no llega nada en el siguiente paso, revisa primero el endpoint.Comprueba que llega la primera señal#
Ejecuta la app una vez en un dispositivo o un emulador. En la consola, abre tu app → Integraciones → Eventos en directo: la instalación aparece en pocos segundos, tal y como se recibió. Una build de desarrollo registra su instalación como orgánica; es lo esperado, no hubo anuncio.
¿Nada después de un minuto? El panel No llega nada de la pantalla de configuración indica si alguna petición llegó a Traqio con esta clave, y el botón Enviar un evento de prueba demuestra que la conexión funciona desde el lado de la consola. Los eventos de prueba nunca se facturan ni aparecen en los informes.
Crea un enlace de seguimiento#
Abre Enlaces → Nuevo enlace. Dale una etiqueta (“Meta / lanzamiento / vídeo A”), la red y el id de campaña propio de la red, y, si los conoces, los ids del conjunto de anuncios y del anuncio. Esos ids son los que vinculan un clic con la inversión que informa la red. Copia la URL de clic del enlace; tiene este aspecto:
https://api.traqio.app/c/launch, o usa tu propio dominio una vez que lo hayas configurado.La URL de clic es lo que va en el destino del anuncio. Cómo se resuelven los enlaces, la URL de impresión, las plantillas y los códigos QR están en Enlaces de seguimiento.
Instala desde el enlace#
En un teléfono Android con sesión iniciada en una cuenta de Google que pueda ver tu app en Google Play (una ficha de producción, o un canal de pruebas interno o cerrado), desinstala la app, toca la URL de clic, instala desde Play Store y abre la app.
En Eventos en directo aparece primero una fila Clic y después una Instalación marcada como Determinista, con la red y la campaña del enlace. Esa instalación ya cuenta en los informes de la campaña y, una vez conectada la inversión, en su ROAS.
¿Por qué no una build de depuración?
El Install Referrer lo escribe Play Store, así que solo lo lleva una instalación que Play Store realizó después del clic.adb instally las ejecuciones desde el IDE nunca lo llevan, y aparecen como orgánicas.Registra un evento de ingresos#
Registra los eventos con los que tus campañas deben optimizarse, con los nombres que Traqio asigna a los eventos estándar de cada red (
purchase,signup,subscribe…). Una compra lleva su valor, su moneda y, en los SDK que lo aceptan, el id de transacción de la tienda, para que la misma compra informada por RevenueCat se cuente una sola vez.// after sign-in — the SAME id you give RevenueCat (Purchases.logIn) Traqio.setUserId(user.id); Traqio.track("signup"); Traqio.track("purchase", { value: 9.99, currency: "EUR", transactionId: purchase.transactionId, // the store's id: StoreKit transactionId, Play orderId });Traqio.setUserId(user.id); // after sign-in — same id as RevenueCat's app_user_id Traqio.track("purchase", { value: 9.99, currency: "EUR", transactionId: purchase.transactionId });Traqio.setUserId(user.id) // after sign-in — same id as RevenueCat's app_user_id Traqio.track("signup") Traqio.track("purchase", 9.99, "EUR")Traqio.setUserId(user.id) // after sign-in — same id as RevenueCat's app_user_id Traqio.track("signup") Traqio.track("purchase", value: 9.99, currency: "EUR")Traqio.setUserId(user.id); // after sign-in — same id as RevenueCat's app_user_id Traqio.track('signup'); Traqio.track('purchase', value: 9.99, currency: 'EUR');Define el mismo id de usuario en Traqio y en RevenueCat, y conecta el webhook de RevenueCat: las renovaciones de suscripciones y los reembolsos llegan entonces a la instalación correcta sin publicar una nueva versión de la app.
Siguientes pasos#
- Conecta Meta y TikTok para leer la inversión y ver el ROAS por campaña.
- En iOS, publica un mapeo de valores de conversión antes de tu primera campaña: sin él, los postbacks de SKAdNetwork no llevan nada que decodificar.
- Lee Eventos e ingresos antes de poner nombre a tus eventos: un nombre fuera del vocabulario se almacena y aparece en los informes, pero no optimiza nada en Meta ni en TikTok.
Preguntas frecuentes#
- ¿Por qué mi instalación de prueba aparece como orgánica?
- En Android la atribución viaja en el Install Referrer de Google Play, que solo existe para las instalaciones hechas desde Play Store tras un clic en tu enlace de Traqio. Un APK instalado con adb, una build ejecutada desde el IDE o una instalación que no siguió a un clic no tiene referrer, así que la instalación se registra como orgánica. Prueba con una build de un canal de pruebas de Play.
- ¿Puedo probar la atribución en iOS de la misma manera?
- No al instante. Salvo Apple Ads, la atribución en iOS viene de los postbacks de SKAdNetwork que Apple envía al menos 24 horas después de que se cierre la ventana de conversión, agregados por campaña y retenidos por debajo de los umbrales de privacidad de Apple. La parte del SDK se puede verificar enseguida (la instalación aparece en Eventos en directo), pero la atribución en sí llega más tarde.
- ¿La clave SDK es un secreto?
- No. La clave SDK identifica la app y va dentro de ella, donde cualquiera puede leerla. Las credenciales secretas (la cabecera del webhook de RevenueCat y las claves de API) son valores distintos que nunca van en la app.