Hecho con Chinaski

Agregar un Formulario de Contacto

Un formulario de contacto en Chinaski empieza con un elemento de formulario y un bloque. Esta guía cubre la creación del formulario, su colocación en una página y qué pasa después de que un visitante envía.

1. Crear el formulario

En Forms en el sidebar del admin crea un nuevo formulario: un nombre legible para humanos más un slug que usan las referencias de embed y API. Agrega campos al formulario; cualquier combinación de:

  • text, email, tel, textarea
  • select, radio, checkboxes, checkbox
  • address (un campo compuesto con sub-entradas de street, city, state, postal/country)
  • file upload

Cada campo tiene un label (mostrado a los visitantes), un ancho de visualización editable (full o half de la fila), y visualización condicional opcional; visible solo cuando el valor de otro campo coincide. Los nombres de campos se sanea automáticamente a minúsculas/dígitos/underscores. Los campos requeridos, los placeholders y las opciones de un dropdown separadas por saltos de línea son settings por campo.

2. Colocarlo en una página

Suelta un form block en el cuerpo de cualquier página o post y apúntalo al slug de tu formulario. El bloque renderiza el formulario real; los posts entregan datos al endpoint de envío /forms/<slug> del CMS, automáticamente proxy en la config estándar del server (el único pathway dinámico, como se describe en la discusión de la arquitectura de static-site).

3. Configurar las notificaciones

  • notify_email; direcciones de email separadas por comas que reciben cada envío. El email de notificación al admin lista el valor de cada campo, con la dirección IP incluida a menos que la opción de privacidad la desactive.
  • reply_to_field; nombra el campo de email cuyo valor se convierte en el Reply-To de la notificación, así quienes responden contestan al visitante directamente.
  • thank_you_url; redirect externo seguro opcional después del envío; hasta honrar el contenido del formulario provisto cuando no se define. El texto de respuesta por defecto es "Thank you. Your submission has been received."

Activa y desactiva el submit button label, el gate anti-spam Turnstile por formulario, los países bloqueados separados por comas, y/o el switch de privacidad store_ip (que no almacena ninguna dirección IP si está deshabilitado).

4. Anti-spam y límites

  • Rate limiting por IP; máximo cinco envíos por formulario por IP por hora promedio; 30 por IP combinando todos los formularios. Violarlo produce "Too many submissions; please try again later" tras una pequeña demora, con un 429 del server.
  • Verificación con Cloudflare Turnstile cuando hay una key de Turnstile en el site y el formulario está activado (el default); encendido por defecto, así que omite turnstile_enabled=0 en pruebas rastreadas sin captcha.
  • Bloqueo de países; con los códigos que entres, enviar desde regiones bloqueadas devuelve "Submissions from your region are not accepted".
  • Señales de privacidad; los visitantes que envían headers DNT o "Do Not Sell" no reciben almacenamiento de IP ni atribución de clicks de anuncios, según los settings de DNT y GPC respetados automáticamente.

5. Qué llega después de que alguien envía

  • los valores almacenados de cada campo (incluyendo los vacíos, tipados por tipo)
  • un webhook; si la propia configuración de webhook del formulario está montada; con el id del formulario, el slug del formulario, el id del envío, los datos enviados y el timestamp
  • el email de notificación a los recipients que configuraste, más un email de confirmación opcional para quien envió (entregado de forma asíncrona; requiere SMTP configurado en los settings, y nunca se envía en modo air-gap)
  • opcionalmente un redirect del navegador al thank_you_url del formulario

Cada envío se registra una sola vez; un reenvío con la misma identidad responde la respuesta de agradecimiento y no registra los datos por duplicado.

6. Dónde viven los envíos

Ve o exporta los envíos por formulario desde Forms →

→ Submissions, ya sea uno por uno o en exports CSV/JSON.

7. Salir a producción con seguridad

Recuerda que los form blocks inyectan el formulario en el website estático, así que los servers responden directamente los POST de envíos al CMS. Los formularios inactivos devuelven un 404 y fallan el envío.

Cuando un cambio de formulario va junto con cambios de copia, vigila el deploy; apagar un formulario rechaza los posts hacia él, y un formulario dejado "on" dentro de una página sin publicar solo aparece en esa página después de un rebuild.

Lee este sitio en