# Invitaciones, recordatorios y expiración

Deja que Formstep envíe por correo el enlace de solicitud, persiga a quienes dejan de responder, y cierre las solicitudes que se quedan obsoletas.

> ✅ **Pro feature** — included in the Pro plan.


## Invitaciones, recordatorios y expiración

Entregar el enlace, perseguir a quienes dejan de responder, y decidir cuándo una solicitud deja de merecer la espera.

> ℹ️ **Dos formas de entregar un enlace**
> <p>
>     Cada solicitud vuelve con una <code>url</code>. Puedes enviarla tú mismo — en tu propio correo, un mensaje de Slack, un SMS — o pedirle
>     a Formstep que la envíe por correo. Enviarla tú mismo funciona en cualquier plan. Que Formstep envíe invitaciones y recordatorios
>     requiere un <strong>plan Pro o Business</strong>; una cuenta Free puede hacer que Formstep envíe por correo sus primeras 10 invitaciones
>     para probarlo (consulta las <a href="/es/subscription-billing/limits-quotas#free-invitations">invitaciones gratis</a>).
>   </p>

<h2 id="invitation">La invitación de solicitud</h2>

<p>
  Crea una solicitud con <code>delivery: "email"</code> y una dirección de correo del destinatario, y Formstep envía la{' '}
  <strong>invitación de solicitud</strong>: un correo breve con un botón que abre el enlace de la solicitud.
</p>

<p>
  La redactas una vez por formulario, no una vez por solicitud. En el editor, abre <strong>Ajustes → Notificaciones por correo</strong> y
  baja hasta el grupo <strong>Solicitudes</strong> al final:
</p>

<p>
  No hay mensaje de texto libre por parte de quien llama — una automatización no puede insertar un párrafo en este correo. Lo que{' '}
  <em>sí</em> puede hacer es suministrar valores: menciona un campo de contexto o un campo precompletado en el asunto o el cuerpo y cada
  destinatario recibe su propia versión. Eso mantiene el texto bajo tu control mientras sigue leyéndose como si estuviera escrito para él.
</p>

> 💡 **Tradúcelo**
> <p>
>     Si el formulario tiene idiomas publicados, la invitación sigue el <code>language</code> de la solicitud. Traduce el texto del correo
>     junto con el resto del formulario — consulta{' '}
>     <a href="/es/building-forms/translating-form-content">Traducir el contenido del formulario</a>.
>   </p>

<h3 id="delivery-status">Estado de entrega</h3>

<ul>
  <li>
    La invitación se envía como máximo una vez. Se pone en cola, y se descarta sin enviar si la solicitud termina antes de que la cola
    llegue a ella — a nadie se le invita a un enlace muerto.
  </li>
  <li>
    Si nunca llegó, envía un recordatorio. <code>requests.remind</code> lleva el mismo enlace y cuenta contra el tope de ocho recordatorios.
    En Free, donde los recordatorios no están disponibles, copia el enlace de la solicitud y envíalo tú mismo.
  </li>
  <li>Las invitaciones y los recordatorios comparten un cupo de 10 correos al día por formulario y dirección de destinatario.</li>
</ul>

<h2 id="reminders">Recordatorios</h2>

<p>
  Un <strong>calendario de recordatorios</strong> es una lista ordenada de tiempos de inactividad — 1 día, 3 días, 1 semana — tras los que
  Formstep envía un correo a quien ha dejado de responder. Un solo calendario sirve a dos tipos de destinatario: un encuestado de enlace
  público sentado sobre un borrador sin terminar, y un destinatario de solicitud que no ha completado.
</p>

<p>
  Vive en <strong>Ajustes → Notificaciones por correo → Enviar recordatorios</strong>. Ese interruptor es el maestro: apágalo y ninguno de
  los dos canales recibe el calendario del formulario.
</p>

<h3 id="how-the-schedule-runs">Cómo funciona el calendario</h3>

