4dim / Notas

Notas

Lo que averiguamos construyendo. Con el método y las cifras, para que nadie tenga que volver a comprobarlo.

  1. Cuando no hay conversación, bastan dos fichas

    Para tapar los nombres antes de mandarlos a un modelo hay dos técnicas, y la barata es la más segura. Cuándo hace falta una tabla de equivalencias, cuándo bastan dos constantes, y por qué el guion del propio dueño también pasa por el filtro.

  2. El agente redacta y no manda

    Ocho segundos tiene el webhook de Meta; hasta sesenta tarda un modelo. Esa cifra decide dónde corre un agente de WhatsApp. Dónde lo paramos, cuánto le dejamos gastar al día, y las tres veces en que redactar sería peor que no hacer nada.

  3. Una tarea cuelga siempre de algo

    La lista de tareas de tu CRM no se usa porque compite con la app de tareas que tu equipo ya tiene, y pierde. Qué forma tiene que tener para ganar: pegada a la conversación, una sola viva, y una agenda que herede los permisos de las bandejas.

  4. El recuento de antes de mandar y la gente a la que llega

    «Esto le va a llegar a 340 personas.» Si ese número y el envío salen de dos consultas distintas, un día dejan de coincidir, y no se nota hasta después de haber mandado. Además: por qué «frío» tiene que incluir a quien nunca escribió.

  5. El embudo lo nombra cada negocio

    Una clínica no cotiza: agenda. Obligarla a llamar «cotizado» a una demo no es un problema estético: vacía el tablero. Por qué cinco etapas y no doce, cuál no se puede borrar, y qué se enseña cuando alguien borra una etapa con fichas dentro.

  6. Filtrar por última actividad, y no por cuándo se abrió

    Pides «lo de esta semana» y la lista te esconde el hilo de hace un año en el que el cliente escribió ayer. Cinco decisiones de un filtro de fechas: qué fecha, qué tramos, un solo parámetro, el 30 de febrero y a qué hora se acaba «hoy».

  7. Doce cifras pegadas no son un teléfono

    Meta manda el número de quien te escribe como dígitos pegados y sin signo de más. Convertirlo en algo legible tiene cuatro trampas: el +1 que se come al +1809, la tabla que no se debe copiar entera, agrupar desde la derecha y saber cuándo eso no es un teléfono.

  8. El equipo dice con quién te turnas, no qué puedes hacer

    Dejar que el equipo también conceda permisos se escribe en una tarde y se paga durante años: dos sitios donde mirar, y dos que pueden contradecirse. Qué contesta el rol, qué contesta el equipo, y el filtro que no es una cortesía.

  9. Una bandeja nueva no la ve nadie, y eso está bien

    Tres vendedores entran a la consola y les dice que no ha entrado ninguna conversación, mientras entran cien mensajes al día. No hubo ningún error: esa es justo la razón por la que duró una semana. El fallo, la regla que lo provoca y por qué la regla se queda.

  10. A quién le toca el chat que acaba de entrar

    Con tres personas atendiendo, dos contestan el mismo chat y el que entró a las once de la noche no lo ve nadie. Dónde se engancha el reparto —y las dos formas de engancharlo mal—, cómo se lleva la vuelta por turno y qué serializa dos mensajes simultáneos.

  11. Recuperar la contraseña sin delatar quién trabaja dónde

    El formulario de «olvidé mi contraseña» es una lista de clientes si responde distinto según exista la cuenta, o si tarda distinto. La misma respuesta y el mismo tiempo, enlaces que se matan entre sí, dos caminos con un mecanismo, y el correo feo a propósito.

  12. Comercio electrónico en Colombia 2025: 145,4 billones y un ticket que baja

    La CCCE cerró 2025 con 145,4 billones de pesos en ventas en línea (+11,1 %), 684,6 millones de compras (+19,9 %) y un ticket de 212.373 pesos (−7,3 %). Compran más veces y gastan menos cada vez: lo que eso cambia para una tienda pequeña, y lo que la cifra no dice.

  13. El CPM de Meta en Colombia no existe: tres benchmarks que no coinciden

    Meta no publica tarifas por país; el precio sale de una subasta. Tres proveedores publican tres cifras distintas para Colombia, sin decir qué cuentas midieron. Por qué no van a coincidir nunca, y cuál es la única cifra que sí describe tu negocio.

  14. «WhatsApp convierte 3,6 veces más que un formulario»: ¿quién lo midió?

    La frase aparece en toda presentación de software de mensajería, con cuatro números distintos y ninguna fuente independiente. Vendemos software de mensajería y fuimos a buscar quién la midió. Lo que encontramos, y cómo medirlo en tu negocio.

  15. ¿Dos de cada tres pymes usan IA, o el 2,4 %?

    Microsoft dice que el 66 % de las mipymes colombianas usan inteligencia artificial; otra cifra que circula dice 2,4 %. Entre las dos hay un factor de veintisiete, y las dos pueden ser ciertas. Qué mide cada una, quién la paga, y cuál es la fuente que falta leer.

  16. Los límites de WhatsApp ya no son por número

    Meta fija el cupo diario de contactos nuevos por portafolio de negocio, y todos los números lo comparten. Los cinco niveles, las tres rutas de 250 a 2.000, lo que baja el límite, y por qué una campaña fallida gasta el cupo del día igual que una que llega.

  17. Tres canales de Meta, dos formatos de webhook

    WhatsApp llega en entry[].changes[]; Messenger e Instagram, en entry[].messaging[]. El eco que abre una ventana falsa, los acuses que se aplican por id y nunca por hora, y los avisos que llegan desordenados. Lo que hay que saber antes de decir que el webhook «funciona».

  18. Adjuntos: WhatsApp canjea, Messenger trae la URL

    La misma foto llega por dos protocolos distintos. La URL firmada que vive minutos, el 403 que no era de permisos sino de una cabecera, el pie de foto que tumba un audio, el MIME que miente en las notas de voz, y dónde se guardan los archivos de los clientes.

  19. Dos números de WhatsApp: el catálogo es de la cuenta, no del negocio

    El segundo número rompe cinco cosas: la restricción de la base, el hilo que se elegía por tipo, el catálogo de plantillas mezclado (132001), el filtro por canal y la visibilidad del equipo. Cómo quedó cada una.

  20. Token de página o de usuario: pasa al conectar, falla al enviar

    Un token de usuario supera la comprobación inicial y falla al mandar el primer mensaje, días después. Tres identificadores que parecen iguales, la conexión fantasma, y cómo se guarda un token que escribe en nombre del negocio: GCM, clave fuera de la base, formato versionado.

  21. redirect() en una Server Action recarga la página entera

    Marcar un favorito hacía parpadear toda la bandeja: la acción terminaba en redirect() hacia la misma URL, y eso desmonta y vuelve a montar el árbol de React. La alternativa, la trampa de useOptimistic con un refresco lento, y los 35 enlaces que recargaban el documento.

  22. El service worker que no cachea la consola

    La segunda visita pasó de 9 segundos a 47 milisegundos. Pero la regla más importante es qué no se cachea nunca: la lista negra que pudo servir la página de un negocio a otro, la lista blanca que la sustituyó, la identidad del build y el interruptor de emergencia.

  23. Español neutro: 147 sustituciones y un \b que no conoce las tildes

    «Elegí una plantilla» es una orden en Buenos Aires y un hecho consumado en Medellín. El cambio de voseo a tuteo en 30 archivos, y el reemplazo que convirtió «activos» en «actitu» porque \b en JavaScript no cuenta las vocales con tilde como letras.

  24. Lo que Google, Bing y OpenAI dicen de cómo citan

    Tres documentos oficiales, leídos enteros: Google dice que no hay optimizaciones especiales, Bing solo cita lo que indexa y desde febrero de 2026 lo mide, OpenAI advierte que sus citas pueden estar mal. Y llms.txt: qué es y qué nadie ha prometido.

  25. Un contacto llamado =HYPERLINK: inyección de fórmulas en el CSV

    El nombre de un contacto lo escribe un desconocido desde su WhatsApp. Si empieza por «=», Excel lo ejecuta como fórmula al abrir la exportación. Qué es la inyección CSV (CWE-1236), cómo se escapa, y por qué fue la primera prueba automática del repositorio.

  26. HTTP/2 en nginx: el TTFB de 1,4 a 0,34 segundos

    El servidor renderizaba la página en 12 a 25 milisegundos; el resto, hasta 1,4 segundos, era el viaje. Una palabra en nginx, dos fuentes adelantadas con el atributo que casi nadie pone, y dos trampas de configuración que costaron una tarde.

  27. El telón de carga: de 3.068 a 132 milisegundos

    El telón aparecía después de lo que debía tapar, porque esperaba a la hoja de estilos que venía a ocultar. El orden del head, esperar una señal y no un reloj, el rectángulo que cubría el sitio sin JavaScript, y la segunda visita de 9 segundos a 47 milisegundos.

  28. Googlebot habla inglés

    Un sitio bilingüe que elegía idioma con navigator.language le mostró a Google, durante meses, el título en castellano y el cuerpo en inglés. Por qué pasa, por qué nadie lo ve, y por qué el idioma por defecto es una decisión de negocio y no del navegador.

  29. Dos líneas que faltaban: metadataBase y noindex

    Sin metadataBase, Next emite canónicas relativas y el hreflang de todo el sitio queda invalidado sin aviso. Y bloquear en robots.txt no desindexa nada: impide que Google lea el noindex. Dos fallos silenciosos, dos líneas, y cómo comprobarlos.

  30. JSON-LD roto no se ve: siete pruebas y tres campos que no se inventan

    Un bloque de datos estructurados roto no cambia nada visible ni falla el build: solo hace que un motor deje de entender el sitio, en silencio. Las siete pruebas que lo vigilan, los campos que dejamos vacíos a propósito, y lo que el schema hace y no hace.

  31. La migración que solo cubrió el presente

    Una migración sembró la visibilidad de bandejas para todos los negocios que existían ese día, y ninguno de los que llegaron después. Tres vendedores ciegos con cien mensajes al día, un JOIN que casi deja a todos sin bandeja, y la corrección en cuatro puntos.

  32. Dos copias de la misma verdad divergen: 11 contra 4

    Una cabecera escrita dos veces tenía once temas en un lado y cuatro en el otro. La lista blanca de nginx que daba 404 a cada ruta nueva, el service worker que pudo filtrar datos entre inquilinos, y el comentario que mentía. La regla que sale de todo eso.

  33. Una cola de trabajo con Postgres y nada más

    Sin Redis ni broker: SKIP LOCKED con la reserva en la misma sentencia, la condición de negocio dentro del UPDATE, un contador con bloqueo de fila y interruptores con valor explícito. Cuatro casos reales de un CRM de WhatsApp.

  34. Wikidata como fuente: el día que Gödel se llamaba Osiris

    La etiqueta en español de Kurt Gödel estaba vandalizada y un importador que prefiera el español la habría copiado. Cómo votan los idiomas, los cinco QIDs de memoria que resultaron ser Jane Austen, un faraón y un pueblo alemán, y cómo se trata a un servicio gratuito.

  35. Contactos y canales: una persona, tres identificadores

    Identificar una conversación por el teléfono se rompe el día que entra Instagram. Persona y canal en dos tablas, la unión manual porque Meta no da ningún identificador compartido, lo que trae cada canal del remitente, y qué borra cada acción.

  36. Desplegar sin caídas, medido: 16 de 150 contra 0 de 455

    Un reinicio directo dejó 1,6 segundos sin servicio y 16 peticiones de 150 fallidas. Con dos ranuras y un proxy que conmuta, 455 peticiones durante un despliegue y ninguna falló. Cómo funciona en un VPS con bash, y el chequeo de salud del que depende todo.

  37. Un temporizador en el servidor no sobrevive a un despliegue

    Cada despliegue reemplaza el proceso, y con él mueren todos los setTimeout que tenía en memoria. La noche en que una campaña de 300 contactos esperó hasta la mañana, y las dos alternativas: avanzar al leer, o un timer fuera del proceso con cerrojo en Postgres.

  38. Postgres como última línea de defensa

    Lo que la base no permite, no lo permite ningún camino, incluido el que todavía no existe. Un UNIQUE mal puesto que mezcló conversaciones, el dueño que no se borra, permisos por columna que blindan el pasado, y la restricción que destapó un dato inventado.

  39. Tiempo real sin WebSockets: LISTEN/NOTIFY, SSE y el nginx que se lo traga

    Del sondeo cada 8 segundos al aviso desde un trigger de Postgres empujado por Server-Sent Events. Por qué SSE y no WebSocket, por qué el canal no lleva contenido, y las cuatro directivas de nginx sin las que la ruta responde 200 y nunca entrega nada.

  40. La conversación cerrada que silenciaba al cliente

    Un disparador trataba «cerrada» como estado terminal. Con un solo hilo por persona, el cliente que volvía a escribir caía en ese hilo cerrado y dejaba de existir para el negocio. El fallo, la corrección que distingue quién reabre, y las preguntas que hay que hacerle a un CRM.

  41. Un contrato cerrado por WhatsApp vale: Ley 527 de 1999

    Una ley anterior a WhatsApp ya dice que la oferta y la aceptación pueden ir en un mensaje de datos. Lo que exige a cambio es poder demostrar quién lo dijo, que no se tocó y que se guardó bien. Los artículos, literales, y lo que un CRM guarda para responder.

  42. RNBD: quién tiene que registrar sus bases de datos ante la SIC

    Sociedades y entidades sin ánimo de lucro con activos totales por encima de 100.000 UVT, que en 2026 son 5.237 millones de pesos. Los establecimientos y sucursales no registran. Y el inventario de bases que conviene tener aunque no estés obligado.

  43. El consentimiento se sella en la base, con fecha y origen

    La Ley 1581, la Ley 2300 y Meta piden lo mismo con palabras distintas: poder decir quién dijo sí, cuándo y por dónde. Una casilla marcada no lo dice. Lo que guardamos, quién lo sella, y por qué el asistente de IA lo sabe antes de proponer una campaña.

  44. Exportar no es leer: el permiso aparte para la base de contactos

    Mirar una ficha alcanza a una persona y deja rastro; un CSV se lleva la base entera y se copia sin dejar rastro. Por qué exportar tiene su propio permiso, qué columnas lleva el archivo y cómo el asistente de IA podía ser una puerta de atrás.

  45. Reasignar no es borrar: partir un permiso demasiado ancho

    Tomar una conversación y pasársela a un compañero es el gesto de veinte veces al día en una tienda de tres vendedores. Estaba detrás del mismo permiso que borrar el historial de un cliente. Cómo se partió en tres sin que ningún rol ganara ni perdiera nada el día del despliegue.

  46. El modelo propone, la persona ejecuta

    Un cliente puede escribir en WhatsApp una instrucción dirigida al asistente de IA que lee la conversación. La solución no está en el prompt: está en que el modelo no pueda escribir nada, y en que lo que se ejecuta salga de una fila congelada en la base, no del modelo.

  47. El velo: fichas en vez de nombres, y Postgres resuelve

    Mandarle los nombres al modelo acierta y expone; mandarle datos borrosos protege y falla. Nosotros le mandamos referencias («C-7») y resolvemos la búsqueda en la base antes de que la pregunta salga. Incluido el punto donde este diseño se rompe si no se mira.

  48. El agente hereda los permisos; no recibe llaves nuevas

    Cada herramienta del asistente exige el mismo permiso que la pantalla equivalente del CRM. Lo que la persona no puede ver, el asistente no lo ofrece. Listar no es exportar, campañas ni se proponen, y la red única se dice con honestidad.

  49. «Gratis» en un proveedor de IA significa que entrena con tus datos

    Los modelos gratuitos están excluidos de la promesa de retención cero justamente porque el precio es ese. Los bloqueamos en el código, medimos el presupuesto en plata y no en preguntas, y cobramos lo desconocido como lo más caro. Con la tabla de precios por millón de tokens.

  50. Barrer datos personales en un chat colombiano: el punto de los miles

    Un barrido pensado en inglés borra «1.500.000» creyendo que es un teléfono. Las ocho reglas que usamos, en su orden, con el NIT, el algoritmo de Luhn, las siete cifras que son teléfono, y tres trampas de JavaScript con texto en español.

  51. Los códigos de error de Meta, traducidos

    Los 131047, 132001, 190 y compañía, con la única pregunta que importa en una bandeja: ¿es de este mensaje, de este contacto o de toda la conexión? Y la regla que casi nadie aplica: el subcódigo manda sobre el código.

  52. El webhook de WhatsApp responde 200 aunque todo falle

    Meta reintenta durante horas lo que no recibe un 200 y termina desactivando el webhook. De ahí salen seis reglas: firmar sobre los bytes, deduplicar en la base, no llamar a Meta desde dentro, y resolver la bandeja por número.

  53. Lo que Meta rechaza de una plantilla, y cuándo te enteras

    Al crearla solo mira la categoría; al revisarla, cuando decida; al enviarla, en el acto; y después de aprobada, por su cuenta. El nombre, los huecos, los 1.024 caracteres, el idioma que se cambia solo y el catálogo que es de la cuenta y no del negocio.

  54. 287 enviados, 0 entregados y ningún error

    Una campaña con plantilla aprobada que la pantalla dio por salida y que no llegó a nadie. Lo que pasó entre la cola y el despacho, por qué solo fallaba con audiencia fría, y las cuatro preguntas que hay que hacerle a un CRM antes de la primera campaña.

  55. Un envío rechazado no es gratis en Messenger e Instagram

    En WhatsApp, que Meta rechace un mensaje fuera de ventana no tiene consecuencias. En Messenger e Instagram cuenta como infracción aunque el mensaje no salga. Las cuatro etiquetas con sus plazos, y por qué preguntamos tres veces si algo puede salir.

  56. El 1 de octubre de 2026 WhatsApp empieza a cobrar por responder

    Los mensajes de servicio, gratis desde noviembre de 2024, y las plantillas de utilidad dentro de la ventana de 24 horas, gratis desde julio de 2025, pasan a cobrarse por mensaje. Quedan 1.000 de servicio gratis al mes por número. Lo que Meta anunció y qué significa en Colombia.

  57. La ventana de 72 horas que abre un anuncio de WhatsApp

    Si el negocio responde en 24 horas a quien llega desde un anuncio de clic a WhatsApp, Meta abre 72 horas sin cargo de entrega. Qué cubre, qué no, cuánto vale de verdad en Colombia y por qué vale más desde octubre de 2026.

  58. Ley 2300 de 2023: horarios y frecuencia para escribir por WhatsApp

    Se conoce como la ley de cobranza, pero su artículo 5 la extiende a la publicidad por mensajería. El texto, no el resumen: lunes a viernes de 7 a 7, sábados de 8 a 3, nada en domingos ni festivos, y lo que un CRM puede cumplir solo.

  59. La Circular 002 de 2024 de la SIC, leída para un agente de WhatsApp

    Ocho páginas de la Superintendencia sobre datos personales e inteligencia artificial: cuatro criterios, estudio de impacto, seguridad auditable. Las diez instrucciones resumidas, las tres que más pesan, y cómo las convertimos en decisiones de código.

  60. Cuánto cuesta de verdad un mensaje de WhatsApp en Colombia

    Colombia es el mercado más barato del tarifario de Meta: 2,9455 pesos por mensaje de utilidad. Tres cosas que no salen ahí hacen que la factura no sea esa.

  61. Verificar el negocio en Meta: plazo, papeles y límites

    Plazo, documentos y motivos de rechazo están publicados. Lo que no: ni una mención a Colombia en dieciséis páginas. Qué se puede hacer sin verificar.

  62. Cuánto cuesta un sitio web en Medellín: los precios publicados

    Quince agencias de Medellín, cinco con el precio publicado. Lo que cobran, con su URL y su fecha, y el coste que sigue corriendo cuando el sitio ya está hecho.

  63. Cuánto tarda Meta en aprobar una plantilla de WhatsApp

    Meta declara un techo de 24 horas y nadie publica una distribución. Los dos relojes que se confunden, cuántas vueltas cuesta un rechazo, y el protocolo para medirlo.

  64. Cómo se consulta de verdad la Cámara de Comercio de Medellín por CIIU

    El registro sí es público y sí es gratis. Lo cruzamos: 3.563 matrículas activas bajo CIIU 6201 y 7310 en la Cámara de Medellín, y ninguna casilla que diga IA.

  65. Nunca conectes un canal real a un inquilino de demostración

    Un simulador que sube las palomitas por reloj y un despachador real se pelean por la misma fila. Ninguno sabe del otro, y gane quien gane, el estado que se pinta no significa nada.

  66. Cuánto tardan en cargar los sitios de las empresas de Medellín

    No hay censo de sitios ni dato de campo por ciudad. Aquí va el protocolo reproducible, la muestra semilla verificada y lo que se rompió antes de medir.

  67. Chatwoot o consola propia: lo que cuesta cada camino

    Instalamos Chatwoot en el mismo servidor donde corre nuestra consola y lo dejamos correr. El modo enterprise autohospedado se revirtió solo, al minuto exacto que predice una fórmula pública.

  68. Por qué Dropi te bloquea por IP

    Su API responde 401 con una sola pista dentro: la IP que te vio. No dice si tu llave está mal. Qué gatillo falló, y cómo se pide el acceso.

  69. A qué hora le escriben a un negocio

    Nadie ha publicado la curva por hora en Colombia. Tenemos las bandejas delante y todavía no podemos publicarla: esto es por qué.

  70. Cuántas agencias de IA hay en Medellín

    No existe el censo, y las cifras que circulan miden el directorio y no el mercado. Lo que sí está medido, lo que se puede estimar, y con cuánto error.

  71. Las tres salidas de Meta fuera de la ventana de 24 horas

    La regla de las 24 horas no es una sola: son tres mecanismos distintos, uno por canal, con caducidades distintas. Y en Instagram, pasados siete días, no hay ninguna.

  72. La API de WhatsApp no te da la foto de tu contacto

    Dieciséis peticiones a la API de Meta para comprobar algo que no está escrito en su documentación: en WhatsApp, quien te escribe no es un nodo al que se le pueda pedir nada.

Casi todo esto sale de trabajo que hacemos para alguien. Lo que hacemos está en Servicios.