Gestiona los registros
Gestiona los registros
Cada registro de un formulario se persiste como un ConsentFormEntry. Esta guía cubre dónde encontrar los datos, qué se almacena y cómo procesar los registros en tu backend.
Qué se almacena
{
"id": "cfent_wAspvmEr4ACDZaPUtfwjsA",
"consent_form_id": "cform_wAspvmEr4ACDZaPUtfwjsA",
"consent_form_version": 2,
"subject_id": "ent_wAspvmEr4ACDZaPUtfwjsA",
"subject_type": "Entity",
"user_reference": "customer-123",
"consent_action_id": "consact_wAspvmEr4ACDZaPUtfwjsA",
"consent_commit_id": null,
"data": {
"full_name": "Jane Doe",
"email": "jane@soyio.id"
},
"created_at": "2024-03-20T15:30:00Z"
}
datacontiene los valores capturados, indexados por lakeyque definiste en cada campo.consent_action_idse usa cuando el registro tiene un solo consentimiento.consent_commit_idse usa cuando hay varios. Solo uno de los dos tendrá valor.consent_form_versionindica la versión exacta del formulario que firmó el usuario.subject_idapunta a laEntity(ent_*) oIdentity(id_*) del subject. Soyio crea automáticamente unaEntitysi no había una previa. Si el formulario tiene validación gubernamental habilitada, Soyio crea o reutiliza unaIdentitydespués de validar RUT y número de documento.
Los datos del formulario están sujetos a minimización. Captura solo los campos que realmente necesitas, y considera referenciar documentos legales en lugar de incluir texto extenso en los campos.
Consulta desde el dashboard
Abre Consentimiento > Formularios > Tu formulario para ver el resumen del formulario y la tabla de registros. El bloque Resumen muestra el total de registros del periodo seleccionado, los datos solicitados y las tasas de consentimiento completo y parcial. Usa Descargar CSV para exportar la tabla en cualquier momento.
Haz clic en una fila para abrir el drawer del registro, que reúne todo lo capturado en un solo lugar.
El drawer del registro incluye:
- Datos del sujeto: los valores enviados en cada campo del formulario.
- Sujeto: el
entity_id(oidentity_id) y su estado de vigencia. - Consentimientos: cada plantilla aceptada con su versión y estado (
Otorgado,Revocado). - Historial: los eventos asociados al registro, empezando por la submission del formulario.
- Exportar: descarga el detalle del registro individual.
Consulta desde la API
Listar registros
GET /api/v1/consent_form_entries?per_page=50&page=1
Esto retorna todos los registros de tu compañía. Para filtrar por un formulario específico, usa los filtros estándar:
GET /api/v1/consent_form_entries?filter[consent_form_id]=cform_<id>
Lee el detalle en indexConsentFormEntries.
Recuperar un registro
GET /api/v1/consent_form_entries/cfent_<id>
Actualizar user_reference
Si un registro llegó sin un identificador de tu sistema, puedes asociarlo a tu user_reference después:
{
"user_reference": "customer-123"
}
Solo el campo user_reference puede actualizarse después de creado el registro. El resto de los datos es inmutable para mantener la integridad de la evidencia.
Procesar registros en tiempo real
Cada registro actualiza el Agreement del subject y dispara los webhooks agreement.created o agreement.updated. Suscríbete desde Desarrolladores > Webhooks del dashboard para reaccionar inmediatamente al cambio de permisos: te llega el estado vigente del consentimiento, no las acciones individuales que tendrías que reconstruir.
Usa estos webhooks para:
- Crear el usuario en tu CRM con los datos capturados.
- Disparar emails de bienvenida o follow-up.
- Auditar el estado de consentimiento en tus sistemas internos.
El payload del webhook trae el Agreement actualizado, no los datos crudos del formulario. Para acceder a data, consulta el ConsentFormEntry correspondiente vía API a partir del entity_id u identity_id que viene en el agreement.
Revisa la guía de webhooks para detalles de configuración y verificación de firmas.
Linkear un registro a un usuario ya conocido
Si tu sistema ya tiene un ent_* o id_* para el usuario, puedes pasarlo al renderizar el formulario para que el registro quede asociado a ese subject existente en lugar de crear una Entity nueva.
- En el iframe SDK: configura
subjectId: 'ent_<entity_id>'al inicializar elConsentFormBox. - En la API directa: envía
subject_iden el body delPOST /consent_forms/:id/entries.
Solo puedes enlazar a subjects que ya pertenecen a tu compañía. Pasar un subject_id de otra compañía resulta en 404.
Centraliza el registro en un sujeto existente
subject_id cubre el caso en que ya sabes quién es el usuario antes de mostrarle el formulario. Cuando recién al recibir el registro logras identificarlo en tu sistema (cruzando email, RUT, teléfono o cualquier otro dato del formulario), puedes fusionar el sujeto recién creado en el sujeto que ya tenías para centralizar los permisos del usuario.
Es el caso típico de:
- Captación de leads que después descubres que ya eran clientes en tu CRM.
- Atenciones presenciales donde tu equipo identifica al usuario en el sistema después de que firmó el formulario.
- Onboardings donde el formulario se cierra antes de que tu backend complete la conciliación con tu base de usuarios.
Cómo se hace
Toma cualquiera de los datos capturados (email, nin, phone, etc.) y resuelve contra tu sistema cuál es el sujeto canónico. Luego llama al endpoint de fusión:
{
"canonical_subject": "id_<identity_canonica>",
"merged_subject": "ent_<entity_del_formulario>"
}
canonical_subject: el sujeto que queda vigente. Aceptaent_*oid_*.merged_subject: el sujeto que se fusiona. Aceptaent_*oid_*.
precedent_entity y merged_entity siguen soportados para integraciones existentes. Cuando una Identity participa en una fusión, Soyio la promueve como sujeto canónico.
Qué pasa con datos y permisos
- Se crea un nuevo
Agreementsobre el sujeto canónico que combina susdata_permissionscon las del sujeto fusionado. Elversion_sourcedel agreement queda apuntando alSubjectMerge, así la fusión es trazable en la auditoría. - El data vault se fusiona campo a campo: el sujeto canónico tiene prioridad. Los campos que tenía el sujeto fusionado y no el canónico se copian. Los
emailsse unen sin perder valores. - El sujeto fusionado queda marcado como fusionado y deja de ser un sujeto activo.
Validación gubernamental en formularios
Si activas validación gubernamental en el editor del formulario, Soyio agrega o exige dos campos: cl_carnet_rut y cl_carnet_doc_number. En el submit:
- Se crea un
ConsentFormValidationRequesty unValidationAttempt. - Si la validación falla, no se crea
ConsentFormEntry,ConsentAction,ConsentCommitniAgreement. - Si la validación es exitosa, el registro se asocia a una
Identity. - Si ya existía una
Entitypara eluser_reference, Soyio la fusiona automáticamente hacia laIdentitypara que los consentimientos no queden separados entreent_*eid_*.
Llamadas posteriores
Después de la fusión, llamar a cualquier endpoint con el token original del sujeto fusionado redirige automáticamente al sujeto canónico cuando el endpoint soporta subjects fusionados. La respuesta incluye metadata.subject_redirect para que tu sistema actualice referencias. En fusiones legacy Entity → Entity, también se incluye metadata.entity_redirect por compatibilidad:
{
"metadata": {
"subject_redirect": {
"requested_subject_id": "ent_mergedEntity123",
"resolved_subject_id": "id_canonicalIdentity123",
"merge_chain": ["ent_mergedEntity123", "id_canonicalIdentity123"]
}
}
}
La fusión es irreversible. Una merged_entity no se puede volver a fusionar ni separar. Verifica el match con tu sistema antes de llamar al endpoint.
Consulta los detalles completos en createSubjectMerge.
Consulta el estado de cumplimiento
Una vez creado el registro, el Agreement del usuario queda actualizado. Para verificar si el usuario cumple con un consentimiento específico, usa el endpoint estándar de ComplianceStatus:
GET /api/v1/entities/<entity_id>/agreement/compliance_statuses?consent_template_id=<consent_template_id>
Revisa la guía de consulta de consentimiento para los detalles de las respuestas posibles.
Revocaciones
Los consentimientos firmados a través de un formulario de consentimiento se revocan igual que cualquier otro consentimiento:
- Por API: usa
POST /consent_revocations. - Por usuario: habilita el Privacy Center para que el usuario gestione sus permisos.
El ConsentFormEntry permanece como evidencia histórica de que el usuario otorgó el consentimiento en algún momento, aunque el Agreement refleje la revocación posterior.
Próximos pasos
- Webhooks - Procesa registros en tiempo real
- Consulta los consentimientos - Verifica cumplimiento por usuario
- Privacy Center - Habilita la gestión por usuario
createSubjectMerge- Fusiona registros en sujetos existentes