GGHL Command  Member Hub Design mockup
22px
DW
The ModulesThe Comment-to-Client MachineThe vanishing leads bug
Video · placeholder

The vanishing leads bug

Lesson 5 of 7 · Module 04 · The Comment-to-Client Machine

The form said thank you. The webhook said success. And the leads were evaporating.

This is the nastiest bug in the whole build, and it is the same species of failure I teach in the silent-failure module: GHL does not error, it just quietly does nothing, and you find out later.

Here is the setup. Our landing page form posts to a GHL inbound webhook. The webhook starts the nurture workflow. Submit the form, GHL answers with a success message, the workflow runs. Everything reports green.

Here is what GHL does not tell you: a workflow started by an inbound webhook runs contactless. No contact attached. The payload arrives, the data is right there in it, the workflow executes its steps, and unless an action inside that workflow explicitly creates a contact from the payload, nobody gets saved. The email and name pass through the pipe and vanish on the other end. The form thanks people while their info evaporates.

How we caught it: we submitted a test lead, then went to Contacts and searched the email. Nothing. Form worked, webhook accepted, workflow ran, zero contacts.

And I will tell you the embarrassing middle part, because it will save you an hour. Our first diagnosis was wrong. We assumed the problem was field mapping on the trigger and went digging there. The trigger was fine. It had the sample payload captured and sitting in its mapping reference. The real gap was simpler and dumber: the workflow had no Create Contact action. The trigger receives data. Only an action saves it.

The fix takes two minutes:

Make the first action in the workflow a Create/Update Contact action. Map the fields straight from the webhook payload: Email mapped to {{inboundWebhookRequest.email}}, First Name mapped to {{inboundWebhookRequest.firstName}}, plus whatever else your form sends. Then republish.

One prerequisite, and this one is a standing rule for us now: POST a sample payload to the webhook before you try to map anything. The mapping picker reads from a captured request. If the webhook has never received data, there is nothing to pick from and the mapping silently will not work. Submit your own form once, or fire a test POST at the webhook URL, then map.

Now the test, and do not skip it, because this bug is invisible from the builder:

Submit the form with a real test email. Go to Contacts. Search that email. The contact must exist, with the right name, the right tag, and the workflow enrollment. We ran exactly this after the fix: posted a live test lead, watched the contact appear tagged and enrolled, then deleted the test contact to keep the list clean.

That is the standard. A green workflow is not proof. A success message is not proof. A funnel is live when you have personally watched one lead travel the entire pipe and come out the other end as a searchable contact.

Until that search returns a result, your funnel is a thank-you machine attached to a paper shredder.

Next lesson: what happens after the contact exists. The email that keeps the promise, and the ladder that climbs from free to paid.