Creación de formularios
Lógica condicional
Los bloques de lógica reaccionan a lo que introduce un respondente: muestran u ocultan cualquier bloque, saltan a páginas, bloquean el envío o calculan valores. Combina reglas simples para crear ramificaciones sofisticadas sin código.
Qué puede hacer la lógica
Cada bloque de lógica tiene una o más reglas. Cada regla combina un grupo de condiciones (¿cuándo debe activarse?) con una o más acciones (¿qué debe ocurrir?). Hay nueve tipos de acciones disponibles:
| Acción | Qué hace |
|---|---|
| Show | Muestra un bloque oculto — una pregunta, párrafo, imagen u opción — cuando se cumplen las condiciones. |
| Hide | Oculta un bloque visible — una pregunta, párrafo, imagen u opción — cuando se cumplen las condiciones. |
| Make required | Hace que un campo sea obligatorio de forma dinámica en ciertas rutas. |
| Make optional | Relaja la validación de un campo obligatorio cuando se cumplen las condiciones. |
| Set next page | Salta a una página específica — así es como construyes ramificaciones |
| Calculate value | Calcula totales, puntuaciones o precios a partir de otras respuestas. |
| Set payment amount | Establece, aumenta o reduce el precio de un campo Payment según las respuestas. |
| Prevent navigation to next page | Impide que el respondente avance, con un mensaje opcional que explica por qué. |
| Prevent submit form | Impide el envío hasta que se cumplan las condiciones (p. ej. términos aceptados), con un mensaje opcional que explica por qué. |
Añadir un bloque de lógica
Un bloque de lógica es un elemento del documento — se coloca en el lienzo entre preguntas, igual que un encabezado o una imagen. Puedes colocarlo en cualquier lugar: entre dos campos en la misma página, al inicio de una página o justo antes de un salto de página.
- 1
Abre el menú de barra
Haz clic en una línea vacía del lienzo y escribe /. Aparece el selector de bloques.
- 2
Busca "Logic"
Escribe logic para filtrar. Selecciona Logic de la categoría Layout. Aparece un nuevo bloque de lógica en el cursor.
- 3
Añade una regla
El bloque se lee When … Do …. Cada regla tiene un grupo de condiciones y una o más acciones.
- 4
Define las condiciones
Elige un campo, selecciona un operador y establece un valor. Añade otra condición, o añade un conjunto de condiciones para anidar un nivel más profundo.
- 5
Elige las acciones
Selecciona un tipo de acción (Show, Hide, Make required, Set next page, etc.) y elige el destino: una pregunta, un bloque, una opción o una página.
- 6
Añade más reglas (opcional)
Un mismo bloque de lógica puede contener varias reglas. Cada regla es independiente: tiene sus propias condiciones y sus propias acciones.
Condiciones
Las condiciones son el lado When de una regla. Cada condición elige un campo, aplica un operador y a menudo compara con un valor. El selector de campos agrupa lo que puedes observar: Questions, Hidden Fields, Calculated Fields y Metadata (hoy en día, el idioma del respondente).
All o Any
En cuanto una regla tiene dos o más condiciones, aparece un interruptor en la parte superior de la sección When:
All — todas las condiciones deben ser verdaderas para que la regla se active. Las filas se leen como “y”.
Any — basta con que una condición sea verdadera. Las filas se leen como “o”.
Conjuntos de condiciones
Add a set of conditions anida un segundo grupo dentro del primero, un nivel de profundidad, con su propio interruptor All/Any. Esto cubre lógica compuesta como “plan is Pro y (country is Norway o country is Sweden)”. Un conjunto solo contiene condiciones — no puede contener otro conjunto.
Una pregunta oculta no tiene valor
Si la lógica oculta una pregunta, la respuesta que pueda tener ya guardada no cuenta para nada — ni en condiciones, ni en cálculos, ni en el importe del pago, ni en la respuesta almacenada. La respuesta solo vuelve si la pregunta se hace visible de nuevo. Lo mismo vale para cada pregunta dentro de una fila, columna o grupo repetible ocultos, y para una opción elegida que la lógica oculta. Una página que las reglas Set next page se saltan también cuenta como oculta: sus preguntas no son obligatorias y lo que se respondió allí se descarta. Los campos ocultos son lo contrario: siempre conservan su valor.
Mantén la legibilidad
Si un bloque de lógica te parece demasiado complejo, considera dividir la lógica en varios bloques o reestructurar las páginas de tu formulario.
Referencia de operadores
La lista de operadores la decide el campo que elegiste — solo ves los que ese campo admite. Debajo, cada encabezado nombra el conjunto exacto.
Texto (Text Input, Text Area y campos calculados de texto)
| Operador | Descripción |
|---|---|
| is | El valor coincide, sin tener en cuenta mayúsculas ni espacios al principio o al final |
| is not | El valor no coincide |
| contains | El valor incluye el texto especificado |
| does not contain | El valor no incluye el texto especificado |
| starts with | El valor comienza con el texto especificado |
| ends with | El valor termina con el texto especificado |
| is empty | El campo no tiene valor |
| is not empty | El campo tiene algún valor |
Toda comparación de texto ignora mayúsculas y minúsculas y los espacios al principio y al final, así que x@Competitor.com
termina en @competitor.com.
Los demás campos de tipo texto ofrecen un conjunto más reducido, así que elige el tipo que se ajuste a cómo necesitas comparar:
| Campo | Operadores que ofrece |
|---|---|
| contains, does not contain, is, ends with, is empty, is not empty | |
| Website URL | contains, does not contain, is, starts with, ends with, is empty, is not empty |
| Phone Number | is, starts with, contains, is empty, is not empty |
| Hidden field (text) | El conjunto completo de texto de arriba |
Numérico (Number, Star Rating, escala lineal, campos ocultos y calculados numéricos)
| Operador | Descripción |
|---|---|
| is | El valor coincide exactamente |
| is not | El valor no coincide |
| is greater than | El valor está por encima del número especificado |
| is less than | El valor está por debajo del número especificado |
| is greater than or equal to | El valor es igual o mayor al número especificado |
| is less than or equal to | El valor es igual o menor al número especificado |
| is between | El valor cae dentro de un rango (inclusivo) |
| is empty | El campo no tiene valor |
| is not empty | El campo tiene algún valor |
Checkboxes y picture choice
| Operador | Descripción |
|---|---|
| has checked any of | Al menos una de las opciones especificadas está marcada |
| has not checked any of | Ninguna de las opciones especificadas está marcada |
| has checked all of | Todas las opciones especificadas están marcadas |
| has checked exactly | Las opciones marcadas coinciden exactamente con el conjunto especificado |
| is empty | No hay opciones seleccionadas |
| is not empty | Al menos una opción está seleccionada |
Dropdown y Radio Buttons (selección única)
| Operador | Descripción |
|---|---|
| is | La opción seleccionada coincide exactamente |
| is not | La opción seleccionada no coincide |
| is empty | Nada seleccionado |
| is not empty | Hay una opción seleccionada |
Toggle Switch (y campos calculados booleanos)
| Operador | Descripción |
|---|---|
| is on | El interruptor está activado |
| is off | El interruptor está desactivado |
Signature
| Operador | Descripción |
|---|---|
| is signed | Se ha dibujado una firma |
| is not signed | No se ha dibujado ninguna firma |
File Upload
| Operador | Descripción |
|---|---|
| has file | Se ha subido al menos un archivo |
| has no file | No se ha subido ningún archivo |
Date Picker y Time Picker
| Operador | Descripción |
|---|---|
| is | Coincidencia exacta |
| is not | No coincide |
| is before | Antes de la fecha/hora especificada |
| is after | Después de la fecha/hora especificada |
| is between | Cae dentro de un rango de fecha/hora |
| is empty | No se ha seleccionado ningún valor |
| is not empty | Tiene un valor |
Ranking
| Operador | Descripción |
|---|---|
| option is ranked first | La opción especificada está en la primera posición |
| option is ranked last | La opción especificada está en la última posición |
| option is ranked above | La opción especificada está clasificada por encima de otra opción |
Matrix / Grid
| Operador | Descripción |
|---|---|
| row answer is | Una fila específica tiene la respuesta indicada |
| row answer is not | Una fila específica no tiene la respuesta indicada |
| row is answered | Una fila específica ha sido respondida |
| row is not answered | Una fila específica no ha sido respondida |
Payment
| Operador | Descripción |
|---|---|
| amount equals | El importe del pago coincide exactamente |
| amount is greater than | El importe del pago está por encima del valor especificado |
| amount is less than | El importe del pago está por debajo del valor especificado |
| is completed | El pago se procesó correctamente |
| is not completed | El pago aún no se ha procesado |
Campos que no puedes observar
Schedule appointment y Documents pueden ser destinos de visibilidad pero nunca fuentes de condición. Una reserva se adjunta a la respuesta en lugar de almacenarse como una respuesta ordinaria, y un bloque Documents no recoge ninguna respuesta. Usa respuestas de calificación anteriores para mostrar u ocultar cualquiera de los dos. Toda pregunta Schedule appointment visible debe reservarse antes del envío; una oculta no lo bloquea. Consulta Programación de Cal.com con lógica.
Destino
Cada acción necesita un destino — el elemento sobre el que actúa. El destino depende del tipo de acción:
| Tipo de acción | Destino | Ejemplo |
|---|---|---|
| Show / Hide | Cualquier bloque — una pregunta, párrafo, imagen, contenedor de diseño o una opción específica dentro de un campo de selección | Mostrar un párrafo "¡Buena elección!" cuando se elige una opción |
| Make required / Make optional | Una pregunta | Requerir "Restricciones alimentarias" solo para asistentes presenciales |
| Set next page | Una página | Saltar a la página 5 para clientes recurrentes |
| Calculate value | Un campo calculado | Sumar tres puntuaciones de Star Rating en un total |
| Set payment amount | Un campo Payment | Aumentar el precio en 15 cuando "Entrega urgente" está activado |
| Prevent navigation to next page / Prevent submit form | No se necesita destino (solo el mensaje) | Impedir el envío hasta que el interruptor de términos esté activado |
Show y Hide van más allá de las preguntas. Apunta a cualquier bloque del lienzo — un párrafo, encabezado, imagen o contenedor de diseño — para mostrar una nota que estaba oculta por defecto u ocultar contenido cuando deja de ser relevante. También pueden apuntar a opciones individuales dentro de un campo de selección, no solo a la pregunta completa. Primero oculta un bloque desde el menú del bloque y luego escribe una regla para mostrarlo.
Cómo se combinan varias reglas
Cada regla es independiente, y todas se evalúan a la vez. Las reglas se leen de arriba abajo, a través de los bloques de lógica, en el orden del documento. Cómo se combinan varias reglas sobre un mismo destino depende de la acción.
| Acción | Cómo se combinan varias reglas |
|---|---|
| Show / Hide, Make required / Make optional | Solo una regla cuyas condiciones coincidan reclama el destino, así que las reglas se acumulan como un or: el bloque se muestra si alguna regla coincidente lo muestra. Una regla que no coincide aplica su opuesto pero no reclama nada, así que una regla coincidente posterior sigue ganando. |
| Set next page | Un salto actúa cuando el respondente pulsa Siguiente en la página con las preguntas que la regla lee, y en ninguna otra página. De las reglas que actúan ahí, gana la primera que coincide. Una regla que solo lee campos ocultos o calculados actúa en cualquier página, pero solo salta hacia adelante. |
| Calculate value | Cada regla coincidente se ejecuta, en orden, sobre el valor en curso. Nada reclama nada. |
| Set payment amount | Solo una regla "set to" cuyas condiciones coinciden reclama el precio, así que la primera que coincide lo posee y varias reglas "set to" pueden fijar un precio por nivel. "increase by" y "decrease by" nunca reclaman — se acumulan en orden sobre el importe en curso. |
| Ninguna regla coincide | El bloque vuelve a su estado predeterminado: oculto si lo estaba por defecto, visible en caso contrario. |
Así puedes apuntar varias reglas a un mismo bloque sin que se peleen entre ellas. Un formulario de comentarios tiene una pregunta de Radio Buttons — “¿En qué podemos ayudarte?” — con cuatro opciones, y un campo de email “¿Podemos contactarte?” oculto por defecto. Cuatro reglas muestran con Show ese mismo campo de email (además de su propia pregunta de seguimiento) según su opción. El campo de email aparece sin importar qué opción se elija, y permanece oculto solo si ninguna coincide.
A menudo basta una sola regla
Para mostrar un bloque ante varias respuestas, una regla con Any y una condición por respuesta — o una única condición is not empty para cubrirlas todas — es más fácil de leer que cuatro reglas. Recurre a varias reglas cuando cada opción también necesite su propio seguimiento distinto.
Reglas en conflicto
Cuando dos reglas discrepan sobre el mismo destino — una hace Show en un bloque mientras otra hace Hide, o una hace un campo obligatorio mientras otra lo hace opcional — y ambas condiciones coinciden a la vez, gana la primera regla. La regla posterior que pierde se marca en el editor: “This action never applies — an earlier rule already controls its target. Rule order decides: the first rule wins.”
Una excepción de orden: una regla cuya condición lee un campo calculado se ejecuta después de la regla que lo escribe, sea cual sea el orden del documento, así que una puntuación siempre se calcula antes de que algo se ramifique según ella. Las reglas que se escriben unas a otras en bucle en sus campos calculados generan una advertencia de publicación que nombra la cadena — rompe el bucle para que los valores se resuelvan de forma predecible.
Oculto gana a obligatorio
Una pregunta que termina oculta nunca es obligatoria, ya sea porque una regla la ocultó o porque se ocultó desde el menú del bloque sin ninguna regla que la revele. El asterisco desaparece y el envío no se bloquea — de lo contrario, un respondente podría quedarse bloqueado fuera de un formulario por un campo que no puede ver.
Patrones comunes
Mostrar una pregunta de seguimiento basada en una respuesta anterior
Una encuesta de satisfacción pregunta “¿Cómo valorarías tu experiencia?” con un Star Rating del 1 al 5. Un bloque de lógica debajo usa la condición “rating is less than or equal to 3” con la acción Show apuntando a un campo Text Area que pregunta “¿Qué podríamos mejorar?” Los respondentes que puntúan 4 o 5 nunca ven la pregunta de seguimiento.
Mostrar un mensaje cuando se elige una opción
Un formulario de registro tiene una pregunta de Radio Buttons: “¿Qué plan se adapta mejor a ti?” Debajo hay un párrafo — “¡Buena elección! Nuestro plan Pro incluye soporte prioritario.” — oculto por defecto con Hide del menú del bloque. Un bloque de lógica lo muestra: si plan is “Pro”, Show el párrafo. La nota de ánimo aparece solo para quienes eligen Pro y permanece oculta para los demás.
Ramificar a diferentes páginas según una selección
Un formulario de registro para un evento tiene una pregunta de Radio Buttons: “¿Asistes en persona o de forma remota?” Siguen dos bloques de lógica:
Regla 1 — condición: attendance is “In person”, acción: Set next page “Venue details”.
Regla 2 — condición: attendance is “Remote”, acción: Set next page “Streaming setup”.
Regla 3 — condición: arrival time is not empty, acción: Set next page “Confirmation”. Arrival time es una pregunta obligatoria en “Venue details”.
Las reglas 1 y 2 leen la pregunta attendance, así que actúan cuando el respondente sale de su página. Después, Siguiente continúa en el orden de las páginas. La regla 3 lee una pregunta en “Venue details”, así que actúa cuando el respondente sale de esa página. Quienes asisten en persona se saltan entonces “Streaming setup”. Cada ruta recoge solo la información relevante, y ambas convergen en una página compartida de “Confirmation”.
Calcular una puntuación y ramificar según ella
Un formulario de calificación de leads tiene tres preguntas de Star Rating: presupuesto, plazo y autoridad. Un campo calculado llamado “Lead score” usa un bloque de lógica con la acción Calculate value para sumar el valor de cada valoración. Un segundo bloque de lógica lee el campo calculado: si Lead score is greater than 12, Set next page “Priority follow-up”; de lo contrario, salta a la página de confirmación estándar.
Reaccionar al valor de un campo oculto
La URL rellena un campo oculto llamado plan (p. ej. ?plan=enterprise). Un bloque de lógica comprueba: si
plan is “enterprise”, Show la pregunta “Dedicated account manager” y Make required el
campo “Company size”. Los respondentes del nivel gratuito nunca ven estas preguntas.
Bloquear el envío según un total calculado
Un formulario de pedido calcula un total acumulado. Un bloque de lógica usa la condición: si Order total is less than 10, Prevent submit form. El respondente no puede enviar el formulario hasta que se alcance el umbral mínimo del pedido.
Mientras una regla de prevención está activa, el botón se muestra como no disponible y se le dice al respondente por qué. Escribe el motivo en Message shown to respondent en la fila de la acción — “Your order must total at least 10” — para que sepa qué respuesta cambiar. Déjalo vacío y el formulario recurre a “This form cannot be submitted with the current answers.” (o “You cannot continue to the next page with the current answers.” para un bloque de navegación). Cuando varias reglas de prevención se activan a la vez, la primera que lleva un mensaje aporta el texto.
Prueba la lógica con Preview
Después de configurar tus reglas, cambia a Preview en la barra de herramientas superior y rellena el formulario como lo haría un respondente. La lógica se activa en tiempo real en Preview, así puedes verificar cada rama, campo oculto y validación de bloqueo antes de publicar.