<ul>
  <li>
    Los tiempos se miden desde la <strong>última actividad</strong> del destinatario, no desde la creación. Un calendario de 1 día luego 3
    días significa "un día inactivo, luego tres días inactivo".
  </li>
  <li>
    <strong>La nueva actividad lo reinicia.</strong> Si el destinatario abre la solicitud y responde algo, el reloj vuelve al primer paso.
  </li>
  <li>
    <strong>Se detiene por sí solo</strong> en cuanto la solicitud se completa, expira o se cancela.
  </li>
  <li>
    <strong>Una pasada se ejecuta cada 15 minutos</strong>, así que un recordatorio llega dentro de un cuarto de hora del momento en que
    vence el paso, no al segundo. Un calendario que se quedó muy atrás no se dispara de golpe: se respeta el intervalo que pusiste entre dos
    pasos.
  </li>
  <li>
    <strong>Ocho recordatorios es el tope máximo</strong> para una solicitud, contando los programados y los manuales juntos. La actividad
    puede reiniciar un calendario indefinidamente; esto es lo que evita que eso se convierta en un bucle.
  </li>
</ul>

<h3 id="per-request">Sustituirlo por solicitud</h3>

<p>
  Una automatización puede pasar su propio <code>reminders</code> al crear una solicitud — <code>["2d","5d"]</code> para un calendario
  propio, o una lista vacía para desactivar los recordatorios en esa solicitud. Un calendario explícito gana incluso sobre el interruptor
  maestro del formulario, porque quien lo pasó pidió recordatorios para esta solicitud en concreto.
</p>

<p>
  Omite <code>reminders</code> y la solicitud hereda el calendario del formulario, si el interruptor maestro está activado y la solicitud
  tiene una dirección de destinatario.
</p>

<h3 id="manual">Perseguir a alguien ahora</h3>

<p>
  No tienes que esperar al siguiente paso. <strong>Enviar recordatorio</strong> en el panel de la solicitud — o <code>requests.remind</code>{' '}
  desde una automatización — encola uno de inmediato. El calendario automático no se ve afectado: el siguiente recordatorio programado
  llegará igualmente cuando le tocaba.
</p>

<p>Se aplican dos límites: al menos diez minutos entre recordatorios manuales, y el mismo tope general de ocho por solicitud.</p>

<h2 id="expiry">Expiración</h2>

<p>
  Toda solicitud tiene un final estricto. Cuando llega, el enlace deja de funcionar, el estado pasa a <strong>expirada</strong>, y tu
  automatización se entera a través del callback — así un flujo de trabajo que llevaba un mes aparcado se reanuda en lugar de quedarse
  colgado para siempre.
</p>

<ul>
  <li>
    Predeterminado: <strong>30 días</strong> desde la creación.
  </li>
  <li>
    Máximo: <strong>365 días</strong>. Pasa <code>expiresAt</code> como una marca de tiempo en milisegundos para fijar la tuya.
  </li>
  <li>Después de expirar, el enlace muestra la página de resultado — un aviso simple, nunca el formulario.</li>
  <li>
    Una pasada revisa las solicitudes vencidas cada 15 minutos, así que el estado y el callback siguen a <code>expiresAt</code> dentro de un
    cuarto de hora. El enlace en sí deja de abrirse en el momento en que pasa la expiración.
  </li>
</ul>

```
{
  "method": "requests.create",
  "params": {
    "formId": "j57...",
    "recipient": { "email": "ada@acme.com", "name": "Ada" },
    "delivery": "email",
    "reminders": ["1d", "3d"],
    "expiresAt": 1795392000000,
    "callbackUrl": "https://automation.example/webhook/resume-abc"
  }
}
```

<div class="not-prose grid gap-3 sm:grid-cols-2">
  - [La página de Solicitudes](/es/requests/managing-requests) — Recuerda y cancela a mano.
  - [Solución de problemas](/es/requests/troubleshooting) — Cuando falla o rebota una invitación.
  - [Dominios de correo personalizados](/es/branding-domains/custom-email-domains) — Envía desde tu propio dominio.
</div>
