Who This Is For / When to Use
Use this guide if you are:
Sending data from Kyrios to an external system using a Webhook action
Building integrations that depend on workflow triggers
Debugging missing fields in webhook payloads
How Webhook Data Is Generated
Webhook payloads are generated based on the workflow trigger that activates the webhook.
Contact data and account data are always included.
Other objects (appointments, opportunities, tasks, etc.) are included only if the workflow trigger references them.
Important Rule
If an object is not part of the trigger, its data will not be included in the webhook payload.
Object Availability by Trigger Type
Contact and Account Data (Always Included)
These objects are included in all webhook actions:
Contact
Account (location)
No special trigger configuration is required.
Appointment Data (Trigger-Dependent)
Appointment fields are included only when the workflow uses an appointment-based trigger, such as:
Appointment Booked
Appointment Updated
Appointment Canceled
If the workflow is not triggered by an appointment event, appointment date and time fields will not be present.
Opportunity Data (Trigger-Dependent)
Opportunity fields are included only when the workflow uses an opportunity-based trigger, such as:
Pipeline Stage Changed
Opportunity Created
Opportunity Status Updated
If no opportunity trigger is used, pipeline and opportunity owner data will not be included.
Other Objects (Trigger-Dependent)
The following objects are included only when explicitly referenced by the workflow trigger:
Campaign
User
Calendar (Appointment)
Order
Invoice
Task
Note
Message
Workflow
Webhook Payload Structure
The webhook payload is a JSON object with flat fields at the root level and nested objects where applicable.
Contact Fields (Standard)
{
"first_name": "",
"last_name": "",
"full_name": "",
"email": "",
"phone": "",
"tags": [],
"address1": "",
"city": "",
"state": "",
"country": "",
"timezone": "",
"postal_code": "",
"company_name": "",
"website": "",
"date_of_birth": "",
"contact_source": "",
"contact_type": "",
"gclid": "",
"date_created": "",
"full_address": ""
}Contact Custom Fields
All contact custom fields are included dynamically.
Field keys match the internal custom field identifiers.
Account Object (Always Included)
{
"location": {
"id": "",
"name": "",
"address": "",
"city": "",
"state": "",
"country": "",
"postalCode": "",
"fullAddress": ""
}
}Opportunity Fields (If Applicable)
Included only when an opportunity trigger is used.
{
"id": "",
"opportunity_name": "",
"status": "",
"lead_value": "",
"opportunity_source": "",
"source": "",
"pipeline_id": "",
"pipeline_name": "",
"pipeline_stage": ""
}Campaign Object (If Applicable)
{
"campaign": {
"id": "",
"name": ""
}
}User Object (If Applicable)
{
"user": {
"firstName": "",
"lastName": "",
"email": "",
"phone": "",
"extension": "",
"address1": "",
"city": "",
"state": "",
"country": "",
"postalCode": ""
}
}
Appointment (Calendar) Object (If Applicable)
{
"calendar": {
"id": "",
"calendarName": "",
"title": "",
"selectedTimezone": "",
"appointmentId": "",
"startTime": "YYYY-MM-DDTHH:mm:ss",
"endTime": "YYYY-MM-DDTHH:mm:ss",
"status": "",
"appointmentStatus": "",
"address": "",
"notes": "",
"date_created": "",
"created_by": "",
"created_by_user_id": "",
"created_by_meta": {
"source": "",
"channel": ""
}
"last_updated_by_meta": {
"source": "",
"channel": "" }
}
}Timezone Handling
startTimeandendTimeare returned in theselectedTimezoneIf no timezone is set, values default to
UTC
Order Object (If Applicable)
{
"order": {
"...": "Dynamic fields"
}
}Order fields vary based on the form configuration.
Use the Webhook Test feature to view a live payload example.
Invoice Object (If Applicable)
{
"invoice": {
"...": "Dynamic fields"
}
}Invoice fields vary by invoice type and status.
Use the Webhook Test feature for sample data.
Task Object (If Applicable)
{
"task": {
"title": "",
"body": "",
"dueDate": "YYYY-MM-DDTHH:mm:ss"
}
}dueDateis always converted to UTC
Note Object (If Applicable)
{
"note": {
"body": ""
}
}Message Object (If Applicable)
{
"message": {
"type": "",
"body": "",
"direction": "",
"status": ""
}
}Workflow Object (If Applicable)
{
"workflow": {
"id": "",
"name": ""
}
}Common Issues and Fixes
Missing Appointment or Opportunity Data
Cause: The workflow trigger does not reference that object.
Fix: Use a trigger such as Appointment Booked or Pipeline Stage Changed.
Unexpected or Missing Fields
Cause: Object data is dynamic and depends on trigger context.
Fix: Run the Webhook Test to inspect the exact payload.
FAQ
What data is always included in a webhook?
Contact data and account data are always included in every webhook action.
Why is my appointment data missing?
Appointment data is only included if the workflow uses an appointment-based trigger.
Why don’t I see opportunity owner or pipeline fields?
Opportunity data is only included when the workflow uses an opportunity-related trigger.
How can I see the exact payload structure?
Use the Test Webhook option inside the workflow action to view live sample data.
