Enviar un lead desde tu propio código
Publica un lead que recogiste en otro sitio en la misma lista, con las mismas rutas de CRM y los mismos webhooks.
Qué hace
POST /api/v1/leads pone un lead en la lista del espacio de trabajo desde donde sea: un formulario de tu propio sitio, un checkout, una llamada que alguien anotó después. Cae en el mismo lugar que un lead del widget, así que se disparan las mismas rutas de CRM, los mismos webhooks salientes, y aparece en la misma lista y en la misma exportación.
Qué necesitas antes de empezar
- Una clave de API con el permiso `leads:write`. No puede leer la lista de leads; eso es
leads:read. - Un espacio de trabajo en un plan que incluya la API.
Autenticación
Authorization: Bearer wai_live_…, por HTTPS. La clave se muestra una sola vez al crearla.
La petición
curl -X POST https://app.welcomeai.dev/api/v1/leads \
-H "Authorization: Bearer wai_live_…" \
-H "Content-Type: application/json" \
-d '{
"email": "ada@example.com",
"name": "Ada Lovelace",
"phone": "+34 600 111 222",
"page_url": "https://acme.com/precios",
"fields": { "company": "Analytical Engines", "budget": "5000" },
"attribution": { "utm_source": "newsletter", "utm_campaign": "primavera", "gclid": "Cj0KC…" }
}'La respuesta
{ "ok": true, "lead_id": "ld_9Kq2…", "recurring": false, "submissions": 1 }`201` para alguien nuevo, `200` para alguien que volvió. Una dirección de correo es un lead por espacio de trabajo: publicar a la misma persona otra vez actualiza el lead que ya tienes en vez de crear un segundo, submissions cuenta cuántas veces se puso en contacto, y la lista lo marca como Recurrente.
La combinación rellena huecos y nunca borra nada. Si la semana pasada dejó un teléfono y esta vez solo el correo, el teléfono se queda. Una respuesta nueva a la misma pregunta gana; una respuesta vieja a una pregunta que no volviste a enviar sobrevive. El estado y las notas del lead no se tocan nunca: alguien pudo haberlo movido a Contactado y haber escrito ahí, y que la persona vuelva no es motivo para deshacerlo.
Errores habituales
`400 A lead needs an email or a phone number.` Manda uno de los dos.
`400 page_url: must be an http or https URL.` El campo se renderiza como enlace en la lista de leads, así que solo se aceptan esos dos esquemas.
`403 This key does not have the "leads:write" scope.` Los permisos se eligen al crear la clave y no se pueden agregar después. Crea una clave nueva.
`429` El presupuesto diario de API del plan. Es una ventana móvil de 24 horas por clave.
Para qué se usa
Un formulario de contacto que ya existe y que nadie quiere rehacer. Una consulta telefónica anotada a mano para que llegue al CRM con el resto. Un checkout que además debería crear un lead. Traer una lista antigua una vez, para que las rutas de CRM pasen por ella.
Cómo comprobar que funciona
- Publica uno y lee el
lead_idque devuelve. - Leads lo muestra, con API como origen.
- Si el espacio tiene una ruta de CRM, el registro de envíos tiene una fila en pocos segundos.
- Publica la misma dirección otra vez: la respuesta es
200con"recurring": true, y la lista sigue teniendo un solo lead con el distintivo Recurrente.