# Axiom

Transmite eventos de analíticas del formulario y, de forma opcional, las respuestas completas de los encuestados a un dataset de Axiom.

> ℹ️ **Available on the Free plan.**


## Axiom

Consulta los eventos en bruto del formulario con APL, crea dashboards y monitores, y opcionalmente envía las respuestas completas.

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

<p>
  Las dos regiones disponibles son <strong>US East 1 (AWS)</strong> y <strong>EU Central 1 (AWS)</strong>. Elige aquella en la que vive tu
  organización de Axiom — Formstep deriva de ahí el endpoint de ingestión, y ingerir en la región equivocada se rechaza.
</p>

<h2 id="event-stream">Eventos de analíticas</h2>

<p>
  Conectar Axiom activa el reenvío de eventos sin respuestas para cada formulario del espacio de trabajo. Los registros usan los nombres de
  evento <code>form_view</code>, <code>form_engaged</code> y <code>form_submit</code>, con los mismos parámetros documentados en{' '}
  <a href="/es/integrations/analytics-streaming#event-contract">Streaming de analíticas</a>.
</p>

<pre>
  <code>{`['your-dataset']
| where ['event'] in ('form_view', 'form_engaged', 'form_submit')
| summarize events=count() by ['event']`}</code>
</pre>

<p>
  Cada registro aplana los parámetros del evento a nivel superior, de modo que <code>form_id</code>, <code>source</code>,{' '}
  <code>device</code> y el resto son columnas normales que puedes filtrar y resumir.
</p>

<p>
  El reenvío de eventos es best-effort y no se reintenta. Desactívalo para un formulario en{' '}
  <strong>Configuración del formulario → Integraciones → Streaming de analíticas → Reenviar eventos de analíticas</strong>.
</p>

<h2 id="answers">Respuestas de los encuestados</h2>

<p>
  Axiom también puede recibir un registro completo por cada respuesta completada. Este flujo está <strong>desactivado por defecto</strong> y
  debe habilitarse por separado para cada formulario con <strong>Enviar respuestas del encuestado</strong>.
</p>

<p>
  Un registro de respuesta es el mismo sobre de evento que recibe un <a href="/es/integrations/webhooks">webhook personalizado</a>, más un
  campo <code>_time</code> de Axiom: el id del evento, el tipo, <code>createdAt</code>, <code>apiVersion</code> y <code>test</code>, y bajo{' '}
  <code>data</code> el formulario, la respuesta (id, correo del encuestado, hora de envío, enlace del PDF, idioma), un objeto{' '}
  <code>answers</code> indexado por <a href="/es/requests/field-keys">clave de campo</a> y un objeto <code>display</code> con las mismas
  claves como texto legible. Las respuestas que contestaron una solicitud también llevan un bloque <code>request</code> con tu id externo y
  metadatos. La forma completa está en la <a href="/es/developers/webhooks-reference#payload">referencia de webhooks</a>.
</p>

<p>
  Las respuestas se transmiten cuando un envío se completa y de nuevo cuando un encuestado lo edita. Los borradores abandonados nunca llegan
  a Axiom por esta vía — el streaming de respuestas no tiene ventana de inactividad.
</p>

> ⚠️ **Los registros de respuestas contienen datos personales**
> <p>
>     Una respuesta completa puede contener nombres, correos, texto libre, archivos, firmas y otras respuestas sensibles. Usa un dataset
>     restringido, mantén el alcance del token acotado, y define reglas de retención/acceso antes de habilitar este flujo.
>   </p>

<h2 id="delivery">Entrega de respuestas y fallos</h2>

<p>
  Los registros de respuestas usan la cola de entrega de envíos: hasta 5 intentos con retroceso exponencial. Tras 20 fallos consecutivos, el
  destino deja de encolarse, de modo que un token inválido o un dataset rechazado no genere una entrega fallida por cada respuesta nueva.
  Guardar un nuevo API token borra el error y reanuda la entrega.
</p>

<p>
  El reenvío de eventos y el streaming de respuestas tienen interruptores independientes. Puedes enviar respuestas sin eventos, eventos sin
  respuestas, ambos, o ninguno para cada formulario.
</p>

<h2 id="troubleshooting">Solución de problemas</h2>

<h2 id="next-steps">Próximos pasos</h2>

<div class="not-prose grid gap-3 sm:grid-cols-2">
  - [Streaming de analíticas](/es/integrations/analytics-streaming) — Esquema compartido, valores por defecto y privacidad
  - [Salud de la integración](/es/integrations/health-monitoring) — Entiende los reintentos y la pausa automática
</div>
