Documentation Index
Fetch the complete documentation index at: https://docs.morf.health/docs/llms.txt
Use this file to discover all available pages before exploring further.
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
Hide fields
Hide fields
ID Unique identifier for the conversation in the Spruce system.CEL
id
Example
"conv_12345"
ID Unique identifier for the contact in the Spruce system that is the external participant in this conversationCEL
contact_id
Example
"entity_0E5QDGJC03000"
API URL for this conversation.
CEL
api_url
Example
"https://api.sprucehealth.com/v1/conversations/conv_12345"
App URL for this conversation.
CEL
app_url
Example
"https://app.sprucehealth.com/conversations/conv_12345"
Whether this conversation is archived.
CEL
archived
Example
null
ID ID of the member assigned to this conversation.CEL
assigned_to_member_id
Example
"member_67890"
ID Contact IDs associated with this conversation.CEL
associated_contact_ids
Example
[]
Timestamp when the conversation was created.
CEL
created_at
Example
"2025-02-11T08:22:10Z"
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"
}
}
}
]
ID Mapped array of: Contact ID of the external participant.CEL
external_participants.map(x, x.contact)
Example
[
null
]
PII Mapped array of: Display names for the external participant.CEL
external_participants.map(x, x.display_names)
Example
[
"John Doe"
]
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"
}
}
]
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"
}
}
Communication channel type.
CEL
internal_endpoint.channel
Example
"sms"
Human-readable display value.
CEL
internal_endpoint.display_value
Example
"(555) 123-4567"
ID Unique identifier for the endpoint.CEL
internal_endpoint.endpoint_id
Example
null
Whether this is an internal endpoint.
CEL
internal_endpoint.is_internal
Example
null
Labels associated with the endpoint.
CEL
internal_endpoint.labels
Example
"mobile"
Object type identifier.
CEL
internal_endpoint.object
Example
"endpoint"
Raw endpoint value with type-specific data.
CEL
internal_endpoint.raw_value
Example
{
"email": "patient@example.com",
"phone": "+15551231234",
"value": "secure_channel_id"
}
PII Email address value.CEL
internal_endpoint.raw_value.email
Example
"patient@example.com"
PII Phone number value.CEL
internal_endpoint.raw_value.phone
Example
"+15551231234"
PII Secure channel identifier.CEL
internal_endpoint.raw_value.value
Example
"secure_channel_id"
ID Internal member IDs participating in this conversation.CEL
internal_member_ids
Example
[]
Whether this conversation is read-only.
CEL
is_read_only
Example
null
Timestamp of the last message in this conversation.
CEL
last_message_at
Example
"2025-02-11T08:22:10Z"
Object type identifier.
CEL
object
Example
"conversation"
Subtitle for the conversation.
CEL
subtitle
Example
"Follow-up discussion"
Tags associated with the conversation.
CEL
tags
Example
[
{
"id": "tag_0E5QDGJC03000",
"value": "high-priority"
}
]
ID Mapped array of: Unique identifier for the tag.CEL
tags.map(x, x.id)
Example
[
"tag_0E5QDGJC03000"
]
Mapped array of: Tag value.
CEL
tags.map(x, x.value)
Example
[
"high-priority"
]
Title of the conversation.
CEL
title
Example
"Patient Check-in"
Type of conversation (sms, email, etc.).
CEL
conversation_type
Example
"sms"
