Developers

Real-time webhooks for every call.

Push call summaries, contact changes, and form events straight into your own systems. Register an endpoint and your AI Secretary does the rest.

JSON over HTTPS · Bearer auth
Webhooks

How it works

Register an HTTPS endpoint with a secret. When something happens, we POST a JSON event to your endpoint — verify the secret, do your thing, and return 2xx.

POST https://your-app.com/yousquared/webhook
{
  "event_type": "inbound_end_of_call",
  "payload": {
    "caller_phone_number": "+14155550123",
    "yousquared_conversation_id": "conv_8f2a…",
    "started_at": "2026-06-16T15:04:05Z",
    "duration_seconds": 72,
    "is_urgent": true,
    "is_empty": false,
    "is_spam": false,
    "conversation_type": "inbound",
    "super_short_report": "New patient, booked Thu 3:30pm.",
    "short_report": "Caller asked for an appointment this week…"
  }
}
Verify & acknowledge — Node.js
app.post("/yousquared/webhook", (req, res) => {
  // Verify the bearer token on every request.
  const auth = req.header("Authorization");
  if (auth !== `Bearer ${process.env.YOUSQUARED_WEBHOOK_SECRET}`) {
    return res.sendStatus(401);
  }

  const { event_type, payload } = req.body;
  handleEvent(event_type, payload);

  // Respond 2xx to acknowledge. The body is ignored.
  res.sendStatus(200);
});
Events

What you can listen for

Every event arrives as { event_type, payload }. Fields in the payload vary by event.

  • inbound_end_of_call

    A call finished. Includes the summary, urgency, and call metadata.

  • contact_updated

    A contact's details changed.

  • contact_exists

    An inbound caller was matched to an existing contact.

  • lead_update

    A lead's status or details changed.

  • form_sent

    A form was sent to a contact.

  • form_opened

    A contact opened a form you sent.

  • form_submitted

    A contact submitted a form.

  • form_signed

    A contact signed a form.

Delivery

Delivery rules

A few things to design for so no event slips through.

  • Respond with any 2xx status to acknowledge — the response body is ignored.
  • Each request carries your secret as Authorization: Bearer <secret>. Verify it.
  • Non-2xx responses are not retried, so keep your endpoint highly available.
  • Requests time out after 10 seconds.

Enterprise

Deeper integration with your EHR, PMS, or CRM

Beyond webhooks, we work with teams on direct integrations — secure data import/export and connections into clinical and business systems. Tell us what you run and we'll scope it with you.