FileForms
Webhooks

Event Catalog

The envelope and payload of every webhook event FileForms sends.

Envelope

Every delivery shares the same envelope:

{
  "id": "evt_a1b2c3d4e5f6g7h8",
  "type": "filing.status_changed",
  "createdAt": "2026-07-29T12:00:00.000Z",
  "data": { ... }
}

Two things to build around:

  • Deduplicate on id. The event id is stable: retries and manual resends deliver the same event with the same id and payload. The one field that can change between deliveries is the fileUrl of a document.uploaded event, which is freshly signed on every delivery (details below) — so process each id at most once, but treat a duplicate's fileUrl as a replacement download link rather than discarding it.
  • Fan-out creates distinct events. When multiple endpoints subscribe to the same event type, each endpoint receives its own event with its own id.

filing.status_changed

Sent when a filing progresses. data varies by orderType:

FieldTypeNotes
orderIdstringThe order this filing belongs to (order_...)
orderTypestringformation, ein, annual_report, registered_agent, or foreign_qualification
filingStatusstringsubmitted, pending, filed, exception, or cancelled
filingDatestring | nullISO datetime; set when filingStatus is filed, otherwise null
createdAtstringWhen the order was created
subscriptionStatusstring | nullactive, canceled, or past_due for subscription products (annual report, registered agent); null otherwise
filingTypestringOnly on registered_agent orders: change_of_agent when the filing is an agent change
exceptionCodestring | nullSet when filingStatus is exception — see the exception codes table
exceptionReasonstring | nullHuman-readable explanation of the exception code
exceptionMessagestring | nullFree-text detail from the filing team, when available
{
  "id": "evt_a1b2c3d4e5f6g7h8",
  "type": "filing.status_changed",
  "createdAt": "2026-07-29T12:00:00.000Z",
  "data": {
    "orderId": "order_x9y8z7w6v5u4t3s2",
    "orderType": "formation",
    "filingStatus": "filed",
    "filingDate": "2026-07-29T11:58:31.000Z",
    "createdAt": "2026-07-25T09:12:44.000Z",
    "subscriptionStatus": null,
    "exceptionCode": null,
    "exceptionReason": null,
    "exceptionMessage": null
  }
}

What each status means:

  • submitted — FileForms accepted the order and it's in the filing pipeline
  • pending — the filing is with the state, awaiting processing
  • filed — accepted by the state; filingDate is set, and documents typically follow as document.uploaded events
  • exception — the state or filing team needs something; check the exception fields
  • cancelled — the order was cancelled

filed and cancelled are terminal. An exception is not — once resolved, the filing continues and you'll receive further status changes.

document.uploaded

Sent when a document becomes available on an order: filed articles, state confirmations, registered agent mail, EIN letters.

FieldTypeNotes
orderIdstringThe order the document belongs to
documentIdstringUse with GET /documents/{documentId} (doc_...)
documentTypestringDocument category: articles_of_organization, articles_of_incorporation, annual_report, ein, registered_agent, change_of_agent, certificate_of_good_standing, foreign_qualification, or company
fileNamestring
fileTypestringMIME type
fileUrlstringPresigned download URL — expires after 1 hour
createdAtstring
{
  "id": "evt_h8g7f6e5d4c3b2a1",
  "type": "document.uploaded",
  "createdAt": "2026-07-29T12:00:00.000Z",
  "data": {
    "orderId": "order_x9y8z7w6v5u4t3s2",
    "documentId": "doc_q1w2e3r4t5y6u7i8",
    "documentType": "articles_of_organization",
    "fileName": "articles-of-organization.pdf",
    "fileType": "application/pdf",
    "fileUrl": "https://bucket.s3.us-east-1.amazonaws.com/document.pdf?X-Amz-Signature=...",
    "createdAt": "2026-07-29T12:00:00.000Z"
  }
}

Download the file promptly or fetch a fresh URL from GET /documents/{documentId} — the fileUrl in the payload expires after an hour. Retried and resent deliveries reuse the same event id but carry a freshly signed fileUrl in the payload; it's the only field that changes between deliveries of the same event.

On this page