27agentsGet started

Integrations

One signed webhook. Every tool you already use.

A qualified lead that only exists in our dashboard is a lead nobody acts on. Tell the agent where yours should land and it posts it there, signed, and retries until it arrives.

HubSpot

Point it at a workflow webhook trigger, or at the automation tool you already run in front of your CRM. The contact, the company and the write-up are all in the body.

Salesforce

An inbound endpoint or a flow. Same JSON as everywhere else — there is no per-CRM app to install, approve and keep alive.

Zapier, Make, n8n

Catch the hook, map the fields once, then fan the lead out to whatever else is on their list. Most teams start here and never leave.

Slack

A channel message with the headline, the qualification read, the next step and a link to the call. A wall of JSON is not a notification.

Your own API

Any HTTPS endpoint. Check the signature, read the body, do whatever you like with it. That is the whole integration.

Their calendar

Booking a slot sends the prospect a confirmation carrying a real calendar invite and the room link, without you wiring anything up.

There is no app to install in your CRM on purpose. One signed contract works everywhere and needs no per-vendor maintenance; a native integration is worth building when a customer's workflow actually needs one, not before.

Three events

Pick which ones you want. Per destination.

meeting.booked

A call is booked

A prospect picked a slot. The summary is null — the call has not happened yet.
meeting.completed

A call finished

The room emptied. A call where no human ever spoke is a no-show and does not fire this.
lead.qualified

A lead qualified

The write-up came back qualified. This is the one most teams route into a CRM.

The payload

The same shape every time.

The contact, the meeting with a link back to the call, and — once the agent has written it up — the outcome, the next step, the qualification read, the objections it heard and the questions it could not answer.

This sample is generated by the same function that builds the real request, so it cannot drift from what actually arrives.

  • content-type: application/json
  • x-27agents-event: lead.qualified
  • x-27agents-delivery: <delivery id, stable across retries>
  • x-27agents-signature: t=<unix>,v1=<hmac sha256 of `t.body`>

POST your endpoint

200 expected
{
  "id": "0198c0de-0000-4000-8000-000000000001",
  "event": "lead.qualified",
  "sentAt": "2026-08-19T15:00:00.000Z",
  "project": {
    "id": "0198c0de-0000-4000-8000-000000000002",
    "name": "Fleet Cloud"
  },
  "contact": {
    "name": "Dana Meyer",
    "email": "dana@initech.test",
    "companyName": "Initech",
    "website": "https://initech.test"
  },
  "meeting": {
    "id": "0198c0de-0000-4000-8000-000000000003",
    "scheduledAt": "2026-08-19T14:00:00.000Z",
    "durationMinutes": 30,
    "status": "completed",
    "useCase": "We run 40 robots",
    "url": "https://app.27agents.com/app/meetings/0198c0de-0000-4000-8000-000000000003"
  },
  "summary": {
    "headline": "Initech blocked on SOC 2",
    "narrative": "Dana liked the reporting and asked for the audit report.",
    "outcome": "qualified",
    "nextStep": "Send the SOC 2 report",
    "qualification": {
      "budget": null,
      "authority": "Dana signs up to 50k",
      "need": "Manual reporting takes a week",
      "timing": null,
      "verdict": "Real need"
    },
    "objections": [
      {
        "kind": "security",
        "detail": "No SOC 2 listed",
        "raisedBy": "Dana Meyer"
      }
    ],
    "unansweredQuestions": [
      "Are you SOC 2 certified?"
    ]
  }
}

What we promise the receiver

The boring parts, handled.

Signed, so you know it is us

Each endpoint gets its own secret, shown once. Every request carries the timestamp and an HMAC over the timestamp and body together, so a captured delivery cannot be replayed at leisure.

Retried until it lands

The delivery is written to an outbox in the same transaction as the booking itself, then retried at 1, 5 and 25 minutes, 2 hours and 10 hours. Your CRM being down for an afternoon does not lose a lead.

Safe to replay, safe to ignore

The delivery id is stable across retries, so a receiver can drop a repeat. The body is composed at send time, so a retry an hour later carries the write-up that did not exist when the call ended.

Your URL cannot become our problem

The host is resolved and checked against private, loopback and reserved ranges before every request, not only when you save it, and redirects are not followed.

From startups, for startups

Peter Orban, founder of 27agents

Peter Orban

Founder of 27agents

Try it live

Ask the agent where your lead would end up.

Book a slot, tell it what you run, and it will talk you through the destination that fits.