Most guides to integrating chat with a CRM are instructions for using a single field in the settings. Paste the URL, save, done. The difficult questions begin a day later: why did the same lead appear in the system three times, why was a conversation note attached to their colleague at the same company, and why is there no trace of anything from yesterday afternoon? This article is about those questions, not the settings field.

Why integrate at all—and when not to

An integration makes sense when it solves a specific organizational problem, not merely because it is available. Usually, the goal is one of three things: salespeople should see in their own tool that a contact has already asked about an offer; nobody should manually copy data from a conversation; or the sales report should show how many opportunities came from chat rather than forms alone.

  • Two teams, two toolsCustomer service works in the chat panel, sales works in the CRM, and neither team looks in the other's tool.
  • Manual copyingEvery day, someone copies the name, phone number, and conversation into a new contact record.
  • A downstream processA chat event should trigger something else: assigning an owner, creating a task, or starting a sequence.
  • Source reportingManagement asks about chat's contribution to the pipeline, while the data sits in two disconnected places.

The opposite is worth saying too, because nobody does. If the same team handles conversations and subsequent sales, and chat produces only a few leads a week, an integration is a cost with no return. Maintaining a working data flow is not a one-off fifteen-minute task—it involves fields someone must map, failures someone must notice, and duplicates someone must clean up. Moving five records a week manually is cheaper and gives you confidence that each one arrived where it should.

A good test is to ask about the decision: what exactly will someone do differently when the data appears in the CRM automatically rather than being copied manually two hours later? If the answer is ‘nothing—we check only once a day anyway,’ the integration is a project for later. If it is ‘the owner will call back within fifteen minutes,’ it is a project for now.

What to send and what to leave out

The default instinct when building an integration is to send everything available because it ‘might come in handy.’ That is the most expensive choice possible. Every field you send must be mapped somewhere, shown to someone, and protected by someone. A full conversation transcript in a contact record looks impressive for a week; then it becomes a wall of text nobody reads and a body of data that must be governed like everything else.

Scroll the table sideways to see all columns.

DataSend it?Note
The fact that contact occurred and its channelYes, alwaysThe least expensive and most useful information: when, through which channel, and about what
Contact details provided by the customerYes, if the customer provided themOnly the fields actually used in the sales process
Full conversation transcriptUsually notA short summary and a link to the case in the chat system are better
Visit source and landing pageYesThis information most often explains why the conversation began at all
Operators' internal notesNoThey are written in a different context and read by a different group in the other system
Highly sensitive data from the conversationNoIf it appeared in the transcript, do not distribute it further or retain it outside the case

One rule simplifies most implementation disputes: the CRM should receive what changes a sales decision, not what describes the course of customer service. A salesperson needs to know that the contact asked about an implementation for twenty people and requested a call after 3 p.m. They do not need thirty lines discussing whether the license covers a second location. We explain what to establish during the conversation so that such a summary is useful in our article on qualifying leads on your website.

Consider the legal basis and scope of processing separately. Sending conversation data to another system creates a new storage location and a new group of recipients—these decisions belong before implementation, not after it. We cover the practical side in our article on live chat and the GDPR.

Matching the right record

This is where integrations fail most quietly and painfully. The data transfer works, the recipient responds correctly, and the report shows no error—yet the conversation note was added to a contact who never had that conversation. Matching is a decision, not a technical detail, and it should be made deliberately.

  1. Case number.The most reliable key if both sides share the same ticket identifier. It does not change or belong to two people at once.
  2. Email address.Works well for individual purchases. Fails when several people use one shared company inbox.
  3. Phone number.Convenient, but it may be stored in several formats and may belong to a switchboard rather than a person.
  4. Company name.The weakest key. A typo, abbreviation, and legal form create three different records for the same organization.
  5. No match.A deliberate decision: create a new record with a clear source label or send it to a queue for manual review.

The worst possible choice is forced matching—a rule that always finds some record. If the key is uncertain, it is better to create a new entry and let a person decide whether to merge it than to append conversation history to somebody else's record. Excess duplicates are a housekeeping problem you can clean up. An entry in the wrong record is a trust problem, and it usually surfaces during the worst possible conversation.

A stable identifier on the customer-service side helps enormously. In Meetlead, every ticket has an immutable case number and a complete event timeline, while contacts and visit history are isolated separately for each website. This lets you tie a transferred event unambiguously to one case rather than merely to a similar-sounding surname. We explain how such a number organizes customer-service work in our article on customer service ticketing systems.

