Dashboard del CRM
https://api.afer.pro/consultarCRM
El dashboard comercial completo de un funnel: KPIs, rates de actividad, embudo por etapas, motivos de pérdida, puntos de dolor, playbooks, canales, comerciales y evolución.
Todas las métricas del panel de CRM de Afer, con sus mismos criterios, para un funnel (el indicado o el primero de la cuenta):
— KPIs: abiertas/ganadas/perdidas con valor, win rate (sobre cerradas), ticket medio, ciclo medio de cierre en días, vida media de las abiertas, forecast ponderado por probabilidad y atascadas (abiertas sin actividad en 7 días).
— Actividad (desde las acciones registradas): answer rate (llamadas contestadas / intentos), meeting rate (reuniones / conversaciones), show rate y no-show rate (sobre reuniones agendadas).
— Embudo: por etapa, cuántas oportunidades la alcanzaron, cuántas están en ella, la conversión desde la etapa anterior y el motivo de pérdida dominante; etapa final "Ganadas" y etapas dormidas aparte.
— Puntos de dolor: % de oportunidades con dolor documentado, win rate con/sin dolor (y la diferencia en puntos) y ranking por punto.
— Playbooks: % de oportunidades con playbook aplicado, checklists rellenados, % de items contestados y afirmativos, win rate con/sin playbook y uso por playbook.
— Desgloses: por canal de captación, por comercial (con sus acciones por tipo y acciones-por-ganada) y evolución mensual.
El rango de fechas filtra por fecha de creación de la oportunidad; la actividad, por fecha de la acción. Sin rango, se evalúa todo el histórico del funnel.
Envía tus claves API en las cabeceras X-API-KEY y X-API-SECRET. La cuenta sobre la que se opera se resuelve automáticamente a partir de la clave. Cómo obtener tus claves →
Este endpoint requiere autenticación con API key: sin credenciales responde 401.
Parámetros del cuerpo
El cuerpo de la petición es un objeto JSON con Content-Type: application/json.
funnel_fkintopcional | Funnel a analizar (de listarFunnels). Por defecto, el primero de la cuenta. |
fecha_iniciodateopcional | Inicio del período (YYYY-MM-DD), por fecha de creación de la oportunidad. |
fecha_findateopcional | Fin del período (YYYY-MM-DD). |
Ejemplo de petición
curl -X POST 'https://api.afer.pro/consultarCRM' \
-H 'Content-Type: application/json' \
-H 'X-API-KEY: afer_tk_TU_TOKEN' \
-H 'X-API-SECRET: afer_sk_TU_SECRET' \
-d '{
"funnel_fk": 39,
"fecha_inicio": "2026-01-01",
"fecha_fin": "2026-08-18"
}'
<?php
$data = [
'funnel_fk' => 39,
'fecha_inicio' => '2026-01-01',
'fecha_fin' => '2026-08-18',
];
$ch = curl_init('https://api.afer.pro/consultarCRM');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'X-API-KEY: afer_tk_TU_TOKEN',
'X-API-SECRET: afer_sk_TU_SECRET',
]);
$respuesta = json_decode(curl_exec($ch), true);
curl_close($ch);
const respuesta = await fetch('https://api.afer.pro/consultarCRM', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-KEY': 'afer_tk_TU_TOKEN',
'X-API-SECRET': 'afer_sk_TU_SECRET'
},
body: JSON.stringify({
"funnel_fk": 39,
"fecha_inicio": "2026-01-01",
"fecha_fin": "2026-08-18"
})
});
const resultado = await respuesta.json();
Respuesta
Ejemplo abreviado — cada bloque llega completo. puntos_dolor y playbooks llegan null si la cuenta todavía no usa esos módulos. Los porcentajes llegan null cuando no hay datos para calcularlos (evita leer un 0% como resultado real).
{
"errorCode": 200,
"errorMsg": "",
"data": {
"funnel": {
"funnel_fk": 39,
"funnel": "Ventas web"
},
"fecha_inicio": "2026-01-01",
"fecha_fin": "2026-08-18",
"kpis": {
"total": 120,
"abiertas": 34,
"valor_abierto": 186000,
"ganadas": 52,
"valor_ganado": 214000,
"perdidas": 34,
"valor_perdido": 92000,
"win_rate_pct": 60,
"ticket_medio": 4115.38,
"ciclo_medio_dias": 23,
"vida_media_abiertas_dias": 18,
"forecast_ponderado": 74400,
"atascadas_7_dias": 6
},
"actividad": {
"llamadas_intentos": 480,
"llamadas_contestadas": 312,
"answer_rate_pct": 65,
"reuniones": 96,
"meeting_rate_pct": 31,
"noshows": 14,
"show_rate_pct": 87,
"noshow_rate_pct": 13
},
"embudo": [
{
"etapa_fk": 219,
"etapa": "Lead",
"alcanzaron": 120,
"en_etapa": 18,
"valor": 492000,
"conversion_prev_pct": null,
"top_motivo_perdida": "No contesta"
},
{
"etapa_fk": 220,
"etapa": "Propuesta",
"alcanzaron": 74,
"en_etapa": 12,
"valor": 380000,
"conversion_prev_pct": 62,
"top_motivo_perdida": "Precio"
},
{
"etapa_fk": null,
"etapa": "Ganadas",
"alcanzaron": 52,
"en_etapa": 52,
"valor": 214000,
"conversion_prev_pct": 84,
"top_motivo_perdida": null
}
],
"etapas_dormidas": [
{
"etapa": "Nurturing",
"cuenta": 9,
"valor": 31000
}
],
"motivos_perdida": [
{
"motivo": "Precio",
"cuenta": 14,
"valor": 46000
}
],
"puntos_dolor": {
"oportunidades_total": 120,
"con_dolor_documentado": 78,
"porc_documentado": 65,
"win_rate_con_dolor_pct": 71,
"win_rate_sin_dolor_pct": 42,
"delta_puntos": 29,
"por_punto": [
{
"punto_dolor": "Pierde horas en partes de trabajo",
"oportunidades": 31,
"ganadas": 19,
"perdidas": 6,
"valor_ganado": 82000,
"win_rate_pct": 76
}
]
},
"playbooks": {
"oportunidades_total": 120,
"con_playbook": 44,
"porc_aplicado": 37,
"instancias_rellenadas": 61,
"items_contestados_pct": 82,
"items_afirmativos_pct": 68,
"win_rate_con_playbook_pct": 69,
"win_rate_sin_playbook_pct": 51,
"delta_puntos": 18,
"por_playbook": [
{
"playbook": "Discovery call",
"usos": 38,
"oportunidades": 30
}
]
},
"por_canal": [
{
"canal": "Web",
"total": 64,
"abiertas": 18,
"ganadas": 30,
"perdidas": 16,
"valor_pipeline": 96000,
"valor_ganado": 122000,
"win_rate_pct": 65
}
],
"por_comercial": [
{
"usuario": "Ana Gil",
"total": 48,
"abiertas": 12,
"ganadas": 24,
"perdidas": 12,
"valor_ganado": 101000,
"win_rate_pct": 67,
"acciones_total": 214,
"acciones_por_ganada": 8.9,
"acciones": {
"Llamada contestada": 96,
"Reunión virtual": 41
}
}
],
"evolucion": [
{
"mes": "2026-07",
"creadas": 18,
"ganadas": 7,
"perdidas": 4,
"valor_ganado": 29000,
"valor_abierto": 24000
}
]
}
}
Errores
| Caso | Resultado |
|---|---|
| Sin credenciales de API key | errorCode 401. |
La cuenta no tiene funnels, o funnel_fk no existe |
errorCode 404. |
- Criterios clave (los mismos que el panel interno): el win rate se calcula sobre cerradas, no sobre el total; el embudo asume que una oportunidad pasó por todas las etapas hasta donde llegó; atascadas se evalúa sobre las abiertas actuales del funnel, sin filtro de fechas.
- Para el detalle multi-funnel ligero usa consultarOportunidades; este endpoint es el análisis profundo de un funnel.