Skip to content
Neaptidestudio
blog

Website CRM integration: check that every enquiry arrives

Neaptide · September 7, 2026 · 6 min read

Connect website forms to your CRM, preserve attribution and handle retries without duplicate enquiries. Includes a failure scenario and acceptance checklist.

On this page
Paper envelopes travel along a glass channel into a filing drawer.

A thank-you message does not prove that an enquiry reached your CRM. Before signing off the website, ask to see the saved submission, its CRM record and the assigned owner. If processing stops between those stages, someone needs to be able to find it.

The integration sends website form data to the CRM, creates an enquiry, links it to a contact and assigns a salesperson according to your rules. You may be able to use the CRM’s own form or a ready-made connector; custom API development is another option. Choose the approach that supports your process.

Define what “received” means

Separate three milestones: the website saved the enquiry, the CRM confirmed the record, and a salesperson received a task. An email or Telegram notification is useful, but it does not establish that all three happened.

During a CRM outage, the website may safely store an enquiry for later delivery and tell the visitor it has been received. If storage fails too, a success message would be misleading. Offer a clear retry or another contact route. Only promise a response time that the sales team has agreed to meet.

Start with the simplest suitable connection

Check a native form or existing connector against your field, routing and recovery requirements. Ask for a demonstration of failure handling. Custom code is not inherently more reliable.

A queue separates intake from processing, but someone must monitor delayed and failed messages. A separate queue service may add little value to a small, stable workload. Compare operating effort as well as initial setup.

Decide which enquiry details the CRM needs

Create a table showing each form field and its destination in the CRM. Include details the site supplies, such as the page address, form ID, submission time and known traffic source. Check required fields and allowed values: free text from the website may not fit a fixed CRM dropdown.

Decide whether to retain the first known source, the current enquiry’s source or both. Missing UTM parameters do not establish a direct visit; the source may simply be unknown.

Keep CRM credentials on the server. Define who can view diagnostic records and avoid turning error logs into broadly accessible copies of customer messages.

A retry is different from a returning customer

Consider a fictional submission S-104. The CRM creates record C-208, but its confirmation never reaches the website. The website sees a timeout. Creating a record again without checking the outcome can produce a duplicate.

Use the same submission ID when retrying delivery. If the CRM API supports idempotency, repeated requests can be treated as one action; otherwise, a suitable way to match and check records must be designed. Simply searching before creating a record is not enough when two requests arrive together. A timeout does not tell you whether the first record was saved.

If the same person requests a different service tomorrow, that is a new enquiry S-105. You may link it to an existing contact, while preserving the new request under the sales team’s rules. Deleting every submission with the same phone number can hide real demand.

Fictional S-104 is delivered again but corresponds to one CRM record C-208.
Fictional lost-confirmation scenario: expected behaviour, not a CRM test result.

Ask to see a failure test

Use these cases in a test environment for every form and language version. They define acceptance expectations, not results from a tested CRM. Keep the submission ID alongside each observation so that you compare the same enquiry across systems.

Acceptance cases for a test environment
Test caseExpected check
Normal enquiryCorrect fields, source, record and owner.
Temporary CRM outageSaved enquiry, visible pending state and resumed delivery.
Timeout after creationRetry produces no second enquiry; reconcile using the ID.
Invalid required fieldVisible error; no endless retries without correction.
New request, same phoneNew request preserved according to agreed rules.
No UTM parametersUnknown source is not replaced with an invented campaign.

Agree the handover before launch

Ask for the field-mapping table, rules for repeat enquiries and instructions for finding and handling errors. Name the person responsible for failures and agree acceptable delivery times. Have the developer show how to resume processing after a fix without creating duplicates.

The number of new deals will not necessarily match the number of enquiries. Some enquiries are added to existing contacts or deals. Check each submission ID against its delivery status, allowing for tests, spam and pending requests. A recorded click on Submit does not prove that the enquiry arrived.

For a Neaptide website project, send the website address, CRM name, form list and a sanitised example of the desired record. Explain how returning customers should be handled and who in sales will accept the work.

faq

The short version

Do we need a custom API integration?

Not necessarily. Test native forms and connectors against the same acceptance cases. Build custom integration when their capabilities are insufficient.

Is an email a sufficient backup?

It can provide an extra route, but email delivery can fail too. You need confirmed storage, a visible state and a recovery procedure.

Does a matching phone number mean a duplicate?

No. Retrying one submission differs from a new enquiry by the same customer. Define contact matching and enquiry handling separately.