Skip to main content
images/spruce.svg

Events

Triggering Webhook Types

The following event types are associated with the Conversation Item event payload from Spruce.
  • Spruce Conversation Item Created
  • Spruce Conversation Item Updated
  • Spruce Conversation Item Deleted
  • Spruce Conversation Item Restored
{
  "api_url": "https://api.sprucehealth.com/v1/conversation-items/item_12345",
  "app_url": "https://app.sprucehealth.com/conversation-items/item_12345",
  "attachments": [
    {
      "data": {
        "mime_type": "application/pdf",
        "signed_url": {
          "expires_at": null,
          "url": null
        }
      },
      "title": "Lab Results.pdf"
    }
  ],
  "author": {
    "device_information": {
      "access_id": null,
      "app_version": "1.2.3",
      "device": "iPhone",
      "device_id": null,
      "device_model": "iPhone 13",
      "platform": "iOS"
    },
    "display_name": "Dr. Smith"
  },
  "buttons": [
    {
      "id": null,
      "state": "enabled",
      "text": "Confirm Appointment"
    }
  ],
  "can_delete": null,
  "contact": {
    "api_url": "https://api.sprucehealth.com/v1/contacts/contact_12345",
    "app_url": "https://app.sprucehealth.com/contacts/contact_12345",
    "can_delete": null,
    "can_edit": null,
    "category": "patient",
    "company_name": "ACME Healthcare",
    "created_at": null,
    "custom_contact_fields": [
      {
        "id": "entityCustomField_0E5QDGJC03000",
        "name": "Insurance Provider",
        "value": "Blue Cross Blue Shield"
      }
    ],
    "date_of_birth": "1990-01-15",
    "display_name": "John Doe",
    "email_addresses": [
      {
        "id": "entityContact_26RRC7PQ6JG00",
        "label": "primary",
        "value": "john.doe@example.com"
      }
    ],
    "fax_numbers": [
      {
        "display_value": "(555) 123-4567",
        "id": "entityContact_26RRC7PQ6JG00",
        "label": "mobile",
        "value": null
      }
    ],
    "first_name": "John",
    "gender": "male",
    "gender_detail": null,
    "has_account": null,
    "has_pending_invite": null,
    "id": "entity_0E5QDGJC03000",
    "integration_links": [
      {
        "contact_id": "entity_0E5QDGJC03000",
        "external_id": "ext_12345",
        "integration_type": "epic",
        "url": "https://hint.com/patient/100031277"
      }
    ],
    "internal_member_ids": [],
    "last_name": "Doe",
    "middle_name": "Smith",
    "object": "contact",
    "organization_contact_fields": [
      {
        "id": "managedCustomField_0E5QDGJC03000",
        "name": "Patient ID",
        "value": "PT12345"
      }
    ],
    "phone_numbers": [
      {
        "display_value": "(555) 123-4567",
        "id": "entityContact_26RRC7PQ6JG00",
        "label": "mobile",
        "value": null
      }
    ],
    "pronouns": "he/him",
    "tags": [
      {
        "id": "tag_0E5QDGJC03000",
        "value": "high-priority"
      }
    ]
  },
  "contact_id": "entity_0E5QDGJC03000",
  "conversation_id": "conv_12345",
  "created_at": null,
  "event": {
    "data": {
      "answered": null,
      "answered_by": {
        "external_number": null,
        "line_id": null,
        "teammate_id": null
      },
      "duration": "120",
      "failed": null,
      "initiated_by": {
        "external_number": null,
        "line_id": null,
        "teammate_id": null
      },
      "recordings": [
        {
          "mime_type": "application/pdf",
          "signed_url": {
            "expires_at": null,
            "url": null
          }
        }
      ],
      "spam": null,
      "voicemail": {
        "mime_type": "application/pdf",
        "signed_url": {
          "expires_at": null,
          "url": null
        }
      }
    },
    "type": "inboundCall"
  },
  "external_participant": {
    "contact": null,
    "display_names": "John Doe",
    "endpoint": {
      "channel": "sms",
      "display_value": "(555) 123-4567",
      "endpoint_id": null,
      "is_internal": null,
      "labels": "mobile",
      "object": "endpoint",
      "raw_value": {
        "email": "patient@example.com",
        "phone": "+15551231234",
        "value": "secure_channel_id"
      }
    }
  },
  "id": "item_12345",
  "is_internal_note": null,
  "modified_at": null,
  "object": "conversation-item",
  "pages": [
    {
      "id": null,
      "member_id": null,
      "resolved": null,
      "resolved_at": null,
      "resolved_by_member_id": null
    }
  ],
  "request_id": null,
  "text": "Hello, how can I help you today?"
}
{
  "api_url": "API URL for this conversation item.",
  "app_url": "App URL for this conversation item.",
  "attachments": {
    "data": {
      "mime_type": "MIME type of the attachment.",
      "signed_url": {
        "expires_at": "Timestamp when the signed URL expires.",
        "url": "The signed URL."
      }
    },
    "title": "Title of the attachment."
  },
  "author": {
    "device_information": {
      "access_id": "Access ID for the device.",
      "app_version": "App version used.",
      "device": "Device type.",
      "device_id": "Unique device identifier.",
      "device_model": "Device model.",
      "platform": "Platform (iOS, Android, web, etc.)."
    },
    "display_name": "Display name of the author."
  },
  "buttons": {
    "id": "Unique identifier for the button.",
    "state": "Current state of the button.",
    "text": "Text displayed on the button."
  },
  "can_delete": "Whether this conversation item can be deleted.",
  "contact": {
    "api_url": "API URL for this contact.",
    "app_url": "App URL for this contact.",
    "can_delete": "Whether this contact can be deleted.",
    "can_edit": "Whether this contact can be edited.",
    "category": "Contact category.",
    "company_name": "Company name associated with the contact.",
    "created_at": "Timestamp when the contact was created.",
    "custom_contact_fields": {
      "id": "Unique identifier for the custom field.",
      "name": "Name of the custom field.",
      "value": "Value of the custom field."
    },
    "date_of_birth": "Date of birth",
    "display_name": "Display name for the contact.",
    "email_addresses": {
      "id": "Unique identifier for the email address.",
      "label": "Label for the email address.",
      "value": "Email address value."
    },
    "fax_numbers": {
      "display_value": "Formatted display value for the phone number.",
      "id": "Unique identifier for the phone number.",
      "label": "Label for the phone number.",
      "value": "Phone number value."
    },
    "first_name": "Given name (first name) of the contact.",
    "gender": "Gender of the contact.",
    "gender_detail": "Additional gender details.",
    "has_account": "Whether the contact has a Spruce account.",
    "has_pending_invite": "Whether the contact has a pending invitation to Spruce.",
    "id": "Unique identifier for the contact in the Spruce system.",
    "integration_links": {
      "contact_id": "Contact ID in Spruce.",
      "external_id": "External system identifier.",
      "integration_type": "Type of integration.",
      "url": "URL to the external system."
    },
    "internal_member_ids": "Internal member IDs associated with this contact.",
    "last_name": "Family name (last name) of the contact.",
    "middle_name": "Middle name of the contact.",
    "object": "Object type identifier.",
    "organization_contact_fields": {
      "id": "Unique identifier for the organization field.",
      "name": "Name of the organization field.",
      "value": "Value of the organization field."
    },
    "phone_numbers": {
      "display_value": "Formatted display value for the phone number.",
      "id": "Unique identifier for the phone number.",
      "label": "Label for the phone number.",
      "value": "Phone number value."
    },
    "pronouns": "Preferred pronouns of the contact.",
    "tags": {
      "id": "Unique identifier for the tag.",
      "value": "Tag value."
    }
  },
  "contact_id": "Unique identifier for the contact in the Spruce system that is the external participant in this conversation, note: only present if the contact is present on the conversation",
  "conversation_id": "ID of the conversation this item belongs to.",
  "created_at": "Timestamp when the conversation item was created.",
  "event": {
    "data": {
      "answered": "Whether the call was answered.",
      "answered_by": {
        "external_number": "External phone number of the party.",
        "line_id": "Line ID used for the call.",
        "teammate_id": "Teammate ID if this is an internal party."
      },
      "duration": "Duration of the call in seconds.",
      "failed": "Whether the call failed.",
      "initiated_by": {
        "external_number": "External phone number of the party.",
        "line_id": "Line ID used for the call.",
        "teammate_id": "Teammate ID if this is an internal party."
      },
      "recordings": {
        "mime_type": "MIME type of the attachment.",
        "signed_url": {
          "expires_at": "Timestamp when the signed URL expires.",
          "url": "The signed URL."
        }
      },
      "spam": "Whether the call was marked as spam.",
      "voicemail": {
        "mime_type": "MIME type of the attachment.",
        "signed_url": {
          "expires_at": "Timestamp when the signed URL expires.",
          "url": "The signed URL."
        }
      }
    },
    "type": "The event type"
  },
  "external_participant": {
    "contact": "Contact ID of the external participant.",
    "display_names": "Display names for the external participant.",
    "endpoint": {
      "channel": "Communication channel type.",
      "display_value": "Human-readable display value.",
      "endpoint_id": "Unique identifier for the endpoint.",
      "is_internal": "Whether this is an internal endpoint.",
      "labels": "Labels associated with the endpoint.",
      "object": "Object type identifier.",
      "raw_value": {
        "email": "Email address value.",
        "phone": "Phone number value.",
        "value": "Secure channel identifier."
      }
    }
  },
  "id": "Unique identifier for the conversation item in the Spruce system.",
  "is_internal_note": "Whether this is an internal note (not visible to patients).",
  "modified_at": "Timestamp when the conversation item was last modified.",
  "object": "Object type identifier.",
  "pages": {
    "id": "Unique identifier for the page.",
    "member_id": "Member ID associated with the page.",
    "resolved": "Whether the page has been resolved.",
    "resolved_at": "Timestamp when the page was resolved.",
    "resolved_by_member_id": "Member ID who resolved the page."
  },
  "request_id": "Request ID associated with this conversation item.",
  "text": "Text content of the conversation item."
}

Payload Field Details

Conversation Item
Event Payload