# GitHub Issues

Abre un issue de GitHub con cada envío.

## GitHub Issues

Convierte los envíos en GitHub issues de forma automática. Cada envío crea un issue en el repositorio que elijas, con un título, cuerpo e hito personalizados.

<h2 id="what-you-get">Qué obtienes</h2>

<ul>
  <li>Un GitHub issue por envío, atribuido al usuario que realizó la conexión</li>
  <li>
    Título y cuerpo construidos desde un editor de plantillas — escribe <strong>@</strong> para insertar el valor de cualquier campo del
    formulario
  </li>
  <li>El cuerpo admite markdown estilo GitHub (negrita, listas, encabezados, bloques de código, enlaces)</li>
  <li>Hito predeterminado opcional aplicado a cada issue</li>
  <li>
    Botón de prueba que crea un issue real con prefijo <code>[Test]</code> para que puedas verificar antes de publicar
  </li>
</ul>

<h2 id="connect">Conectar GitHub</h2>

<h2 id="abandoned-responses">Eventos de respuestas abandonadas</h2>

<p>
  Cuando un respondente empieza tu formulario pero no lo termina, Formstep puede crear un issue aparte con los datos parciales. Ajusta{' '}
  <strong>Enviar evento abandonado después de</strong> a 12 horas, 1 día, 3 días o 1 semana, y luego completa el título y el cuerpo del
  issue de abandono — ninguno puede quedar vacío. Los issues de abandono reciben la etiqueta <code>partial-submission</code>, creada la
  primera vez que se usa.
</p>

<p>
  Una revisión cada hora busca borradores inactivos, así que el issue aparece en la primera revisión después de que pase la ventana. Solo se
  revisan los borradores de un enlace de compartir, y <strong>Campos requeridos</strong> lo acota más: el issue solo se crea cuando se ha
  rellenado al menos uno de los campos que elijas.
</p>

> ℹ️ **Función Pro**
> <p>
>     La entrega de respuestas abandonadas requiere un plan Pro o Business. La integración principal de GitHub Issues está disponible en todos
>     los planes. Consulta <a href="/es/subscription-billing/plans-pricing">planes y precios</a>.
>   </p>

<h2 id="tokens">Tokens</h2>

<p>
  Los tokens de OAuth App de GitHub <strong>no caducan</strong> — no hay rotación de tokens de actualización. Si revocas el acceso desde la
  página de OAuth Apps autorizadas de tu cuenta de GitHub, el siguiente envío falla, Formstep marca la credencial como expirada y recibes un
  correo de notificación de error. Vuelve a conectar desde la página de Integraciones del espacio de trabajo para restaurarlo.
</p>

<h2 id="removing">Eliminar la integración</h2>

<ul>
  <li>
    <strong>Desde Formstep</strong> — Configuración del formulario → Integraciones → GitHub Issues → Eliminar. Los nuevos envíos dejan de
    crear issues de inmediato.
  </li>
  <li>
    <strong>Desde GitHub</strong> — Revoca el acceso OAuth desde la página de OAuth Apps autorizadas de tu cuenta. Formstep no revoca
    automáticamente el token por su parte.
  </li>
</ul>

<h2 id="limits">Límites y comportamiento</h2>

<ul>
  <li>Un issue por envío — no hay modo de comentar en un issue existente</li>
  <li>Sin retroactividad — solo los nuevos envíos crean issues</li>
  <li>El título es texto plano, truncado con puntos suspensivos a partir de 256 caracteres; el cuerpo es solo markdown</li>
  <li>
    Si el título queda vacío, se usa <code>New submission to &lt;form name&gt;</code>
  </li>
  <li>
    Las respuestas de carga de archivos se muestran como el nombre del archivo seguido de su enlace de descarga, de manera que el archivo es
    accesible desde el issue
  </li>
  <li>
    Las respuestas se insertan en el cuerpo del issue tal cual — si una respuesta contiene <code>@usuario</code>, GitHub notifica a ese
    usuario, y <code>#123</code> crea una referencia a un issue
  </li>
</ul>

<h2 id="faq">Preguntas frecuentes</h2>

  <p>
    Tres permisos de GitHub: <code>repo</code> (crear issues), <code>read:user</code> (identificar tu cuenta) y <code>read:org</code>{' '}
    (listar repositorios de la organización). Es una OAuth App estándar — no se requiere instalar una GitHub App.
  </p>

  <p>
    Sí. Las conexiones de GitHub tienen alcance de espacio de trabajo. Cualquier miembro del espacio de trabajo puede usar cualquier cuenta
    de GitHub conectada al configurar una integración.
  </p>

  <p>
    Sí. Abre el panel de detalles de la integración y cambia cualquiera de los dos campos. Cambiar de repositorio restablece el hito, ya que
    los hitos son específicos de cada repositorio.
  </p>

  <p>
    El siguiente envío falla con un error de "no encontrado" y la integración muestra un estado de error. Edita la integración para
    seleccionar un repositorio diferente.
  </p>

  <p>
    La integración se pausa automáticamente y se envía un correo a la persona que la configuró. Un token revocado, un permiso perdido o un
    repositorio eliminado no esperan a los cinco fallos — detienen la integración de inmediato. En cualquier caso, soluciona la causa y
    pulsa Reanudar.
  </p>

<h2 id="next-steps">Siguientes pasos</h2>
<div class="not-prose grid gap-3 sm:grid-cols-2">
  - [Descripción general para desarrolladores](/es/developers/overview) — API REST, webhooks y servidor MCP
  - [Planes y precios](/es/subscription-billing/plans-pricing) — Compara las funciones de Free, Pro y Business
</div>
