Skip to content

Workflows

A workflow automates a sequence of steps for every contact enrolled in it. You build and publish workflows in the SMBcrm UI. With the API, you can list the workflows in your account, enroll a contact in one, and remove a contact from one.

Base URL: https://services.smbcrm.com · Version header: v3 · Scopes: workflows.readonly (list), contacts.write (enroll or remove a contact). See Scopes.

GET/workflows/

List the workflows in your SMBcrm account.

scope workflows.readonlyauth Location token or PIT

locationId is required as a query parameter and scopes the results to your account.

Query param Type Required Description
locationId string Yes The account (location) whose workflows to list.
Terminal window
curl "https://services.smbcrm.com/workflows/?locationId=<location_id>" \
-H "Authorization: Bearer <token>" \
-H "Version: v3"
200 OK
{
"workflows": [
{
"id": "<workflow_id>",
"name": "New Lead Nurture",
"status": "published",
"version": 2,
"createdAt": "2026-05-26T11:33:49.000Z",
"updatedAt": "2026-05-26T11:33:49.000Z",
"locationId": "<location_id>"
},
{
"id": "<workflow_id>",
"name": "Missed Call Follow-Up",
"status": "draft",
"version": 1,
"createdAt": "2026-06-02T16:20:10.000Z",
"updatedAt": "2026-06-02T16:20:10.000Z",
"locationId": "<location_id>"
}
]
}

Each workflow in workflows has these fields:

Field Type Description
id string The workflow ID. Use it to enroll or remove contacts.
name string The workflow’s name.
status string The workflow’s status, for example draft or published.
version number The workflow’s version number.
createdAt string When the workflow was created (ISO 8601).
updatedAt string When the workflow was last updated (ISO 8601).
locationId string The account (location) the workflow belongs to.

Save the id of the workflow you want. You’ll need it to enroll or remove contacts.

Once you have a workflow’s id, add a contact to it with this endpoint (it’s also listed on the Contacts page):

POST/contacts/{contactId}/workflow/{workflowId}

Enroll a contact in a workflow.

scope contacts.writeauth Location token or PIT

Send a JSON body with the request. The body can be an empty object.

Parameter In Type Required Description
contactId path string Yes The contact to enroll.
workflowId path string Yes The workflow to enroll the contact in.
eventStartTime body string No Start time of the workflow event, in ISO 8601 format.
Terminal window
curl -X POST https://services.smbcrm.com/contacts/<contact_id>/workflow/<workflow_id> \
-H "Authorization: Bearer <token>" \
-H "Version: v3" \
-H "Content-Type: application/json" \
-d '{}'

To pass an event time, include eventStartTime in the body:

Terminal window
curl -X POST https://services.smbcrm.com/contacts/<contact_id>/workflow/<workflow_id> \
-H "Authorization: Bearer <token>" \
-H "Version: v3" \
-H "Content-Type: application/json" \
-d '{ "eventStartTime": "2026-10-09T09:30:00-05:00" }'
200 OK
{ "succeeded": true }

The response can also include succeded, a legacy misspelling of succeeded. It’s deprecated, so read succeeded. Failed requests return 400, 401, or 422; see Errors.

DELETE/contacts/{contactId}/workflow/{workflowId}

Remove a contact from a workflow.

scope contacts.writeauth Location token or PIT

This endpoint takes the same path parameters, request body, and response as enrolling a contact. Send a JSON body with the request; it can be an empty object.

Parameter In Type Required Description
contactId path string Yes The contact to remove.
workflowId path string Yes The workflow to remove the contact from.
eventStartTime body string No Start time of the workflow event, in ISO 8601 format.
Terminal window
curl -X DELETE https://services.smbcrm.com/contacts/<contact_id>/workflow/<workflow_id> \
-H "Authorization: Bearer <token>" \
-H "Version: v3" \
-H "Content-Type: application/json" \
-d '{}'
200 OK
{ "succeeded": true }
  • Contacts. Enroll a contact in a workflow or campaign, tag contacts, and manage everything else about a contact record.
  • Locations. Look up the locationId for your account.