Events
Triggering Webhook Types
The following event types are associated with the Conversation event payload from Spruce.Spruce Conversation CreatedSpruce Conversation UpdatedSpruce Conversation Deleted
{
"api_url": "https://api.sprucehealth.com/v1/conversations/conv_12345",
"app_url": "https://app.sprucehealth.com/conversations/conv_12345",
"archived": null,
"assigned_to_member_id": "member_67890",
"associated_contact_ids": [],
"contact_id": "entity_0E5QDGJC03000",
"conversation_type": "sms",
"created_at": "2025-02-11T08:22:10Z",
"external_participants": [
{
"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": "conv_12345",
"internal_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"
}
},
"internal_member_ids": [],
"is_read_only": null,
"last_message_at": "2025-02-11T08:22:10Z",
"object": "conversation",
"subtitle": "Follow-up discussion",
"tags": [
{
"id": "tag_0E5QDGJC03000",
"value": "high-priority"
}
],
"title": "Patient Check-in"
}
{
"api_url": "API URL for this conversation.",
"app_url": "App URL for this conversation.",
"archived": "Whether this conversation is archived.",
"assigned_to_member_id": "ID of the member assigned to this conversation.",
"associated_contact_ids": "Contact IDs associated with this conversation.",
"contact_id": "Unique identifier for the contact in the Spruce system that is the external participant in this conversation",
"conversation_type": "Type of conversation (sms, email, etc.).",
"created_at": "Timestamp when the conversation was created.",
"external_participants": {
"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 in the Spruce system.",
"internal_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."
}
},
"internal_member_ids": "Internal member IDs participating in this conversation.",
"is_read_only": "Whether this conversation is read-only.",
"last_message_at": "Timestamp of the last message in this conversation.",
"object": "Object type identifier.",
"subtitle": "Subtitle for the conversation.",
"tags": {
"id": "Unique identifier for the tag.",
"value": "Tag value."
},
"title": "Title of the conversation."
}
Payload Field Details
Event Payload
Hide fields
Hide fields
string
required
ID Unique identifier for the conversation in the Spruce system.CEL
id
Example
"conv_12345"
string
required
ID Unique identifier for the contact in the Spruce system that is the external participant in this conversationCEL
contact_id
Example
"entity_0E5QDGJC03000"
string
API URL for this conversation.
CEL
api_url
Example
"https://api.sprucehealth.com/v1/conversations/conv_12345"
string
App URL for this conversation.
CEL
app_url
Example
"https://app.sprucehealth.com/conversations/conv_12345"
bool
required
Whether this conversation is archived.
CEL
archived
Example
null
string
ID ID of the member assigned to this conversation.CEL
assigned_to_member_id
Example
"member_67890"
[]string
required
ID Contact IDs associated with this conversation.CEL
associated_contact_ids
Example
[]
timing.v1.Timestamp
required
Timestamp when the conversation was created.
CEL
created_at
Example
"2025-02-11T08:22:10Z"
[]object
required
External participants in the conversation.
CEL
external_participants
Example
[
{
"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"
}
}
}
]
[]string
required
ID Mapped array of: Contact ID of the external participant.CEL
external_participants.map(x, x.contact)
Example
[
null
]
[]bool
required
PII Mapped array of: Display names for the external participant.CEL
external_participants.map(x, x.display_names)
Example
[
"John Doe"
]
[]bool
required
Mapped array of: Communication endpoint for the participant.
CEL
external_participants.map(x, x.endpoint)
Example
[
{
"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"
}
}
]
object
Internal endpoint for the conversation.
CEL
internal_endpoint
Example
{
"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"
}
}
string
Communication channel type.
CEL
internal_endpoint.channel
Example
"sms"
string
Human-readable display value.
CEL
internal_endpoint.display_value
Example
"(555) 123-4567"
string
ID Unique identifier for the endpoint.CEL
internal_endpoint.endpoint_id
Example
null
bool
Whether this is an internal endpoint.
CEL
internal_endpoint.is_internal
Example
null
[]string
Labels associated with the endpoint.
CEL
internal_endpoint.labels
Example
"mobile"
string
Object type identifier.
CEL
internal_endpoint.object
Example
"endpoint"
object
Raw endpoint value with type-specific data.
CEL
internal_endpoint.raw_value
Example
{
"email": "patient@example.com",
"phone": "+15551231234",
"value": "secure_channel_id"
}
string
PII Email address value.CEL
internal_endpoint.raw_value.email
Example
"patient@example.com"
string
PII Phone number value.CEL
internal_endpoint.raw_value.phone
Example
"+15551231234"
string
PII Secure channel identifier.CEL
internal_endpoint.raw_value.value
Example
"secure_channel_id"
[]string
required
ID Internal member IDs participating in this conversation.CEL
internal_member_ids
Example
[]
bool
required
Whether this conversation is read-only.
CEL
is_read_only
Example
null
timing.v1.Timestamp
Timestamp of the last message in this conversation.
CEL
last_message_at
Example
"2025-02-11T08:22:10Z"
string
required
Object type identifier.
CEL
object
Example
"conversation"
string
Subtitle for the conversation.
CEL
subtitle
Example
"Follow-up discussion"
[]object
required
Tags associated with the conversation.
CEL
tags
Example
[
{
"id": "tag_0E5QDGJC03000",
"value": "high-priority"
}
]
[]string
required
ID Mapped array of: Unique identifier for the tag.CEL
tags.map(x, x.id)
Example
[
"tag_0E5QDGJC03000"
]
[]string
required
Mapped array of: Tag value.
CEL
tags.map(x, x.value)
Example
[
"high-priority"
]
string
Title of the conversation.
CEL
title
Example
"Patient Check-in"
string
Type of conversation (sms, email, etc.).
CEL
conversation_type
Example
"sms"
