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 eventidis stable: retries and manual resends deliver the same event with the sameidand payload. The one field that can change between deliveries is thefileUrlof adocument.uploadedevent, which is freshly signed on every delivery (details below) — so process eachidat most once, but treat a duplicate'sfileUrlas 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:
| Field | Type | Notes |
|---|---|---|
orderId | string | The order this filing belongs to (order_...) |
orderType | string | formation, ein, annual_report, registered_agent, or foreign_qualification |
filingStatus | string | submitted, pending, filed, exception, or cancelled |
filingDate | string | null | ISO datetime; set when filingStatus is filed, otherwise null |
createdAt | string | When the order was created |
subscriptionStatus | string | null | active, canceled, or past_due for subscription products (annual report, registered agent); null otherwise |
filingType | string | Only on registered_agent orders: change_of_agent when the filing is an agent change |
exceptionCode | string | null | Set when filingStatus is exception — see the exception codes table |
exceptionReason | string | null | Human-readable explanation of the exception code |
exceptionMessage | string | null | Free-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 pipelinepending— the filing is with the state, awaiting processingfiled— accepted by the state;filingDateis set, and documents typically follow asdocument.uploadedeventsexception— the state or filing team needs something; check the exception fieldscancelled— 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.
| Field | Type | Notes |
|---|---|---|
orderId | string | The order the document belongs to |
documentId | string | Use with GET /documents/{documentId} (doc_...) |
documentType | string | Document category: articles_of_organization, articles_of_incorporation, annual_report, ein, registered_agent, change_of_agent, certificate_of_good_standing, foreign_qualification, or company |
fileName | string | |
fileType | string | MIME type |
fileUrl | string | Presigned download URL — expires after 1 hour |
createdAt | string |
{
"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.