Exportar envíos
Descarga los envíos en CSV desde el panel, o exporta todos los envíos con la API REST.
CSV desde el panel
Abre Submissions, o la pestaña de envíos de un formulario, aplica los filtros que quieras y elige Export CSV. El archivo respeta los filtros de la pantalla.
| Filtro | Valores |
|---|---|
| Formulario | Un formulario o todos |
| Estado | Recibidos, spam o ambos |
| Rango de fechas | Últimas 24 horas, últimos 7 días, últimos 30 días o todo |
- Las columnas son
id,created_at,form,statusy luego una columna por campo. Para un solo formulario, primero van sus campos definidos y después cualquier otro nombre de campo encontrado en las filas exportadas. - Los arrays de valores simples se unen con una coma y un espacio. Los objetos se escriben como JSON.
- Los valores que empiezan con
=,+,-,@, un tabulador o un retorno de carro reciben un'delante, para que las hojas de cálculo no los ejecuten como fórmulas. - El archivo es UTF-8 con marca de orden de bytes, para que Excel abra bien los acentos.
- Una exportación incluye hasta 100 000 filas y 500 columnas de campos. Acota los filtros en espacios de trabajo más grandes, o usa la API.
Todo con la API REST
Para una copia de seguridad completa, una sincronización programada o más de 100 000 filas, recorre las páginas de la API REST con una clave secreta que tenga submissions:read. Las listas van de más reciente a más antiguo y se mantienen estables mientras llegan envíos nuevos.
export.ts
import { createWriteStream } from "node:fs";
import { createClient } from "@ikiform/sdk";
const ikiform = createClient({ apiKey: process.env.IKIFORM_SECRET_KEY! });
const out = createWriteStream("submissions.jsonl");
for await (const submission of ikiform.submissions.iterate({
formId: "frm_xxxxxxxxxxxxxxxx",
status: "received",
limit: 100,
})) {
out.write(`${JSON.stringify(submission)}\n`);
}
out.end();Cada clave puede hacer 100 peticiones por minuto. Con
limit: 100, son hasta 10 000 envíos por minuto. El iterador del SDK lanza un IkiformError con retryAfter ante un 429; espera esos segundos y continúa desde el último cursor.