Works with Salesforce via Make, Zapier or your own endpoint

AI Chatbot for Salesforce: put chat-sourced demand in the CRM of record

A chat window is where buying interest shows up first and where it most often dies. Asyntai answers your visitors using your own content, then hands the conversation on: a request for a human becomes a Case, a visitor who left an email becomes a Lead, and the question they actually asked sits on the record when a rep opens it. Nothing lives in a transcript nobody reads.

Get Started Free See the setup

See what the chatbot would answer

Enter your website and watch the AI answer questions using your own content — the same answers your reps would be reading later.

Why chat-sourced demand never reaches Salesforce

In an organisation of any size, Salesforce is the system of record by decree. Forecast, territory, quota, attribution — if it is not in the CRM it did not happen, and every rep knows it. Chat is the one channel that consistently breaks the rule.

The reason is mundane. Chat tools ship with their own inbox, so the conversation is complete the moment it ends. A visitor who says "we're evaluating this for about 200 seats, who do I talk to?" has just declared themselves, and that sentence is now sitting in a support console that no account executive logs into. Two weeks later the same company arrives through a form and gets treated as cold.

The value is not the transcript. It is the record the transcript should have created, with the sentence that started it attached.

What follows is the plain version of how that record gets made. There is a connector in the middle and we are not going to pretend otherwise, because knowing where it sits is what makes the build take an afternoon rather than a sprint.

How a chatbot event actually reaches Salesforce

Asyntai fires four events. Each one POSTs a small JSON body to a URL you choose, and that body is signed so you can verify it came from your account.

What Asyntai sends
// Headers, and only these three: // Content-Type: application/json // X-Webhook-Event: escalation.requested // X-Webhook-Signature: <HMAC-SHA256 of the body, using your secret> { "event": "escalation.requested", "payload": { "session_id": "session_8f31c0a4", "message": "We're evaluating this for 200 seats, who do I talk to?" } }

Read the header list again, because it decides the whole architecture. There is no Authorization header and no way to add one. The Salesforce REST API requires an OAuth bearer token on every call, so the webhook cannot talk to Salesforce directly and never will. Something in the middle has to hold that OAuth connection.

That something is a connector, and you almost certainly already run one: Make, Zapier, Pabbly, n8n, or a fifteen-line endpoint your own team hosts. It receives an unauthenticated JSON POST on a unique URL, then makes the authenticated Salesforce call on your behalf.

1. Asyntai
Chat event fires, signed JSON POST
2. Connector
Catches it on a generated URL
3. OAuth
Connector holds the Salesforce login
4. Salesforce
Record created and assigned

The build, step by step

Start on the connector side. In Make, begin a scenario with Webhooks → Custom webhook. In Zapier, begin a Zap with the Webhooks by Zapier → Catch Hook trigger. Either way you get a unique URL. Copy it.
Register the URL in Asyntai. Open Settings → API, add a webhook, paste the URL, tick the events you want and set a signing secret. Webhooks are on the paid plans.
Send one real sample. Leave the connector listening and open your own chat widget. One question is enough for Make or Zapier to learn the field names from the incoming JSON.
Add the Salesforce step. Connect your Salesforce org with OAuth. In Make, the Create a Record module lets you pick the object and map the fields. In Zapier, pick the named action you want — Create Lead, Create Record, Find Record, Create Note or Update Lead are all available.
Map the payload. Every field from the chat event is now available to the Salesforce step. In Make's expression syntax, where 1 is the webhook module, it looks like the block below.
Mapping chat fields onto a Salesforce record
Subject Chat escalation from {{1.payload.session_id}} Description {{1.payload.message}} Origin Chat Lead Source Website chat

One integration to build. After that, changing what gets created in Salesforce is a change inside the connector, and Asyntai never has to know about it.

Which Salesforce object should a conversation become?

This is the decision worth making before you build anything, because it is the one that annoys your admin if you get it wrong. Lead and Case are both standard objects that ship with every Salesforce org, and they mean quite different things.

Lead
The standard object for a prospective customer who has not been qualified or converted yet. Right for a chat that produced a name, a company or an email and reads like buying interest.
Case
The standard object for a customer issue that needs resolving. Right for an escalation, because your queues, assignment rules and SLAs are already attached to it.
Note / Task
Right when the person is already in the CRM. Look the Contact up first, then attach the exchange rather than creating a duplicate record nobody wanted.

The pattern most teams settle on is a search step before the write step. Zapier exposes Find Record and Find or Create Record; Make covers the same ground with Get a Record or a SOQL query through Make an API Call. Look for an existing Contact or Lead by email, and only create something new when the lookup comes back empty.

Two Salesforce scenarios worth building first

Both are one trigger and two or three steps. Neither needs a developer.

An enterprise visitor asks for a human at 11pm

The escalation.requested event carries the session id and the exact message that triggered it. Route it into a Case with the message in the description, set the origin to chat, and let your existing assignment rules do the routing they already do for email and web. The on-call rep sees a real question, not a ping that says someone needs help. Add a filter in the connector so only certain pages escalate, and the pricing page can behave differently from the docs.

