Skip to content

Template Analytics

Opened from a row on the Templates page — completion rate, time-to-sign, and per-field drop-off for one template.

Endpoint summary

Method Path Summary
GET /organization/v1/templates/{templateId}/analytics Completion rate + status counts
GET /organization/v1/templates/{templateId}/analytics/full Above + time-to-sign in one call
GET /organization/v1/templates/{templateId}/time-to-sign Time-to-sign distribution
GET /workflow/v1/templates/{templateId}/field-drop-off Per-field completion/drop-off
POST /workflow/v1/field-events Ingest signing-interaction events (feeds drop-off)

Completion rate

GET /organization/v1/templates/42/analytics
{
  "templateId": 42,
  "templateName": "Standard NDA",
  "completionRate": 0.82,
  "counts": { "total": 120, "completed": 98, "void": 6, "inProgress": 14, "draft": 2, "other": 0 }
}

GET /organization/v1/templates/{templateId}/analytics/full returns the same thing plus time-to-sign stats in a single response — use this if the page renders both charts together.

Time to sign

GET /organization/v1/templates/42/time-to-sign
{
  "templateId": 42,
  "templateName": "Standard NDA",
  "sampleSize": 98,
  "avgHours": 6.4,
  "medianHours": 2.1,
  "p90Hours": 18.7,
  "distribution": { "under1h": 40, "under1d": 35, "under3d": 15, "under7d": 6, "over7d": 2 }
}

Field drop-off

GET /workflow/v1/templates/42/field-drop-off

Returns per-field completion/drop-off rates — which specific field on the template causes people to abandon signing:

{
  "templateId": 42,
  "templateName": "Standard NDA",
  "fields": [
    { "placeholderKey": "signature-1", "fieldType": "SIGNATURE", "pageNo": 1, "label": "Client Signer", "reached": 118, "completed": 98, "dropOffRate": 0.17, "lowSample": false, "confusionRecoveries": 4 }
  ],
  "totalSessions": 120,
  "collectingSince": "2026-05-01T00:00:00Z"
}

This is computed from telemetry the signing UI sends as recipients interact with fields:

POST /workflow/v1/field-events
Content-Type: application/json

{
  "sessionId": "b6e2...",
  "workflowId": 887,
  "documentId": 1200,
  "events": [
    { "fieldId": 5501, "type": "FIELD_VIEWED", "at": "2026-08-01T09:30:01Z" },
    { "fieldId": 5501, "type": "FIELD_FILLED", "at": "2026-08-01T09:30:14Z" }
  ]
}

type is one of SESSION_START, FIELD_VIEWED, FIELD_FOCUSED, FIELD_GLANCED, FIELD_FILLED, SUBMITTED. Always returns 202 Accepted with { "ingested": 2, "skipped": 0 } — malformed individual events are silently skipped, not rejected as a batch. This call is made by the signing UI itself (see Sending & Signing), not something you'd typically call directly unless building a custom signing client.