Seguimiento del Ciclo de Vida del Documento y del Destinatario con Suscripciones
Utilice suscripciones GraphQL para recibir actualizaciones en tiempo real del ciclo de vida, tales como:
- creación de documentos
- creación del PDF final
- rechazo del documento
- envío de correo electrónico al destinatario
- visita del destinatario
- finalización por parte del destinatario
- rechazo por parte del destinatario
- apertura del correo electrónico por el destinatario
Para el contrato general del payload, consulte:
Feeds y Categorías
Los eventos del ciclo de vida normalmente se entregan en:
subscribeGroupFeed
Algunos eventos del ciclo de vida también pueden ser distribuidos a:
subscribeUserFeed
Categorías:
documentLifecyclerecipientLifecycle
Nombres de Eventos
Ciclo de vida del documento
documentCreateddocumentFinalPdfCreateddocumentRejected
Ciclo de vida del destinatario
recipientSentEmailrecipientVisitingrecipientCompletedrecipientRejectedrecipientEmailOpened
Formas del Payload
Ciclo de vida del documento
{
"version": "1.0",
"eventId": "evt...",
"timestamp": "2026-04-24T10:38:36.822Z",
"level": "INFO",
"event": "documentCreated",
"category": "documentLifecycle",
"groupId": "grp...",
"userId": "usr...",
"requestId": null,
"batchId": null,
"error": null,
"data": {
"id": "doc...",
"documentName": "Example document"
}
}
Ciclo de vida del destinatario
{
"version": "1.0",
"eventId": "evt...",
"timestamp": "2026-04-24T10:38:36.822Z",
"level": "INFO",
"event": "recipientVisiting",
"category": "recipientLifecycle",
"groupId": "grp...",
"userId": "usr...",
"requestId": null,
"batchId": null,
"error": null,
"data": {
"id": "rec...",
"documentId": "doc...",
"documentName": "Example document",
"firstName": "Ada",
"lastName": "Lovelace"
}
}
Operación de Suscripción
subscription SubscribeGroupFeed($groupId: String!) {
subscribeGroupFeed(groupId: $groupId) {
groupId
data
}
}
Ejemplo en JavaScript
const parseEnvelope = (payload) => {
const raw = payload?.data;
if (!raw) return null;
return typeof raw === 'string' ? JSON.parse(raw) : raw;
};
const handleGroupFeed = ({ data }) => {
const wrapper = data?.subscribeGroupFeed;
const event = parseEnvelope(wrapper);
if (event?.category === 'documentLifecycle') {
switch (event.event) {
case 'documentCreated':
case 'documentFinalPdfCreated':
case 'documentRejected':
console.log('document lifecycle event', event.event, event.data.id);
break;
default:
break;
}
}
if (event?.category === 'recipientLifecycle') {
switch (event.event) {
case 'recipientSentEmail':
case 'recipientVisiting':
case 'recipientCompleted':
case 'recipientRejected':
case 'recipientEmailOpened':
console.log('recipient lifecycle event', event.event, event.data.id);
break;
default:
break;
}
}
};
Cuándo Usar Esto
Esto es útil cuando se desea:
- actualizar una lista de documentos o un feed de actividad en tiempo real
- mostrar eventos de interacción del destinatario sin hacer polling
- reaccionar inmediatamente cuando un PDF final está listo
- impulsar notificaciones de flujo de trabajo en un panel de control