Formularios de contacto para Svelte

Crea un formulario de contacto funcional para tu app de Svelte sin backend. Es un componente de un solo archivo con campos bind:value y un manejador on:submit|preventDefault que hace POST a Formpaste. Pruébalo en vivo, copia el código con el estilo que prefieras, y los envíos llegan a tu bandeja de entrada, con filtrado de spam.

Cómo crear un formulario en Svelte

  1. 1

    Crea un formulario en tu panel de Formpaste y copia su clave de acceso.

  2. 2

    Copia el componente de un solo archivo de Svelte de arriba en tu app y elige tu estilo.

  3. 3

    Reemplaza YOUR_ACCESS_KEY_HERE con tu clave de acceso y despliega.

Prompt para tu agente de programación con IA

Add a Formpaste contact form to my Svelte app. Use a single-file component with a <script> block, bind:value fields, and an on:submit|preventDefault handler that POSTs as application/x-www-form-urlencoded (URLSearchParams) to https://api.formpaste.com/submit with a hidden access_key input. No backend.

O conecta el servidor MCP de Formpaste con Claude Code, Codex, Cursor, Claude Desktop, VS Code o cualquier cliente mcp-remote. Ver la guía de configuración.

Un componente y un fetch

Un formulario de contacto en Svelte es un componente de un solo archivo con bind:value en los campos y un manejador on:submit|preventDefault que hace POST a Formpaste. No hay ruta API, ni servicio de correo, ni base de datos: copias el componente, agregas tu clave de acceso, y los envíos llegan a tu bandeja de entrada. Funciona igual en una app de Svelte plana o dentro de SvelteKit.

Gestionar la respuesta

El endpoint devuelve JSON (success, message, id). Espera el fetch con await y actualiza una variable de estado reactiva status para mostrar tu propio mensaje de éxito o error, o define una URL de redirección en la configuración de tu panel para que Formpaste envíe al visitante a una página de agradecimiento sin código adicional en el cliente.

Svelte 4 o Svelte 5

Los ejemplos usan un bloque <script> con una variable status sencilla, lo cual funciona en cualquier versión de Svelte. En Svelte 5 puedes usar runes como $state, pero a Formpaste solo le importa el POST, así que usa el estilo que ya siga tu proyecto.

Cómo funciona

Tres pasos simples para que los envíos de formularios lleguen a tu bandeja de entrada.
Crea tu formulario, apunta la URL de action al endpoint de Formpaste y añade tu clave de acceso.

1

Crea tu formulario

Regístrate, verifica tu correo y crea una clave de acceso en tu panel.

2

Copia el código

Pega el fragmento de arriba en tu proyecto. Elige CSS o Tailwind para que combine con tu sitio.

<script lang="ts">
  let status: "idle" | "sending" | "ok" | "error" = "idle";

  async function onSubmit(e: SubmitEvent) {
    status = "sending";
    const form = new FormData(e.target as HTMLFormElement);
    const res = await fetch("https://api.formpaste.com/submit", { method: "POST", body: new URLSearchParams(form as any) });
    status = res.ok ? "ok" : "error";
  }
</script>

{#if status === "ok"}
  <p>Thanks - your message was sent.</p>
{:else}
  <form on:submit|preventDefault={onSubmit} class="mx-auto flex w-full max-w-md flex-col gap-4 rounded-xl border border-gray-200 bg-white p-6 shadow-sm dark:border-gray-800 dark:bg-gray-950">
  <input type="hidden" name="access_key" value="YOUR_ACCESS_KEY_HERE">
  <label class="flex flex-col gap-1.5 text-sm font-medium text-gray-900 dark:text-gray-100">Nombre
    <input type="text" name="name" placeholder="Tu nombre" required class="rounded-md border border-gray-300 bg-white px-3 py-2 text-sm text-gray-900 shadow-sm outline-none focus-visible:ring-2 focus-visible:ring-gray-900 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-100 dark:focus-visible:ring-gray-100" />
  </label>
  <label class="flex flex-col gap-1.5 text-sm font-medium text-gray-900 dark:text-gray-100">Correo electrónico
    <input type="email" name="email" placeholder="tu@ejemplo.com" required class="rounded-md border border-gray-300 bg-white px-3 py-2 text-sm text-gray-900 shadow-sm outline-none focus-visible:ring-2 focus-visible:ring-gray-900 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-100 dark:focus-visible:ring-gray-100" />
  </label>
  <label class="flex flex-col gap-1.5 text-sm font-medium text-gray-900 dark:text-gray-100">Mensaje
    <textarea name="message" required class="min-h-28 rounded-md border border-gray-300 bg-white px-3 py-2 text-sm text-gray-900 shadow-sm outline-none focus-visible:ring-2 focus-visible:ring-gray-900 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-100 dark:focus-visible:ring-gray-100"></textarea>
  </label>
    <button type="submit" class="w-full rounded-md bg-gray-900 px-4 py-2 text-sm font-medium text-white shadow-sm transition-colors hover:bg-gray-800 disabled:opacity-60 dark:bg-white dark:text-gray-900 dark:hover:bg-gray-200" disabled={status === "sending"}>Enviar</button>
    {#if status === "error"}<p>Something went wrong. Please try again.</p>{/if}
  </form>
{/if}
3

Añade tu clave de acceso

Reemplaza el marcador por tu clave de acceso para empezar a recibir envíos.

<input type="hidden" name="access_key" value="YOUR_ACCESS_KEY_HERE">

Formularios de contacto para Svelte FAQ

Pega un formulario. Recibe envíos.

Al instante, sin configurar ningún backend, servidor ni base de datos. 250 envíos/mes gratis, sin tarjeta de crédito.

Lo que obtienes con Formpaste

Sin servidor, sin DNS

Apunta tu formulario a Formpaste: sin backend, sin DNS, sin servidor de correo que mantener.

Spam filtrado automáticamente

Heurísticas más una carpeta de cuarentena que tú controlas. Los mensajes reales siempre llegan.

Cuarentena que tú controlas

Los envíos sospechosos llegan a una carpeta que revisas: nada se descarta en silencio.

Creado para agentes de IA

Un servidor MCP que tu agente de código llama para crear un formulario y configurarlo.

Componentes para copiar y pegar

Código de formulario accesible para copiar y pegar en HTML, React, TypeScript, JavaScript y Astro.

Panel sencillo

Gestiona formularios, bandeja de entrada, cuarentena y entrega desde un solo lugar.

Mas formularios de Svelte

Otras plataformas