Teams often describe this job in one line. Stop copying leads by hand. Make the form create the card. That line hides several steps. The site accepts the submission. Something maps the values. The CRM creates a card. A person on the team sees that card in the list they already open in the morning. Any one of those steps can fail while the others still look fine.
"Thank you" on the site is not the same event as a card in the pipeline. That split is why a lead can vanish after thank you. This note starts one step later. The team already knows a person still copies the data. They want that copy step gone. That copy step is the specification. A plugin with a logo does not replace it.
1. Watch one paste before you name the tool
Sit with the person who moves leads, once, on a real submission or on a test you both can see. Do not ask for the process from memory. Memory drops the fields people set without thinking.
Write one row per value. What the form called it. What the person typed or pasted. Which CRM field received it. Whether they changed it on the way: a phone prefix, a city, the word they put into "source".
If they also set a status, an owner, or a pipeline, those are fields too. The form collected a name. The person decided "new lead, morning shift, source: site". Leave that decision out of the map and the card lands in a default bucket. That bucket is often a list nobody opens. The integration then looks dead even when it ran.
The same map works when the destination is still a spreadsheet. Columns are fields. The person who maintains the sheet is the owner. You do not need a CRM logo to write the map. You need the list of values that move and the list of judgments the person adds.
2. What usually breaks first
Three failures show up before anything exotic. They are boring. They are also why manual copy survives the first month of "we automated it".
A required CRM field the form does not collect. The CRM rejects the card, or it creates a card and a rule marks it invalid. The site already finished its own step, so thank you appeared on the site. The rejection sits in a log the marketing team never opens. The person who used to paste still pastes, because the automatic path "sometimes does not work". Until someone reads that rejection, every new form repeats it.
The card is created in the wrong place. Wrong pipeline. Wrong status. Wrong owner. Or a general inbox while the team works from "my tasks". The integration is up. The morning list is empty. People blame the form. The card is sitting in a list they do not use. Search the whole CRM by the test phone before you call the form broken.
A second submission of the same phone creates a second card. The person refreshes. An ads platform retries. A background job runs again after a timeout. Without a rule for "this phone already has an open card", the CRM fills with twins. Then someone turns the integration off, because cleaning duplicates costs more than pasting. A retry has to be safe to repeat. On systems that move this work into a queue, the job can run again and still must leave one card. The technical name is idempotency. The practical version is shorter: the same person should not become two leads because one request was slow.
Phone format is the quiet partner in that duplicate problem. The form sends a local number. The CRM already stores the same number with a country prefix. The duplicate check compares the strings exactly. You get two cards for one person. Normalize the phone before you compare it. Write the rule down. "We strip spaces" is not a rule until you say which prefix you keep and what you do with an extension.
3. Prove it on the list the team already opens
Send one submission with a phone number you control. Do not stop at the CRM search box. Open the list the manager opens at the start of the day. If the card is missing there, search by that phone across the CRM and write down where it landed.
Record whether thank you appeared on the site, whether a card exists, and the pipeline, status, owner, and source on that card. Then submit the same phone again and record whether a second card appeared. If the CRM rejects the payload, write down where that error is read. A success message on the site with an unread error in a job log is a failed integration, not a moody form.
Use a test pipeline if the CRM has one. A test lead in the live pipeline becomes a real call. If there is no separate pipeline, use a name that cannot be mistaken for a customer, delete the card after the check, and say that in the note. Do not point the test at a colleague's personal mailbox and call that a test environment. The place you are proving is the list the team uses for work.
If the create step happens in a background job, wait for that job before you judge the test. A fast thank you and a failed job is a normal shape. The button did its work. The job did not. Read the job error before you replace the form. If the click itself stays busy because the site waits on the CRM, time that request. Saving the lead first and creating the card after is often the fix. The wider timing pass is what to check before a redesign. Stay on this map until the card shows up in the right list.
4. Match the fix to the miss
If the CRM rejected a missing field, either collect that field on the form or set a default the team has agreed on. A default source of "site" is fine when everyone means the same site. A default owner of "unassigned" is fine only if someone reads that queue on a schedule you can name.
If the card exists in the wrong pipeline, change the destination. Do not rebuild the form. The fields were already good enough to create a card. The address was wrong.
If duplicates appear, define the match. Phone, email, or both, after normalization. Then define what a repeat does. Update the open card. Add a note. Or ignore the repeat. Pick one and write it down. "Always create" is how the paste comes back, because the team will not work inside a pile of twins.
If the person still types a judgment the form cannot know, do not pretend the integration removed them. "This is a hot lead" and "this is spam" are decisions. Automate the copy of name, phone, and comment. Leave the judgment as an explicit step with time in the day, or add the one field that captures it. A new button does not absorb a decision you never listed.
Spam and consent belong in the same note. If a script can submit the form all night, the CRM fills with junk and the team stops trusting the list. A simple check, a required consent line, and a place to see rejected submissions are part of the map. They are not a later project to bolt on after the team has muted the pipeline.
5. The note that ends the argument
After one observed test, write five lines. The form address and the button. The field map, including status, owner, pipeline, and source. What a repeat submission does. Where errors are read. What you will not buy until a new test disagrees with the note.
Hand that note to the developer. Hand the same note to the person who still pastes and ask which field you missed. The second reading is where hidden judgments show up. Source deserves its own line. If you later want to know which ad produced the card, the source value has to be specific enough to answer that. "Website" on every card makes the ads report useless. The integration did not fail. The map was too coarse.
Who is allowed to create cards matters as much as the field names. A personal login shared in chat will break the day that person leaves. An integration account the company can revoke is the durable version. It should create only the cards this form is allowed to create, in the pipeline you named. It should not be an admin that can export the whole CRM. Keep the secret out of the brief and out of the chat. The note can name the account. It should not contain the password.
When a specialist is the shorter path
Your team can watch one paste and send one test. Bring someone in when the CRM error lives in a system nobody on the team can open, when the create step is a job that fails without a signal the team can see, or when the map includes several pipelines and a repeat rule nobody wants to own. The job is not "install a CRM plugin". The job is one submission, one card, in the list the team already uses, and a retry that still leaves one card.
Services cover that kind of connection on systems you already run. Selected work shows the same shape of integration, with each result kept next to the operation that produced it. If you write, send the field map, the name of the list the team opens, and what one test did. Leave the passwords out.