ROASFormDocs
WebhooksEvents

partial_lead

View as Markdown

A lead left contact details, then abandoned the form before finishing.

Fires when an identified lead abandons the form. Use it for re-engagement flows and to see where your form loses people; submission.lastSeenElement is the question they stopped on. Requires the form's partial capture setting to be enabled.

data

leadobject

The partially captured lead. Fields not yet answered are null. See shared objects.

submissionobject

The abandoned submission (status is partial, completedAtUtc and ending are null). Carries its own ending, answers, lastSeenElement, utmData, ipAddress, userAgent, and appliedTags. See the submission object.

reasonstring

What detected the abandon: browser_detection means the visitor's browser reported it (idle timer or tab close); server_detection means ROASForm's server-side check caught one the browser never reported.

Possible values
browser_detectionserver_detection
markAbandonedAfterSecondsnumber

The form's idle threshold in seconds; 60 when the form uses the default.

splitTestVariantnullable object

{ id, name } of the variant served, or null when the form has no running split test.

partial_lead
{
  "id": "5c9e2b74-1d8f-4a3c-b6e9-7f0a4d8c2b15",
  "event": "partial_lead",
  "webhookVersion": "2026-07-01",
  "createdAtUtc": "2026-07-28T14:31:05.338Z",
  "agency": {
    "id": "c1a2b3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
    "name": "Acme Marketing"
  },
  "subaccount": {
    "id": "7f3e9d21-4b8a-4c5e-9f60-2d8b1a7c3e54",
    "name": "Acme Fitness Client"
  },
  "form": {
    "id": "e8b4c672-9a1d-4f3b-b7c8-5d2e9f0a1b3c",
    "name": "Fitness Coaching Application",
    "url": "https://forms.roasform.com/fitness-coaching"
  },
  "data": {
    "lead": {
      "id": "3d9f7a25-6c1b-4e8d-a2f4-8b0c5d7e9f13",
      "name": "Jane Doe",
      "email": "jane@example.com",
      "phone": null,
      "company": null,
      "location": null,
      "tags": [],
      "timezone": "America/Chicago",
      "country": "US",
      "createdAtUtc": "2026-07-28T14:29:03.114Z"
    },
    "submission": {
      "id": "5a2c8e94-1f7d-4b3a-9e6c-4d8f0b2a6c71",
      "status": "partial",
      "qualification": "none",
      "score": 30,
      "startedAtUtc": "2026-07-28T14:26:40.207Z",
      "completedAtUtc": null,
      "ending": null,
      "lastSeenElement": {
        "elementId": "d2c8f5b1-7e4a-4d9c-a6f3-9b0e5d8c2a64",
        "label": "What are your goals?",
        "type": "multiple_choice",
        "value": null,
        "values": null,
        "score": null
      },
      "answers": [
        {
          "elementId": "b7e2f9a4-3c8d-4a1e-9f5b-6d0c2e8a4f17",
          "label": "What is your monthly budget?",
          "type": "single_choice",
          "value": "$2,000 - $5,000",
          "values": null,
          "score": 30
        },
        {
          "elementId": "a1d4c7f2-9b3e-4c6a-8d2f-5e9b1c4a7d30",
          "label": "What is your email?",
          "type": "email",
          "value": "jane@example.com",
          "values": null,
          "score": null
        }
      ],
      "appliedTags": [
        "abandoned"
      ],
      "utmData": {
        "utm_source": "facebook",
        "utm_medium": "cpc",
        "utm_campaign": "summer-2026"
      },
      "ipAddress": "203.0.113.42",
      "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 17_5 like Mac OS X) AppleWebKit/605.1.15"
    },
    "reason": "browser_detection",
    "markAbandonedAfterSeconds": 60,
    "splitTestVariant": {
      "id": "d6f1a8c3-2e9b-4a5d-8f7c-1b4e6a9d3c82",
      "name": "Variant B"
    }
  }
}