escalation.requestedCatch HookFind RecordCreate Case

Smart Lead Capture fills the top of the funnel

Turn on Smart Lead Capture and the AI asks for contact details in the flow of the conversation instead of blocking it behind a form. Those contacts collect on the session, and GET /api/v1/leads/ returns them with the page the visitor started on. Run a scheduled connector job against that endpoint, look each address up in Salesforce, and create a Lead with Lead Source set to website chat when it is genuinely new. Attribution stops being a guess.

Scheduled runGET /api/v1/leads/Find RecordCreate Lead
Pulling captured contacts on a schedule
curl -H "X-API-Key: YOUR_API_KEY" \ "https://asyntai.com/api/v1/leads/?limit=50" { "success": true, "leads": [ { "session_id": "session_abc123", "email": "[email protected]", "phone": null, "page_url": "https://example.com/pricing", "started_at": "2026-01-15T10:30:00Z" } ] }

The other direction: Salesforce can ask the chatbot too

Events flowing out are half the story. Coming back the other way there is nothing to hand-build, because Asyntai ships a native connector app with four modules: Send Message to AI, List Websites, Get Conversation History and a universal Make an API Call. Add the module, paste your API key, done.

The practical use inside a CRM workflow is drafting. A new Case arrives, the connector sends the description to Send Message to AI, and the answer — grounded in your own documentation rather than generic AI knowledge — comes back as a suggested first reply for the agent to approve or rewrite. Get Conversation History pulls the full chat thread onto the record so nobody has to ask the customer to repeat themselves.

Underneath, it is one endpoint. Full reference in the API documentation.

The call the module makes for you
POST https://asyntai.com/api/v1/chat/ X-API-Key: YOUR_API_KEY { "message": "Does the platform support SAML single sign-on?", "session_id": "case_5003X00001", "website_id": "YOUR_WEBSITE_ID" }

What the Salesforce connection adds to your chatbot

Answers from your own content

The chatbot answers using your own pages, documents and FAQ entries, so what lands on a Salesforce record reflects what your company actually published.

Signed, verifiable deliveries

Every POST carries an HMAC-SHA256 signature of the body derived from your secret. Your connector can reject anything that does not match.

Your assignment rules, unchanged

Records arrive through the normal Salesforce write path, so queues, territories, validation rules and SLAs behave exactly as they already do.

30+ languages, one payload

Visitors get answers in their own language automatically. The event body has the same shape whichever language the conversation happened in.

Filtering before the write

Connector filters mean only conversations worth a record become one. High-intent pages can create Leads while everything else stays out of the CRM.

Two directions, one API key

Events out through the webhook, questions in through the REST API. The same chatbot serves your website visitors and your internal workflows.

What the Salesforce chatbot integration costs

Three bills, and it is fairer to name all three before you start.

  • Asyntai. Webhooks and the REST API need a paid plan — Starter, Standard or Pro. The free plan gives you 100 messages a month to try the chatbot, with no API or webhook access. See pricing.
  • The connector. Make, Zapier, Pabbly and n8n all bill separately, usually per task or per operation. This is the line item that surprises people: a busy site firing message.received on every single exchange burns operations quickly. Start with escalation.requested only and widen later.
  • Salesforce. Unchanged. You are writing through the standard API with the org and licences you already have.

Salesforce chatbot questions

How do I connect an Asyntai chatbot to Salesforce?

Through an automation platform in the middle. Start a Make scenario with a Custom webhook, or a Zap with Catch Hook, and paste the generated URL into Asyntai under Settings → API. Pick your events, set a signing secret, send one real chat so the platform learns the fields, then add the Salesforce step — Create a Record in Make, or a named action such as Create Lead or Create Record in Zapier.

Which Salesforce object should a chat conversation become?

Lead when the visitor looks like a prospective buyer who left details, since Lead is the standard object for exactly that. Case when someone asked for a human on a support question, because your queues and assignment rules already hang off it. For people who are already customers, a Note or Task on the existing Contact beats a duplicate record.

Can the Asyntai webhook post straight into the Salesforce API?

No. The webhook sends only Content-Type, X-Webhook-Event and X-Webhook-Signature. It cannot attach an OAuth bearer token, and the Salesforce REST API will not accept a call without one. The connector in the middle holds that OAuth connection — that is its entire job here.

Can Salesforce send a question back to the chatbot?

Yes, through the same connector. Asyntai has a native app with Send Message to AI, List Websites, Get Conversation History and Make an API Call. Underneath it is a POST to https://asyntai.com/api/v1/chat/ with an X-API-Key header; the reply arrives in the response field, ready for a Case comment or an email draft.

What does the Salesforce chatbot integration cost?

Asyntai webhooks and API access are on the paid plans (Starter, Standard, Pro); the free plan's 100 monthly messages do not include them. Your Salesforce licences are unaffected. The connector platform bills separately on its own task or operation quota, which is the cost most worth watching.

Other ways to wire the chatbot in

The same four events and the same REST API work through any tool that can receive a JSON POST.

Give every rep the conversation that started it

Answer visitors automatically, then send the ones that matter into Salesforce with the question still attached.

Get Started Free