> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://help.danaconnect.com/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# Limitar envíos por usuario en formulario (1 envío)

# 📝 Cómo evitar que un formulario pueda completarse más de una vez por usuario

### 🎯 Objetivo

Evitar que una persona complete un formulario más de una vez. Si ya lo hizo, se mostrará un mensaje estático de confirmación y se ocultarán los campos del formulario.

---

## 🔧 Paso 1: Crear el campo de control en la Lista de Contactos

1. Accede al módulo **Listas de Contactos**.
2. Selecciona la lista vinculada al formulario que deseas proteger.
3. Crea un nuevo campo con las siguientes características:

   * **Nombre del campo:** `YaCompletado`
   * **Tipo:** Texto
   * **Uso:** Este campo se utilizará para registrar si el contacto ya completó el formulario.


![Guardar columna "YaCompletado" en lista de contactos](https://storage.crisp.chat/users/helpdesk/website/-/2/0/c/1/20c17c74d739e400/image_52vgpb.png)



![Columna "YaCompletado" agregada](https://storage.crisp.chat/users/helpdesk/website/-/2/0/c/1/20c17c74d739e400/image_1m6xtox.png)

---

## 🧾 Paso 2: Agregar campos de control y mensaje en el formulario

En el editor del formulario, es necesario agregar **dos campos**:

### 1. Campo de mensaje visual (lo que ve el usuario)

Este campo mostrará el mensaje de que el formulario ya fue completado.

* **Tipo de campo:** Texto (Read only)

* **ID o clase sugerida:** `.mensajeYaCompletado`

* **Texto predeterminado:**

  ```
  Ya completaste este formulario. Gracias por tu respuesta.
  ```

![Creación de campo que muestra al usuario que ya completó el formulario](https://storage.crisp.chat/users/helpdesk/website/-/2/0/c/1/20c17c74d739e400/image_1o99xx8.png)


### 2. Campo de control (valor de `YaCompletado`)

Este campo sirve para que el formulario pueda detectar si el contacto ya completó el formulario.

* **Tipo de campo:** Texto (Hidden)
* **Conectado al campo de la lista de contactos:** Sí, debe estar vinculado al campo `YaCompletado` creado en la lista de contactos a través de la etiqueta dinámica $d{YACOMPLETADO} que es correspondiente al código de dicho campo en la lista.


![Creación de campo de control de "YaCompletado"](https://storage.crisp.chat/users/helpdesk/website/-/2/0/c/1/20c17c74d739e400/image_foypc9.png)


> ⚠️ **Importante:** Ambos campos deben estar correctamente configurados para que la lógica condicional funcione en el siguiente paso.

---

## 🎨 Paso 3: Aplicar estilos para mostrar el mensaje como texto estático

Inserta el siguiente código CSS en la sección **Advanced CSS** del formulario:
[Artículo para Crear/Asignar Tema en Formularios](https://help.danaconnect.com/es/article/crearasignar-tema-receptor-tipo-formulario-paso-2-fmln0/)

```css
.mensajeYaCompletado input {
  pointer-events: none !important;
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
  font-weight: bold !important;
  color: black !important;
}
```

![Inserción de código CSS en sección de "Advanced CSS" del tema](https://storage.crisp.chat/users/helpdesk/website/-/2/0/c/1/20c17c74d739e400/image_zi5ou8.png)

Este estilo transformará el campo en un **mensaje visual sin apariencia de campo de entrada**.

![Vista del campo después de aplicar CSS](https://storage.crisp.chat/users/helpdesk/website/-/2/0/c/1/20c17c74d739e400/image_on1xif.png)

---

## ⚙️ Paso 4: Configurar la lógica condicional del formulario

1. Dirígete a la sección **Lógica Condicional** del formulario.
2. Crea una nueva condición lógica ([Artículo del constructor de Lógica condicional](https://help.danaconnect.com/es/article/constructor-de-la-logica-condicional-receptor-tipo-formulario-1ssiojk/)):

   * **Condición:** Si el campo `YaCompletado` **es igual a "sí"**
   * **Acciones:**

     * **Mostrar solo** el campo `.mensajeYaCompletado`.
     * **Ocultar** todos los demás campos del formulario (Nombre, Email, etc.).


![Vista de como se vería la distribución de la lógica condicional](https://storage.crisp.chat/users/helpdesk/website/-/2/0/c/1/20c17c74d739e400/image_1hetedk.png)

---

## 📤 Paso 5: Marcar el formulario como completado al enviarlo

1. Accede al flujo que se activa después de que se envía el formulario.
2. Agrega un nodo de actualización después del nodo en donde se envía el formulario.
3. Configura este paso así:

   * **Campo a modificar [Label]:** `YaCompletado`
   * **Acción [Operator]:** `set`
   * **Valor nuevo [Value]:** `"Si"`


![Configuración de nodo de actualización](https://storage.crisp.chat/users/helpdesk/website/-/2/0/c/1/20c17c74d739e400/image_1a4g6z3.png)

Esto asegurará que el formulario reconozca a ese contacto como ya completado en futuras visitas.

**Nota: Se debe asegurar de tener el trigger externo activado tanto en el nodo de correo y el formulario. Al igual que el filtro de trigger externo posterior al nodo de correo apuntando al enlace del formulario.  ** 

[Artículo de Trigger externo a formularios](https://help.danaconnect.com/es/article/agregando-trigger-externo-a-los-formularios-1p0ui7j/)

![Configuración de flujo](https://storage.crisp.chat/users/helpdesk/website/-/2/0/c/1/20c17c74d739e400/image_1cc9ox.png)

---

## ✅ Resultado final

* Si el contacto **aún no ha completado el formulario**, verá todos los campos normalmente.

![Vista del formulario al llenarlo por primera vez](https://storage.crisp.chat/users/helpdesk/website/-/2/0/c/1/20c17c74d739e400/image_1ejaqu7.png)

* Si el campo `YaCompletado` **ya contiene el "Si"**:

  * Todos los campos del formulario se ocultan.
  * Se muestra únicamente el mensaje:

    > “Ya completaste este formulario. Gracias por tu respuesta.”

![Vista del formulario al intentar llenarlo de nuevo](https://storage.crisp.chat/users/helpdesk/website/-/2/0/c/1/20c17c74d739e400/image_1b8xola.png)

