Skip to main content

Webhooks List

Webhook NameEvent typeDescriptionPayload
Orders webhookorder_status_changedAn order's rolled-up status has changed.Order status changed payload
Orders webhookorder_rejection_createdA new rejection was added to an order, independent of whether the rolled-up status above actually changed (e.g. a second rejection while already Action Required).Order rejection created payload
Orders webhookpartner_uploaded_documentA partner-visible document was created on the order via the headless partner API (partner-initiated upload).Partner uploaded document payload
Orders webhookagent_upload_documentA partner-visible document was created on the order by CRM staff or the system (auto-generated), as opposed to the partner itself.Agent uploaded document payload
Orders webhookorder_service_addedSwyft staff added a service (for example a DBA filing or Certificate of Good Standing) to an existing Foreign Qualification order.Order service added payload

Order status changed payload​

{
"event_id": "1234567890",
"event": {
"name": "order_status_changed",
"changed_field": "status",
"old_status": "In Progress",
"new_status": "Cancelled"
},
"order": {
"id": 1,
"uuid": "a746224f-d569-4aba-a271-4532259aba42",
"service": "incorporation-package",
"status": "Cancelled",
"submit_date": "2025-08-07",
"first_name": "Joe",
"last_name": "Doe",
"email": "[email protected]",
"phone_number": "314545456",
"consent_sms": false,
"affirmation_full_name": null,
"affirmation_title": null,
"created_at": "2025-08-07 08:49:37",
"updated_at": "2025-08-07 08:49:37",
"business_data": {
"name": "My biz",
"type": 1,
"type_name": "LLC",
"designator": "Inc",
"formation_state": "CA",
"formation_date": null,
"category": "541211",
"category_name": "Accounting",
"alternative_name": null,
"description": null,
"address": null,
"city": null,
"state": null,
"zip": null,
"address_complement": null,
"managed_by": null,
"par_value": null,
"number_of_shares": null,
"business_number": "456s4df"
},
"contact": {
"name": "Contact1",
"address": "dsfsadfasd"
},
"managers_data": [
{
"title": "Member",
"full_name": "sdfsadf",
"address": "some address",
"city": "acity",
"state": "CA",
"zip": "456453",
"address_complement": "office 101",
"is_company": false
},
...
],
"registered_agent_provider": "Other",
"registered_agent": {
"name": "some name",
"address": "",
"city": "",
"state": null,
"zip": "",
"phone": "",
"email": "email"
},
"order_items": [
{
"submitted_at": "2025-08-07 08:49:37",
"type": "sale",
"items": [
"SF_1180_SG_0",
"SF_1014_SG_0",
"SF_1025_SG_0",
"SF_1031_SG_0",
"SF_1036_SG_0",
"SF_1041_SG_0",
"SF_1042_SG_0",
"SF_1043_SG_0"
]
},
...
],
"additional_order_services": [],
"required_actions": {
"rejections": [
{
"id": 220742,
"field": "business_name",
"reason": "Your business name is too similar to another company already in business. Please provide us with a new business name to submit to the state.",
"message": "Use rejection answer EP to answer rejection."
},
{
"id": 220743,
"field": "state_specific.veteran_verification_document",
"reason": "A required document is missing: Upload veteran Verification Document",
"message": "Upload the requested document via the documents EP to answer this rejection"
}
],
"questionnaires": [],
"alerts": []
}
}
}

Note: The order details are the same as the Get Order response.

Services: additional_order_services lists the services SwyftFilings staff added to a Foreign Qualification order after it was created (cancelled ones are removed), each in the same shape as the pricing entries from Get Service Configuration (GET /service-carts/{service}), priced from the current catalog for the state selected when each service was added. It is [] for every other service and for Foreign Qualification orders with no added services.

Note: Partner-defined input field values are merged into the order object by key prefix — e.g. business_data.business_number is nested inside business_data, while a prefix with no matching object (e.g. contact.name) creates that object on the order. Keys without a dot are returned as flat fields on the order.

Status values: old_status / new_status are one of Created, In Progress, Action Required, On Hold, Completed, or Cancelled. Services that need a separate submit step (for example incorporation-package) send null → Created when the order is created and Created → In Progress when it is submitted. Services that are complete at creation start directly at In Progress.

Required files: When a service requires a supporting file (a document input field flagged required) and it is missing after order creation, the order moves to Action Required and this webhook fires with new_status: "Action Required". The missing document appears as an entry under required_actions.rejections, whose reason names the document. Upload the file via POST {baseUrl}/orders/{order_uuid}/documents with field_key set to the document field's key; once every required file is provided the order leaves Action Required and this webhook fires again. See Upload Order Documents.

Questionnaires: An open questionnaire under required_actions.questionnaires (for example the post-checkout or the S Corp Election questionnaire) also keeps the order in Action Required. A package order whose post-checkout data is still missing when it is submitted sends Created → Action Required instead of Created → In Progress. Once you answer the questionnaire through the API, the order leaves Action Required and this webhook fires. See Complete the post-checkout questionnaire and Answer the S Corp Election questionnaire through the API.

Order rejection created payload​

Fires immediately whenever a qualifying rejection is created on an order, independent of whether order_status_changed also fires (e.g. a second rejection while the order is already Action Required).

{
"event_id": "1234567891",
"event": {
"name": "order_rejection_created",
"changed_field": "rejection",
"old_status": null,
"new_status": "220742"
},
"order": {
"...": "same shape as the Order status changed payload above"
}
}

Note: new_status is the numeric ID of the newly created rejection. Look it up under order.required_actions.rejections in the order object (same shape as Order status changed payload) for its field, reason, and message.

Partner uploaded document payload​

Fires whenever a partner-visible document is created on the order via the headless partner API — i.e. the partner itself uploaded the file (for example, via Upload Order Documents).

{
"event_id": "1234567892",
"event": {
"name": "partner_uploaded_document",
"changed_field": "documents",
"old_status": null,
"new_status": "a3f1c9d2-8b4e-4f2a-9e3d-1c6b7a2f9e10"
},
"order": {
"...": "same shape as the Order status changed payload above"
}
}

Note: new_status is the uploaded document's UUID. Match it against uuid in order.documents to look up that specific file's name, type, and other details — useful when the same filename is uploaded more than once.

Agent upload document payload​

Fires whenever a partner-visible document is created on the order by CRM staff or the system (e.g. an auto-generated document), as opposed to the partner itself.

{
"event_id": "1234567893",
"event": {
"name": "agent_upload_document",
"changed_field": "documents",
"old_status": null,
"new_status": "b7e2a4c1-3d5f-4e8a-9c2b-6f1a8d4e7c93"
},
"order": {
// same shape as the Order status change payload above
}
}

Note: new_status is the document's UUID. Match it against uuid in order.documents to look up that specific file's name, type, and other details — useful when the same filename is uploaded more than once.

Order service added payload​

Fires whenever Swyft staff add a service to an existing Foreign Qualification order after it was created — for example, a DBA filing or a Certificate of Good Standing needed to complete the filing. One event is sent per service added. Services included when the order was created do not fire this event.

{
"event_id": "1234567894",
"event": {
"name": "order_service_added",
"changed_field": "services",
"old_status": null,
"new_status": "dba-filing"
},
"order": {
"...": "same shape as the Order status changed payload above"
}
}

Note: new_status is the added service's slug — the same slug values returned by GET /service-carts (for example dba-filing, certificate-of-good-standing, certified-copy). If a service has no slug, its display name is sent instead. The order object is the Foreign Qualification order the service was added to. Its additional_order_services array already includes the new service (alongside any added earlier), so you can reconcile added services from this payload alone.