Cómo conectar LinkedIn Ads y TikTok Ads a BigQuery
Tutorial paso a paso para llevar tus datos de LinkedIn Ads y TikTok Ads a BigQuery: opción gratuita con OWOX open-source y opción profesional con Coupler.io. Qué campos importar, errores comunes y decisiones de diseño.
Cómo conectar LinkedIn Ads y TikTok Ads a BigQuery
LinkedIn Ads y TikTok Ads no tienen conector nativo en BigQuery. Las dos opciones que existen son un conector open-source gratuito de OWOX (funciona con Apps Script y corre en tu propia cuenta de GCP) y plataformas ETL como Coupler.io o Hevo (setup en minutos, costo mensual). Esta guía explica ambas con pasos concretos y decisiones de diseño.
Por qué querés tus datos de ads en BigQuery
Google Ads y Meta Ads tienen conectores nativos en BigQuery desde hace años. LinkedIn Ads y TikTok Ads no. Esa asymetría tiene un costo práctico: cuando armás dashboards que mezclan performance de distintas plataformas, terminás con huecos o con datos inconsistentes.
Los motivos más comunes para hacer esta conexión:
Unificar reporting. Si manejás campañas en LinkedIn, TikTok y Google Ads, necesitas un lugar donde esas cifras convivan para comparar ROAS y distribución de presupuesto sin hacer hojas manuales.
Cruzar con revenue. Unir datos de installs o leads de tus campañas con eventos de tu base de datos (CRM, revenue, churn) es lo que convierte un reporte de vanidad en uno que dice si la campaña realmente pagó.
Forecasting. Una vez que tenés el historial de spend y conversiones en BigQuery, podés usar herramientas como TimesFM para proyectar demanda futura sin depender del reporting nativo de cada plataforma.
Auditoría y attribution. Los datos crudos en BigQuery te permiten hacer attribution custom (data-driven, no rule-based) sin las limitaciones de los reportes estándar.
Las dos opciones
| OWOX open-source | Coupler.io / Hevo | |
|---|---|---|
| Costo | Gratis | Desde USD 99/mes |
| Setup | Requiere cuenta GCP + tiempo | 10-15 minutos |
| Actualización | Manual o programado con Apps Script | Automático, programable |
| Control de datos | Total (tu infraestructura) | El tercero procesa tus datos |
| Mantenimiento | Necesita revisión cuando cambian APIs | El vendor mantiene los conectores |
| Ideal para | Equipos con infraestructura data propia | Equipos que quieren resultados rápidos |
Opción 1: OWOX open-source (gratuita)
OWOX publicò un conector open-source llamado OWOX BI Data Streaming que usa Google Apps Script para extraer datos de LinkedIn Ads y TikTok Ads hacia BigQuery sin costo de licencia. El código corre en tu propia cuenta de GCP.
Requerimientos previos:
- Cuenta de Google Cloud Platform con BigQuery habilitado
- Proyecto creado con la API de BigQuery activada
- Cuenta de LinkedIn Ads con acceso a la Campaign Manager
- Credenciales de TikTok Ads (AD pixel ID o account ID)
Pasos para LinkedIn Ads:
-
Descargá el template de Apps Script desde owox.com (buscá "OWOX BI LinkedIn Ads connector"). El template incluye el script y las instrucciones de configuración.
-
Configurá las credenciales de LinkedIn Ads dentro del script: necesitas el Access Token de la LinkedIn Marketing API. Se obtiene desde LinkedIn Campaign Manager > Account Assets > Tokens.
-
Indicá qué campos querés extraer. Los campos básicos que necesitás son: Campaign Name, Campaign ID, Impressions, Clicks, Spend, CTR, CPC, conversions.
-
Configurá el destination: el project ID de tu proyecto en GCP y el dataset de BigQuery donde querés que landing la tabla.
-
Ejecutá el script manualmente la primera vez para verificar que los datos llegan correctamente a BigQuery.
-
Programá la ejecución con un trigger de Apps Script (una vez por día es suficiente para la mayoría de los casos).
El mismo script tiene versión para TikTok Ads. La diferencia principal es cómo se autentica: TikTok usa OAuth 2.0 con el AD pixel ID como identificador principal. Los campos disponibles en TikTok Ads incluyen: Campaign Name, Impressions, Reach, Video Views, Clicks, Spend, CTR, CPC, CPP, Conversion events.
Limitaciones de OWOX:
- Las APIs de LinkedIn y TikTok cambian con frecuencia. Cuando una API cambia, el script puede romper hasta que OWOX lo actualice en GitHub.
- No hay soporte. Si no sabés programar,debuguear un error de schema puede llevar tiempo.
- Los schedules dependen de Apps Script, que tiene un límite de 90 minutos de ejecución por trigger.
Opción 2: Coupler.io o Hevo (pagada, minutos de setup)
Coupler.io y Hevo son plataformas ETL que tienen conectores oficiales para LinkedIn Ads y TikTok Ads. El setup toma entre 10 y 20 minutos. El tradeoff es que tus datos pasan por la infraestructura del vendor.
Pasos en Coupler.io:
-
Creá una cuenta en coupler.io y seleccioná "BigQuery" como destino.
-
Agregá un nuevo source: elegí "LinkedIn Ads". Conectá tu cuenta mediante OAuth desde tu Campaign Manager.
-
Seleccioná los campos que querés importar. Coupler.io muestra el schema completo de LinkedIn Ads y te deja elegir qué tablas importar (Campaigns, Ad Groups, Ads, Creative).
-
Elegí el schedule: hourly, daily o manual.
-
En destination, indicá tu project ID de GCP y el dataset de BigQuery. Coupler.io crea la tabla automáticamente.
-
Ejecutá el primer sync para verificar que los datos aterrizan bien.
TikTok Ads en Coupler.io sigue el mismo patrón: OAuth connection, selección de campos, schedule, destino BigQuery.
Pasos en Hevo son prácticamente idénticos. La diferencia está en el pricing: Hevo cobra por volumen de filas sincronizadas, Coupler.io cobra por connector activo.
Qué considerar antes de elegir un vendor ETL:
- Revisa el DPA (Data Processing Agreement) del vendor. Tus datos de campaña pasan por sus servidores.
- Verificá qué pasa con los datos cuando cancelás: la mayoría permite exportar o mantener los datos históricos.
- Los campos que cada plataforma expone varían. LinkedIn Marketing API tiene más granularidad que lo que Coupler.io o Hevo exponen en su schema por defecto.
Qué campos importar de cada plataforma
No necesitás importar todo. Los campos que generan valor real para análisis de performance son:
LinkedIn Ads : schema recomendado:
| Campo | Tipo | Para qué sirve |
|---|---|---|
| campaign_id | string | Join con otras tablas |
| campaign_name | string | Reporting legible |
| impressions | integer | Cobertura |
| clicks | integer | Engagement |
| spend | float | Costo real |
| ctr | float | CTR del ad |
| cpc | float | Costo por click |
| conversions | integer | Conversiones reportadas por LinkedIn |
| conversion_rate | float | Ratio de conversión |
| ad_creative_id | string | Para análisis de creativo |
| ad_preview_url | string | Ver el ad sin entrar a LinkedIn |
TikTok Ads : schema recomendado:
| Campo | Tipo | Para qué sirve |
|---|---|---|
| campaign_id | string | Join con otras tablas |
| campaign_name | string | Reporting legible |
| impressions | integer | Cobertura |
| video_views | integer | Vues de video (TikTok es primero un medio video) |
| clicks | integer | CTR real |
| spend | float | Costo real |
| ctr | float | CTR |
| cpc | float | Costo por click |
| conversion_events | integer | Eventos de conversión configurados |
| reach | integer | Alcance único |
Unificación en BigQuery: lo que hace valioso este ejercicio es poder joinear estas tablas con tus datos de revenue. Si tu empresa tiene una tabla de revenue por customer_id o por fecha, podés calcular ROAS real (no el que LinkedIn o TikTok reportan, sino el que resulta de cruzar installs o leads con revenue real).
Errores comunes
1. No usar incremental loads. La primera tendencia es extraer todo cada vez. Eso funciona cuando tenés 3 meses de datos. Cuando tenés 2 años, el volumen crece y los costos de BigQuery también. Configurá el sync para que solo traiga registros nuevos o actualizados (los conectores modernos lo soportan, OWOX requiere lógica adicional).
2. Ignorar timezone. LinkedIn y TikTok reportan en la timezone de la cuenta, no en UTC. Si tu equipo está en Buenos Aires y no hacés la conversión, los datos de madrugada aparecen como el día anterior. BigQuery storea en UTC; la conversión se hace en la query, no en la tabla source.
3. Confundir el campo de conversions. LinkedIn reportea "conversions" según su propia definición de conversion (puede ser un page view, un lead, un download). TikTok tiene "conversion events" que vos definís en el TikTok Pixel. Antes de hacer análisis de ROAS, verificá qué evento counts como conversión en cada plataforma.
4. No auditar los campos deprecated. Las APIs de LinkedIn y TikTok deprecaron campos en los últimos 12 meses. Si tu connector deja de traer datos de una columna, el primer lugar donde buscar es si esa columna sigue vigente en la API.
5. Importar sin schema documentation. Nombres como "campaign_name" o "spend" suenan iguales en ambas plataformas pero no lo son en estructura. LinkedIn usa enteros para IDs; TikTok usa strings. Documentá el schema en un archivo README dentro del dataset para que cualquier persona del equipo pueda hacer queries sin adivinar.
FAQ
LinkedIn y TikTok tienen API estable o cambian seguido?
LinkedIn tiene una API de Marketing bastante estable con versioning. Los cambios mayores se anuncian con meses de anticipación. TikTok Ads API ha tenido cambios más frecuentes, especialmente en la definición de eventos de conversión. Si usás OWOX open-source, revisá el repositorio de GitHub antes de cada sync mayor.
Puedo usar Google Tag Manager o segment en lugar de BigQuery?
GTM y Segment son útiles para tracking del lado del usuario (cómo se comportan los usuarios en tu sitio). BigQuery es para analytics del lado de la plataforma (cómo rinden tus campañas). Son complementarios, no sustitutos. Lo que hacés en BigQuery es análisis de lo que ya pasó en las plataformas de ads; GTM es lo que registra lo que hacen los usuarios en tu sitio.
Cuánto cuesta BigQuery para este uso?
BigQuery cobra por el procesamiento de queries y por almacenamiento. Para un reporting de ads típico (tablas de unos pocos millones de filas), el costo de almacenamiento es mínimo (USD 0.02 por GB por mes). Una query que agrega una tabla de 5 millones de filas cuesta menos de USD 0.001 si está optimizada. El costo real de BigQuery aparece cuando hacés queries escaneando la tabla completa en cada ejecución sin usar partition or clustering.
Necesito un data engineer para mantener esto?
No para el setup inicial. Para el mantenimiento ongoing, dependés del volumen: si los conectores se rompen cada vez que LinkedIn actualiza su API y no hay nadie que pueda leer un error de Apps Script o API response, eventualmente queda desactualizado. Un data analyst con conocimientos básicos de SQL y APIs puede mantenerlo.
Siguiente paso: unificar para tomar decisiones
Tener los datos en BigQuery es el primer paso. El segundo es cruzar esas tablas con tu fuente de revenue. Si todavía no tenés una tabla de revenue o de leads por fecha, ese es el siguiente nodo de la cadena. Dejá los reportes por plataforma y empezá a preguntar: de cada dollar que gasté en LinkedIn la última semana, cuánto volvió como revenue real.
Si manejas datos de campañas en LinkedIn o TikTok y querés centralizarlos en BigQuery para cruzar con revenue, podemos mostrarte un diagnóstico concreto de tu setup actual.
Hablar con UNO Collective