What breaks along the way

Before going further, one explanation. A webhook is simply an automatic call to an address on the recipient's side when something important happens on the sender's side—a new conversation, a callback request, or a ticket status change. The sender delivers a notification and waits for a brief acknowledgment. All the difficulty lies in what happens when that acknowledgment never arrives.

  1. 14:02

    The customer requests contact, and the event is sent to the CRM

  2. 14:02

    The recipient saves the record, but its response does not return within the deadline

  3. 14:03

    The sender treats the attempt as failed and retries delivery

  4. 14:03

    The recipient saves a second record because it did not recognize the repeated event

  5. 14:20

    Two salespeople call the same person about the same matter

A classic duplicate. Nobody made a mistake—the only thing missing was an identifier that would let the recipient recognize a retry.

The remedy is simple and almost never present in the default configuration: every event should carry its own immutable identifier, and the recipient should remember it and do nothing when it appears again. That is one column in the recipient's database and one condition in the code. Without it, every retry is a lottery—and retries will happen. Networks fail, servers restart, and databases slow down temporarily for everyone.

  • Silence from the recipientThe endpoint responds slowly or not at all, and the events from that hour go nowhere.
  • A meaningless responseThe recipient acknowledges receipt and then loses the data during its own processing. The sender has no idea.
  • No guaranteed orderThe case closure arrives before the case opening, and the CRM status is the opposite of reality.
  • An unannounced field changeSomeone renamed a field on the recipient's side, and the integration has been saving empty values for a week.

This leads to a rule worth adopting from day one: the integration cannot be the only place where an event exists. The case should continue to live in the customer-service system with its own number and history; the transfer to the CRM should be a copy, not a move. Then a recipient failure is an inconvenience rather than a lost lead. The same rule applies to every automation—we discuss it in our article on live chat automation.

The automation actions available in Meetlead, including webhook actions, depend on plan features and website configuration. This article describes general principles for designing a data flow, not a list of ready-made integrations with specific systems.

Receiving endpoint security

The address to which events are sent is an entry point into your infrastructure and must be treated seriously. Two risks are real, and both are often overlooked. First, someone impersonates the sender and writes data nobody supplied into your CRM. The second works in the other direction: an inadequately secured delivery mechanism can be induced to query an internal address that is inaccessible from the internet.

  • The receiving endpoint accepts encrypted connections only and cannot be guessed.
  • The recipient verifies that the request genuinely came from the sender before saving anything.
  • A repeated event with the same identifier is recognized and ignored.
  • The recipient responds quickly and briefly, then performs heavy work after acknowledgment.
  • The incoming request size is limited so one event cannot block the queue.
  • A specific person is alerted when the rate of failed attempts increases.

On the sender's side, sensible safeguards look similar in every tool. In Meetlead, a webhook action accepts only public HTTP and HTTPS addresses, checks addressing again after redirects, pins the verified server address, and limits the number of redirects, timeout, request size, and response size. These may sound like details, but they are what distinguish a delivery mechanism from an open tool for querying someone else's resources.

Before entering the address

Find out who maintains the receiver on the other side and what happens when it stops responding. If there is no answer to the second question, the integration is not ready for production. Contact us if you would like to discuss it.

A phased implementation and checklist

Integrations most often fail at launch for one reason: everything is enabled at once, for every event and every field. The first week is then spent cleaning the database instead of checking whether the flow gives the team what it was created to provide.

  1. Stage 1—one event.Choose one: a new contact request or a new ticket. Nothing else during the first week.
  2. Stage 2—the minimum field set.Four or five fields, each with a clear destination on the recipient's side.
  3. Stage 3—the matching rule.Choose the key and document what happens when matching fails.
  4. Stage 4—a failure test.Turn off the receiver for a few minutes and check whether the events return and whether they create duplicates.
  5. Stage 5—observe and expand.After two weeks, review the records from that period before adding more events.
  • You know who owns the integration at the company and who repairs it.
  • The scope of transferred fields is documented and approved by the person responsible for the data.
  • Every event has an identifier the recipient uses to recognize retries.
  • The matching rule is documented together with the scenario in which it fails.
  • The case exists independently in the customer-service system even when the transfer fails.
  • Someone reviews records created by the integration at least during the first month.

Stage four is the most frequently skipped and the most valuable. Turning off the receiver for a few minutes under controlled conditions tells you more about your integration than a week of correct operation—because it shows what will happen on the day nobody is watching.