Webhooks

Form completed

Sent to your endpoint when a respondent completes a form.

postWebhookform.completed

Payload

typestring required
versionstring required
timestampstring date-time required

Example payload

{
  "type": "form.completed",
  "version": "1",
  "timestamp": "2024-01-15T10:30:00Z",
  "data": {
    "form_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
    "form_name": "Customer Feedback",
    "share_id": "abc12345",
    "form_tags": [
      "sales",
      "vip"
    ],
    "response_id": "550e8400-e29b-41d4-a716-446655440000",
    "submitted_at": "2024-01-15T10:30:00Z",
    "verified": true,
    "session": {
      "device": "desktop",
      "browser": "Chrome",
      "country": "United States",
      "city": "San Francisco",
      "time_spent_seconds": 45
    },
    "responses": [
      {
        "node_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        "node_type": "choice",
        "prompt": "How did you hear about us?",
        "label": "Option A",
        "option_id": "opt-789"
      },
      {
        "node_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        "node_type": "open",
        "prompt": "How did you hear about us?",
        "text": "I loved it"
      },
      {
        "node_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        "node_type": "details",
        "prompt": "How did you hear about us?",
        "fields": [
          {
            "type": "email",
            "value": "jane@example.com"
          },
          {
            "type": "name",
            "value": "Jane Doe"
          }
        ],
        "consent": [
          {
            "name": "terms",
            "accepted": true,
            "type": "consent",
            "label": "I agree to the terms of service and privacy policy."
          },
          {
            "name": "nda",
            "accepted": true,
            "type": "consent",
            "label": "I agree to the mutual non-disclosure agreement.",
            "reached_end": true,
            "document_version": "2026-01-10T09:00:00.000Z",
            "accepted_at": "2026-01-15T10:30:00Z",
            "document": {
              "url": "https://example.com/consent/nda.pdf",
              "filename": "nda.pdf"
            }
          },
          {
            "name": "marketing",
            "accepted": false,
            "type": "opt_in",
            "label": "Send me product updates and marketing emails."
          }
        ]
      },
      {
        "node_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        "node_type": "draw",
        "prompt": "How did you hear about us?",
        "media": {
          "type": "image",
          "content_type": "image/png",
          "filename": "drawing.png",
          "url": "https://project-ref.supabase.co/storage/v1/object/sign/media-responses/path/to/file?token=example-token",
          "download_url": "https://project-ref.supabase.co/storage/v1/object/sign/media-responses/path/to/file?token=example-token&download=drawing.png",
          "expires_at": "2024-01-15T12:30:00Z"
        }
      },
      {
        "node_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        "node_type": "file_upload",
        "prompt": "How did you hear about us?",
        "files": [
          {
            "id": "6f4b2c1e-0d3a-4a2b-9c8d-1e2f3a4b5c6d",
            "filename": "report.pdf",
            "content_type": "application/pdf",
            "size": 102400,
            "uploaded_at": "2024-01-15T10:29:00Z",
            "url": "https://project-ref.supabase.co/storage/v1/object/sign/media-responses/path/to/file?token=example-token",
            "download_url": "https://project-ref.supabase.co/storage/v1/object/sign/media-responses/path/to/file?token=example-token&download=report.pdf",
            "expires_at": "2024-01-15T12:30:00Z"
          }
        ]
      },
      {
        "node_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        "node_type": "payment",
        "prompt": "How did you hear about us?",
        "provider": "stripe",
        "status": "succeeded",
        "amount": 5000,
        "currency": "usd",
        "payment_intent_id": "pi_3QexampleSampleIntent00",
        "charge_id": "ch_3QexampleSampleCharge00",
        "receipt_url": "https://pay.stripe.com/receipts/payment/sample-receipt",
        "receipt_number": "1234-5678",
        "customer": {
          "name": "Jane Doe",
          "email": "jane@example.com",
          "phone": "+15551234567",
          "address": {
            "line1": "123 Market St",
            "city": "San Francisco",
            "state": "CA",
            "postal_code": "94103",
            "country": "US"
          }
        }
      },
      {
        "node_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        "node_type": "file_download",
        "prompt": "How did you hear about us?",
        "files": [
          {
            "filename": "brochure.pdf",
            "content_type": "application/pdf",
            "downloaded_at": "2024-01-15T10:29:00Z",
            "url": "https://project-ref.supabase.co/storage/v1/object/sign/file-downloads/path/to/file?token=example-token",
            "download_url": "https://project-ref.supabase.co/storage/v1/object/sign/file-downloads/path/to/file?token=example-token&download=brochure.pdf",
            "expires_at": "2024-01-15T12:30:00Z"
          }
        ]
      },
      {
        "node_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        "node_type": "camera",
        "prompt": "How did you hear about us?",
        "files": [
          {
            "id": "6f4b2c1e-0d3a-4a2b-9c8d-1e2f3a4b5c6d",
            "filename": "photo.jpg",
            "content_type": "image/jpeg",
            "size": 512000,
            "uploaded_at": "2024-01-15T10:29:00Z",
            "url": "https://project-ref.supabase.co/storage/v1/object/sign/respondent-captures/path/to/file?token=example-token",
            "download_url": "https://project-ref.supabase.co/storage/v1/object/sign/respondent-captures/path/to/file?token=example-token&download=photo.jpg",
            "expires_at": "2024-01-15T12:30:00Z"
          }
        ]
      }
    ]
  }
}

Response

Acknowledged. Any 2xx response stops retries.

Changes

Webhooks have no change history: a webhook is keyed by its event name rather than a path and method, so no recorded change can name it.