API para integradores Cómo funciona
API de leads: requisitos, duplicados y horario de cada campaña
Por qué una campaña puede pedir más datos que otra, cómo se cuentan los duplicados y qué hacer cuando una campaña está fuera de horario.
En esta página
En resumen
- Lo que pide cada campaña está en el apartado 5 de tu guía y en la ficha de cada oferta del portal. Vuelve a abrirlos cuando algo cambie.
MANDATORYtiene que venir;IF PROVIDEDpuede faltar, pero si llega se comprueba.- Un lead que no cumple se rechaza al llegar, sin guardarse: corrígelo y reenvíalo.
- Los duplicados se miran en cada campaña por separado, por correo o teléfono.
- Fuera de horario recibes
outside_schedulecon la hora de apertura (opens_at): reenvía entonces.
Para qué sirve
Cada campaña tiene su comprador, y cada comprador pide cosas distintas: una exige el teléfono, otra una pregunta propia, otra sólo recibe en horario de oficina. Aquí ves dónde leer lo que pide cada una de tus campañas y qué le pasa a tu petición si no lo cumple. Cómo se monta la petición: API de leads: enviar un lead (referencia).
Dónde se leen
- En tu guía de integración, apartado
5. Requirements of your campaigns: una sección por cada campaña activa que tienes asignada, con el títuloCampaign <número> · <nombre> (<país>). Está en inglés. - En la ficha de cada oferta del portal, tarjeta Requisitos del lead, en castellano: La ficha de una oferta: integración, requisitos, horario y material.
Los dos se calculan al abrirlos, con lo que la red tenga configurado en ese momento. Si guardaste la guía en PDF o la imprimiste, esa copia no cambia: vuelve a abrirla cuando la red te diga que algo ha cambiado. La plataforma no te avisa sola.
Que una campaña salga en el apartado 5 no garantiza que tenga plaza: los topes no se ven ahí.
Qué pueden pedir
Si la campaña no pide nada más, la guía dice No extra requirements: only the mandatory parameters of section 2.1. The optional parameters of section 2.2 are accepted, but not required.
Si pide algo, sale una tabla con una fila por campo o pregunta:
MANDATORY: tiene que venir y cumplir lo que diceDetails. En la oferta, Obligatorio.IF PROVIDED: puedes no mandarlo, pero si lo mandas tiene que cumplirlo. En la oferta, Si lo mandas. Un valor vacío, sólo espacios o una lista vacía cuenta como no mandado; unfalsesí es un valor.
Lo básico (correo, país, IP, token y fuente) se exige siempre, lo pida la campaña o no.
Los requisitos se comprueban al llegar el lead, antes de guardarlo, sobre lo que mandaste tal cual. Si no los cumple, recibes missing_field o invalid_field con el field que falla, y el lead no se guarda, no se entrega y no gasta tope: corrígelo y reenvíalo. Llega el primer fallo: primero los campos (nombre, apellidos, teléfono, género, fecha, dirección, código postal, ciudad, provincia, SubID y navegador) y después las preguntas, en su orden. Los mensajes: API de leads: mensajes y códigos de error.
Los formatos
| Formato | Qué acepta | Vale | No vale |
|---|---|---|---|
| Spanish mobile | 9 cifras que empiezan por 6 o 7 | +34600000001, 600 00 00 01 | 12345 |
| Spanish landline | 9 cifras que empiezan por 81 a 88 o 91 a 98 | +34910000001 | 900000001 |
| Spanish mobile or landline | Cualquiera de los dos | ||
| International with + | + y de 8 a 15 cifras; la primera, distinta de 0 | +34600000001 | 0034600000001 |
| Spanish postal code | 5 cifras, de 01000 a 52999 | 28001 | 99999 |
| Digits only | Sólo cifras | 08001 | 08-001 |
| Letters only | Empieza por letra; letras, espacios, apóstrofos, puntos y guiones | Ana María | Ana1 |
| Number | Entero o decimal, con punto o coma, con signo | 3500, 3500,5 | 3.500,00 |
| Format YYYY-MM-DD | Una fecha que exista | 1990-05-15 | 1990-02-30 |
- En los teléfonos no cuentan espacios, puntos, guiones ni paréntesis.
- Los límites de caracteres cuentan todo menos los espacios de los extremos: los de dentro, el
+y los guiones, sí. - La edad mínima o máxima se calcula con la fecha de hoy.
- Manda los teléfonos con
+y prefijo. Un34600000001sin+pasa el formato y después se completa como+3434600000001.
Preguntas propias de la campaña
Van dentro de custom_data, con la clave exacta, mayúsculas incluidas, que da la guía en la columna del parámetro (custom_data.tipo_vivienda se manda como "custom_data": {"tipo_vivienda": "Piso"}).
- Si la pregunta tiene respuestas permitidas,
Detailslas lista (One of: Piso, Casa.). Se comparan sin mayúsculas, sin tildes y sin espacios de más:pisovale porPiso. La ñ no se iguala a la n. - La respuesta tiene que ser un valor suelto: una lista o un objeto se rechazan. Un
trueofalsese compara como el textotrueofalse.
Duplicados
Bajo cada campaña, la guía dice cómo cuenta los duplicados (Duplicates: …). La regla:
- Se compara con los leads ya guardados en esa misma campaña: el mismo correo o, si lo mandas, el mismo teléfono. Entre campañas distintas no se mira.
- Por defecto cuenta para siempre y cuenta todos los guardados, también los que el comprador rechazó o no llegaron a entregarse. La campaña puede limitarlo a unos días (
in the last 30 days) o a los aceptados (counting only the leads accepted by the buyer). - Un lead rechazado al llegar (por requisitos, horario o formato) no se guarda: al reenviarlo corregido no cuenta como duplicado.
Horario de recepción
Si la campaña tiene horario, la guía lo dice bajo ella: Receiving hours: Monday to Friday, 09:00–20:00 (Europe/Madrid time). Outside these hours the lead is rejected with outside_schedule.
- La hora final no entra: con 09:00–20:00, un lead de las 20:00:00 ya está fuera.
- La hora es la de la zona de la campaña, con sus cambios de hora.
- Pueden salir días concretos sin recepción.
Fuera de horario recibes outside_schedule con opens_at, la próxima apertura. El lead no se guarda: reenvíalo a partir de esa hora. Detalle en API de leads: mensajes y códigos de error.
Si mandas id_campaign y si no
- Con
id_campaign, sólo se prueba esa campaña, si la tienes asignada y activa con la misma fuente. El país del lead no se compara con el de la campaña. - Sin
id_campaign, se prueban las campañas de ese país y esa fuente que tienes asignadas, en orden al azar, y el lead va a la primera que esté abierta, cumpla sus requisitos y tenga plaza en su tope diario. El mismo lead puede ir a campañas distintas en dos envíos.
Sin id_campaign, si no lo acepta ninguna, recibes el primer rechazo por requisitos, si lo hubo; si no, outside_schedule si todas estaban cerradas, y si no, no_campaign_available. Por eso conviene mandar siempre id_campaign.