La lógica condicional permite que un formulario cambie su comportamiento según las respuestas que va dando la persona que lo llena: mostrar u ocultar campos, hacerlos obligatorios u opcionales, habilitarlos o deshabilitarlos, copiar la respuesta de un campo a otro, saltar páginas, calcular valores numéricos automáticamente, enviar la notificación de una respuesta a una dirección de correo distinta según el caso, o mostrar un mensaje de agradecimiento distinto (o redirigir a otra página) al terminar, según las respuestas.
Puedes crear y editar reglas de lógica de tres formas: desde el panel Condiciones del constructor de formularios (ver "Crear y editar reglas en el constructor" más abajo), desde la API REST o el conector MCP (ver Desarrolladores y API), o partiendo de una de las plantillas del catálogo de anota que ya trae reglas configuradas — muchas de las más de 2,000 Plantillas (por ejemplo, formularios de admisión de pacientes con secciones que aparecen solo si corresponde, o formularios de pedido con un subtotal que se calcula solo) incluyen lógica lista para usar. Elijas la vía que elijas el resultado es el mismo: reglas guardadas en el formulario que anota evalúa igual al mostrar la página pública.
Esta página explica cómo funciona la lógica condicional y cómo crear tus propias reglas, ya sea partiendo de una plantilla que ya las incluya o construyéndolas desde cero.
| Término | Significado |
|---|---|
| Regla de lógica | Una instrucción del tipo SI/ENTONCES que evalúa respuestas del formulario y ejecuta una o más acciones. |
| Condición | Una prueba individual sobre la respuesta de un campo: campo + operador + valor de comparación. |
| Grupo de condiciones (SI) | El conjunto de condiciones de una regla. Puede exigir que se cumplan todas las condiciones o cualquiera de ellas. |
| Acción (ENTONCES) | Lo que hace la regla cuando el grupo de condiciones se cumple. anota ofrece doce acciones — mostrar/ocultar un campo, hacerlo obligatorio/quitarle lo obligatorio, habilitarlo/deshabilitarlo, copiar un valor a otro campo, saltar a una página, calcular un valor, enviar una copia de la notificación por correo, o mostrar un mensaje de agradecimiento distinto/redirigir a otra URL al enviar — ver la tabla de referencia más abajo. |
Cuando alguien llena un formulario que tiene lógica condicional, anota evalúa el grupo de condiciones de cada regla en tiempo real, a medida que la persona responde el campo evaluado, y ejecuta las acciones correspondientes de inmediato (mostrar/ocultar campos, saltar de página, recalcular el campo numérico o agregar destinatarios a la notificación de esa respuesta). No hace falta que la persona termine el formulario ni que le dé clic a nada adicional: el cambio ocurre apenas su respuesta cumple la condición.
+ − × ÷ ( ) para insertar operadores; cada clic agrega el token al final de la fórmula actual, así que sigue siendo editable directamente si prefieres escribirla o ajustarla a mano. Debajo aparece una vista previa con valores de ejemplo (todos los campos referenciados en cero) apenas la fórmula es válida; si no lo es, ese espacio muestra en su lugar el aviso Fórmula inválida, sin impedir que sigas editando.El orden de las reglas importa. anota evalúa las reglas de un formulario en el orden en que aparecen en la lista. Si dos reglas actúan sobre el mismo campo o la misma página, la que aparece más abajo se evalúa después y puede sobrescribir el resultado de la anterior. Usa ↑/↓ en cada tarjeta para reordenarlas — por ejemplo, coloca primero una regla general y después una más específica si quieres que esta última tenga la última palabra.
Excepción: Mostrar mensaje de agradecimiento y Redirigir a URL funcionan al revés — gana la primera regla que se cumple, no la última. Si tienes varias reglas con alguna de estas dos acciones y más de una se cumple a la vez, se usa la que aparece primero en la lista (más arriba), y las siguientes que también se cumplan se ignoran para ese resultado. Es la única excepción a la regla general de "gana la última"; para las diez acciones restantes, sigue aplicando "la que aparece más abajo tiene la última palabra".
Mostrar un campo requiere que empiece oculto. Para que una acción Mostrar campo tenga efecto, el campo objetivo debe estar marcado como oculto por defecto: selecciónalo en el lienzo, abre su panel de propiedades y activa la casilla Oculto (se muestra con una regla) (junto a Obligatorio; no aparece en campos decorativos). Mientras editas, un campo con esa casilla activada muestra una pequeña insignia oculto en el lienzo, para que sea evidente aunque la regla que lo revela todavía no se haya evaluado. Si nunca lo marcas como oculto, la acción Mostrar campo no tiene ningún efecto visible porque el campo ya se veía.
Habilitar campo y Deshabilitar campo no necesitan ninguna casilla previa. A diferencia de Mostrar/Ocultar campo, todo campo empieza habilitado por defecto, así que Deshabilitar campo siempre tiene efecto de inmediato. Habilitar campo solo tiene sentido para revertir una Deshabilitar campo anterior — de la misma regla o de otra que se evalúe antes.
Todos los cambios que hagas en el panel Condiciones (crear, editar, reordenar, pausar, duplicar o eliminar una regla) se pueden deshacer con el botón ↩ Deshacer de la barra del constructor, igual que cualquier otro cambio. Si eliminas un campo o una página que una regla estaba usando (en una condición o como destino de una acción, incluido el campo origen de una acción Copiar valor a), anota quita automáticamente esa referencia de la regla — y elimina la regla completa si no le queda ninguna condición o ninguna acción — en vez de impedir la eliminación; un solo Deshacer restaura tanto el campo o la página como la regla, tal como estaban.
También puedes crear, editar y eliminar reglas por API o por el conector MCP (herramientas add_logic_rules, edit_logic_rule y delete_logic_rule), incluso en un formulario ya publicado — ver Desarrolladores y API.
Además de Editar, ↑/↓ y ✕, cada tarjeta de la lista de reglas tiene dos botones más:
Cuando el formulario tiene al menos una regla, encima de la lista aparece la casilla Buscar reglas…: escribe cualquier palabra que aparezca en el resumen de una regla (nombre de campo, operador, valor, o el número de la regla) para filtrar la lista a solo las que coinciden. Junto a la búsqueda hay dos selectores adicionales — uno para filtrar por tipo de acción (solo lista los tipos que realmente usa alguna regla del formulario) y otro para filtrar por campo (una regla coincide si ese campo aparece en cualquiera de sus condiciones o acciones) —, y los tres filtros se combinan entre sí: una regla solo aparece si cumple la búsqueda de texto y el tipo de acción elegido y el campo elegido. Si ninguna regla coincide con la combinación de filtros activa, el panel muestra "Ninguna regla coincide con la búsqueda."; vuelve cualquiera de los tres a su valor por defecto ("Todas las acciones" / "Todos los campos", o borra el texto) para ver más reglas de nuevo.
Al agregar una acción Mostrar campo, Ocultar campo, Hacer obligatorio, Quitar obligatorio, Habilitar campo o Deshabilitar campo, aparece un botón + junto a su selector de campo. Haz clic para agregar automáticamente otra acción del mismo tipo dentro de la misma regla, apuntando al siguiente campo (que capture respuesta) que todavía no esté incluido en una acción de ese tipo — así una sola regla puede actuar sobre varios campos sin repetir "+ Agregar acción" y volver a elegir el tipo cada vez. El botón desaparece en cuanto ya no queda ningún campo sin agregar.
El botón + solo ofrece campos que capturan respuesta. Para mostrar u ocultar un elemento puramente decorativo (encabezado, párrafo, imagen, separador), agrégalo manualmente con + Agregar acción y selecciónalo en la lista completa de campos del selector de Mostrar/Ocultar campo.
Este es un ejemplo de cómo se combinan condición y acción dentro de una regla.
Un formulario con un campo de tipo lista desplegable llamado Método de entrega, con las opciones "Envío a domicilio" y "Recogida en tienda", puede tener una regla que solo muestre el campo Dirección de recogida cuando la persona elige "Recogida en tienda":
Resultado: mientras el campo Método de entrega no tenga esa respuesta, Dirección de recogida permanece oculto. En cuanto la persona selecciona "Recogida en tienda", el campo aparece en el formulario.
Un formulario de pedido con un campo numérico Cantidad (identificador f_qty), un campo numérico Cargo por envío (identificador f_fee) y un tercer campo numérico, Subtotal, que se llena solo, puede tener una regla así:
{f_qty} * 25 + {f_fee}.Resultado: si la persona ingresa Cantidad = 3 y Cargo por envío = 10, anota calcula automáticamente Subtotal = 3 × 25 + 10 = 85, sin que la persona tenga que hacer la operación manualmente. Recuerda que esta acción solo calcula un número dentro del formulario: no cobra tarjetas ni procesa pagos — ver Productos y pedidos.
Un formulario con un campo de selección única ¿Eres cliente actual? ("Sí" / "No") puede mostrar un mensaje distinto a cada grupo al terminar:
Resultado: cada persona ve el mensaje que corresponde a su respuesta. Como estas dos reglas nunca se cumplen a la vez (una persona no puede responder "Sí" y "No" al mismo tiempo), el orden entre ellas no importa aquí — pero si tuvieras una tercera regla más general que también pudiera cumplirse junto con alguna de estas dos, colócala después en la lista para que las más específicas tengan prioridad (recuerda: para estas dos acciones gana la primera regla que se cumple).
| Operador | Evalúa que la respuesta... |
|---|---|
| Es igual a | Coincide exactamente con el valor indicado. |
| No es igual a | Es distinta del valor indicado. |
| Contiene | Incluye el texto indicado en algún punto. |
| No contiene | No incluye el texto indicado. |
| Comienza con | Empieza con el texto indicado. |
| Termina con | Termina con el texto indicado. |
| Está vacío | No tiene respuesta. |
| No está vacío | Tiene una respuesta. |
| Es mayor que | Es un número mayor que el valor indicado. |
| Es menor que | Es un número menor que el valor indicado. |
| Acción | Qué hace | Notas |
|---|---|---|
| Mostrar campo | Muestra un campo del formulario que está oculto por defecto o por otra regla. | Actúa sobre un campo específico. |
| Ocultar campo | Oculta un campo para que la persona no lo vea ni lo responda. | Actúa sobre un campo específico. Por defecto, la respuesta que tuviera ese campo se elimina del envío — ver "Qué pasa con la respuesta de un campo que una regla oculta" más abajo. |
| Hacer obligatorio | Convierte la respuesta de un campo en obligatoria mientras la regla se cumple, aunque no sea obligatorio por defecto. | Actúa sobre un campo que captura respuesta. |
| Quitar obligatorio | Quita la obligatoriedad de un campo mientras la regla se cumple, aunque sea obligatorio por defecto. | Actúa sobre un campo que captura respuesta. |
| Habilitar campo | Permite que la persona edite un campo que quedó deshabilitado por una acción Deshabilitar campo (de la misma regla o de otra). | Todo campo empieza habilitado; esta acción solo tiene efecto si algo lo deshabilitó antes. |
| Deshabilitar campo | Deshabilita un campo: sigue visible, pero atenuado y sin poder editarse, y su respuesta nunca se incluye en el envío. | A diferencia de Ocultar campo, el campo no desaparece — solo queda inactivo. |
| Copiar valor a | Copia, en vivo y mientras la persona llena el formulario, la respuesta de un campo origen hacia el campo destino elegido — igual que Calcular. | Requiere JavaScript habilitado en el navegador de quien llena el formulario; si el campo origen está vacío, el destino queda vacío también. |
| Saltar a página | Envía a la persona directamente a otra página del formulario, saltando las páginas intermedias. | Si tu formulario usa el modo tarjeta, revisa Diseño Clásico y Tarjetas para entender cómo se muestran las páginas y saltos en ese modo. |
| Calcular | Calcula el valor de un campo numérico a partir de una fórmula que puede referenciar otros campos entre llaves, por ejemplo {f_qty} * 25 + {f_fee}. Puedes escribir la fórmula a mano o usar el constructor de campos y operadores que aparece debajo de la casilla. |
Solo calcula un número dentro del formulario (por ejemplo, un subtotal de productos y pedidos). No procesa pagos ni cobra tarjetas. |
| Enviar copia por correo | Envía una copia de la notificación de esa respuesta a una dirección de correo adicional, además del destino habitual. | Ver Notificaciones por correo. |
| Mostrar mensaje de agradecimiento | Reemplaza el mensaje de agradecimiento que ve la persona al terminar el formulario por un texto distinto, mientras la regla se cumple. | Gana la primera regla que se cumpla, no la última — ver "El orden de las reglas importa" más arriba. Si ninguna regla de este tipo se cumple, se usa el Mensaje de agradecimiento normal de Tema y apariencia. El texto no se traduce por idioma — se muestra igual sin importar el idioma en que la persona esté llenando el formulario. |
| Redirigir a URL | En vez de mostrar la pantalla de agradecimiento, envía a la persona a la URL indicada al terminar el formulario, mientras la regla se cumple. | Gana la primera regla que se cumpla, no la última, y tiene prioridad sobre Mostrar mensaje de agradecimiento si ambas se cumplen a la vez. |
Cuando una acción Ocultar campo (o el estar oculto por diseño) hace que un campo quede fuera de la vista, ¿qué pasa con la respuesta que la persona ya había escrito ahí antes de que se ocultara? Lo controla la opción Valores de campos ocultos, en Configuración del formulario (panel derecho del constructor, debajo de Mensaje de formulario cerrado — ver Tema y apariencia):
Antes de que existiera esta opción, anota siempre guardaba la respuesta de un campo oculto por una regla, aunque la persona ya no la viera ni pudiera confirmarla — esto era un error de higiene de datos (respuestas "fantasma" de un campo que la persona nunca llegó a ver). El valor por defecto Borrar al enviar corrige ese comportamiento; usa Conservar solo si de verdad necesitas guardar esa respuesta anterior, por ejemplo para auditoría. Esta opción no afecta a Deshabilitar campo: la respuesta de un campo deshabilitado nunca se incluye en el envío, sin importar cómo esté configurada esta opción.
| Síntoma | Causa probable | Solución |
|---|---|---|
| Agregué una acción Mostrar campo pero el campo ya se veía desde el principio | El campo objetivo no tiene activada la casilla Oculto (se muestra con una regla) en sus propiedades, así que nunca estuvo oculto y la acción no tiene nada que mostrar. | Selecciona el campo en el lienzo y activa Oculto (se muestra con una regla) en el panel de propiedades. |
| Un campo no aparece aunque la condición parece cumplirse | Otra regla que se evalúa después también afecta a ese mismo campo (por ejemplo, lo oculta), y sobrescribe el resultado de la primera. | Revisa el panel Condiciones: la regla que aparece más abajo en la lista se evalúa después. Reordénalas con ↑/↓ si es necesario. |
| La acción Calcular no da el resultado esperado | La fórmula referencia un identificador de campo incorrecto, o el campo referenciado está vacío. | Verifica que cada identificador entre llaves (por ejemplo {f_qty}) corresponda exactamente a un campo del formulario. |
| Agregué una acción Habilitar campo pero no pasa nada | Todo campo empieza habilitado; Habilitar campo solo tiene efecto si otra regla lo deshabilitó primero. | Si el campo nunca fue deshabilitado, esta acción no tiene nada que revertir — probablemente no la necesitas. |
| Copiar valor a no copia nada en el formulario publicado | La persona que llena el formulario tiene JavaScript deshabilitado en su navegador. | Copiar valor a (como Calcular) solo funciona con JavaScript habilitado; no hay alternativa server-side para esta acción. |
| Una respuesta que la persona escribió en un campo que luego se ocultó no aparece en las respuestas recibidas | Es el comportamiento por defecto de Valores de campos ocultos: Borrar al enviar. | Si necesitas conservar esas respuestas, cambia la opción a Conservar en Configuración del formulario — ver Tema y apariencia. |
| Tengo dos reglas con Mostrar mensaje de agradecimiento que se cumplen a la vez, pero se muestra el mensaje de la que no esperaba | Estas dos acciones (y Redirigir a URL) usan el orden contrario al resto: gana la primera regla que se cumple, no la última. | Reordena las reglas con ↑/↓ para que la que quieres que gane quede primero en la lista. |
| Configuré Mostrar mensaje de agradecimiento pero a la persona la redirige a otra página en su lugar | Alguna regla con Redirigir a URL también se cumplió, y esa acción tiene prioridad sobre el mensaje de agradecimiento. | Si no quieres la redirección en ese caso, revisa las condiciones de la regla que usa Redirigir a URL. |
¿Te resultó útil esta página?