

| VENDEDOR | LLAMADAS | SHOW-UP | CIERRE | CERRADAS | COMISIÓN |
|---|---|---|---|---|---|
| {{ row.initials }}{{ row.name }} | {{ row.calls }} | {{ row.showRate }} | {{ row.closeRate }} | {{ row.closed }} | {{ row.commission }} |
| Cliente | Vendedor | Hora | Estado | Monto | ||
|---|---|---|---|---|---|---|
| {{ r.dayLabel }}{{ r.dayCount }} | ||||||
|
|
{{ r.sellerInitials }}{{ r.sellerName }} | {{ r.timeOnly }} Hora VE · {{ r.timeSub }} |
{{ r.statusLabel }} | {{ r.amountDisplay }} |
⋯
Ficha del cliente
Editar registro Eliminar |
|
| Vendedor | Cerradas | Tier | Total |
|---|---|---|---|
| {{ c.name }} | {{ c.closed }} | {{ c.rateLabel }} | {{ c.total }} |
Pago directo · vía Whop


supabase-payment-recovery.sql. Crea la tabla payment_failures.https://TU-PROYECTO.supabase.co/rest/v1/payment_failures con los mismos headers que ya usas en ManyChat: apikey, Authorization Bearer, Content-Type y Prefer return=minimal.{
"event": "failed",
"client_name": "NOMBRE_DEL_CLIENTE",
"client_email": "EMAIL",
"client_phone": "TELEFONO",
"membership_id": "MEMBERSHIP_ID",
"amount": 29.99,
"reason": "Tarjeta rechazada",
"next_attempt": "FECHA_PROXIMO_INTENTO"
}
"event": "recovered" y el mismo membership_id: el Hub marca la cuenta como recuperada y suma la mensualidad en Finanzas automáticamente. Para cancelaciones usa "event": "canceled".clientEmail, Subject: Tu pago no se procesó — actualiza tu método de pago, Body (HTML): pega la plantilla del archivo email-pago-fallido.html y reemplaza los campos marcados por los campos del Catch Hook.clientName, clientEmail, amountLabel, motivo, fechaFallo, billingUrl, sentBy.