Webhooks List
| Webhook Name | Event type | Description | Payload |
|---|---|---|---|
| Orders webhook | order_status_changed | An order's rolled-up status has changed. | Order status changed payload |
| Orders webhook | order_rejection_created | A 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 webhook | partner_uploaded_document | A partner-visible document was created on the order via the headless partner API (partner-initiated upload). | Partner uploaded document payload |
| Orders webhook | agent_upload_document | A 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 webhook | order_service_added | Swyft 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_serviceslists the services SwyftFilings staff added to a Foreign Qualification order after it was created (cancelled ones are removed), each in the same shape as thepricingentries 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
orderobject by key prefix — e.g.business_data.business_numberis nested insidebusiness_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_statusare one ofCreated,In Progress,Action Required,On Hold,Completed, orCancelled. Services that need a separate submit step (for exampleincorporation-package) sendnull→Createdwhen the order is created andCreated→In Progresswhen it is submitted. Services that are complete at creation start directly atIn Progress.Required files: When a service requires a supporting file (a
documentinput field flagged required) and it is missing after order creation, the order moves toAction Requiredand this webhook fires withnew_status: "Action Required". The missing document appears as an entry underrequired_actions.rejections, whosereasonnames the document. Upload the file viaPOST {baseUrl}/orders/{order_uuid}/documentswithfield_keyset to the document field'skey; once every required file is provided the order leavesAction Requiredand 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 inAction Required. A package order whose post-checkout data is still missing when it is submitted sendsCreated→Action Requiredinstead ofCreated→In Progress. Once you answer the questionnaire through the API, the order leavesAction Requiredand 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_statusis the numeric ID of the newly created rejection. Look it up underorder.required_actions.rejectionsin theorderobject (same shape as Order status changed payload) for itsfield,reason, andmessage.
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_statusis the uploaded document's UUID. Match it againstuuidinorder.documentsto look up that specific file'sname,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_statusis the document's UUID. Match it againstuuidinorder.documentsto look up that specific file'sname,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_statusis the added service's slug — the sameslugvalues returned byGET /service-carts(for exampledba-filing,certificate-of-good-standing,certified-copy). If a service has no slug, its display name is sent instead. Theorderobject is the Foreign Qualification order the service was added to. Itsadditional_order_servicesarray already includes the new service (alongside any added earlier), so you can reconcile added services from this payload alone.