Skip to main content
Julian sends a POST request to your configured webhook URL after each call is completed and analyzed. The payload contains everything about the call: contact details, duration, transcript, assigned outcomes, extracted variables, and any actions taken by the agent or requested by the contact. The full payload schema is documented in the API Reference tab under Webhooks.

Sample payload

Agent-specific fields

Three fields in the payload are shaped by your agent’s configuration rather than a fixed schema: customInputVariables, callResult.extractedVariables, and callResult.outcomes. The keys and values shown in the sample above are placeholders — expect the sets configured on your agent instead.
  • customInputVariables — the custom variables you submitted when enrolling the contact, echoed back verbatim. The set of keys is whatever your agent’s configuration requires (the same variables the schedule endpoints ask you to include).
  • callResult.extractedVariables — values the agent extracted from the conversation, keyed by the extraction variables configured on your agent.
  • callResult.outcomes — each name is one of the outcome definitions configured on your agent, not a fixed enum. Fetch the configured set with List agent outcomes to map webhook outcomes back to their definitions programmatically.

callResult.followUpMeetingDetails

Present when a meeting was booked during the call. Its meetingLink is the meeting’s join link for virtual meetings (e.g. Cal.com, Google Meet, Zoom, Teams), or the physical location/address for in-person bookings — so treat it as a free-form string rather than always a URL.

callResult.resultType values

sequence.lifecycleStatus values

Use sequence.lifecycleStatus to determine whether a contact is still actively enrolled.

Best practices

  • Implement idempotency — handle duplicate webhook deliveries gracefully (key on callId).
  • Respond quickly — return a 2xx promptly and process the payload asynchronously.
  • Log deliveries — keep webhook request logs for debugging.
  • Monitor failures — set up alerting on webhook processing errors.

Testing your endpoint

Fetch a sample webhook payload for any agent to test your endpoint before going live: