Skip to content
WorkflowsTutorial

Lead-to-CRM automation with Make: a safe setup guide

Build a lead-to-CRM automation with Make that captures forms, prevents duplicate contacts, tracks source, and starts controlled follow-up.

RunbookSeptember 24, 20269 min read
Lead-to-CRM automation with Make: a safe setup guide
FIG. 01 — FEATURED

This sheet contains partner links. A purchase through one earns Runbook a commission at no additional cost to you. How we make money.

In about 75 minutes, you'll have a lead-to-CRM automation with Make and GoHighLevel that catches a website inquiry, files it under the right source, and prepares the correct follow-up. You will test the whole route without contacting a customer. The result is one visible sales record instead of another lead stranded in an inbox.

What you'll build

Your website form will send each inquiry to Make, the software that moves information between business tools. Make will check the submission and pass it to GoHighLevel. GoHighLevel is the CRM, the software that stores your customers and sends the follow-ups.

The finished route looks like this:

StageWhat happensWhat you check
FormA visitor submits contact details and a questionConsent and source are present
Make webhookThe inquiry arrives immediatelyRequired fields are not blank
GoHighLevel contactOne person is created or updatedNo duplicate record appears
Source tagThe contact receives source-websiteReporting can separate lead sources
OpportunityA potential job enters the New Lead stageThe sales board shows an owner and status
Follow-upA workflow prepares the first replySending stays off until testing passes

A webhook is a web address that catches data another system sends. Make says webhook scenarios normally run as soon as information arrives, so this route removes the wait between a form submission and a CRM record. If you have not built the receiving address yet, complete the Make webhook setup first.

Your move

Build through the opportunity stage with messaging paused. Submit the same test lead twice. Turn on follow-up only after GoHighLevel still shows one contact, one open opportunity, and the correct source tag.

Stack

You need three things:

  1. A website form that can send data to a webhook.
  2. A Make scenario, which is Make's name for one automated routine.
  3. A GoHighLevel sub-account with permission to manage contacts, opportunities, tags, and workflows.

Make's GoHighLevel connector documentation lists modules for searching, creating, and updating contacts, plus creating and updating opportunities. A module is one step on the Make canvas. The connection uses authorization from GoHighLevel, so you do not paste a password into the scenario.

Use test details that belong to you. Do not use a real prospect as the first run. Write AUTOMATION TEST in the message field so nobody mistakes the record for a sale.

Steps

1. Prepare the CRM before Make

In GoHighLevel, open the correct sub-account. Select Opportunities, then Pipelines, then Create New Pipeline. Name it Inbound leads. Add these stages:

  1. New Lead
  2. Contacted
  3. Booked
  4. Won
  5. Lost

Keep the first version short. A stage should represent a real change in the sale, not every click a team member makes.

Next, open Settings > Business Profile > Contact Preferences. Turn Allow Duplicate Contacts off. Choose Email as the primary match and Phone as the secondary match if your form collects both. HighLevel's contact deduplication guide explains that these preferences control whether matching submissions create another record or update the existing person.

Create the tag source-website. A tag is simply a label attached to a contact. Use a fixed label rather than free text, or you will eventually get several versions such as Website, web-site, and site lead that split the same source across reports.

2. Capture one complete sample

In Make, select Scenarios > Create a new scenario. Name it Website lead to GoHighLevel v1. Add Webhooks > Custom webhook, then select Add beside the Webhook field. Name the webhook website-leads-v1 and copy its address into your form's webhook or integration setting.

Select Run once in Make. Open the form in a private browser window and submit your own details. Include every field the live form can send:

  • first name
  • last name
  • email
  • phone
  • message
  • consent
  • source
  • submission ID

Return to Make and select the numbered bubble above the webhook. Check that every value sits under the correct label. Make's webhook documentation says incoming requests are queued and usually start the scenario immediately. That makes the webhook useful for new inquiries, but it also means a bad field can reach the next step quickly.

3. Add a validation gate

Select the right edge of the webhook module and add Tools > Set multiple variables. Create clean variables named first_name, last_name, email, phone, message, consent, source, and submission_id. Map the matching form fields into them.

Set source to website inside Make rather than trusting a visitor-supplied value. Keep the original landing-page name in a separate field if you need campaign detail.

Select the line after the Tools module and choose Set up a filter. Name it Valid lead with consent. Require these conditions:

  • consent equals true
  • message exists
  • either email or phone exists

The filter is a gate. A submission that cannot be contacted, has no request, or lacks the consent your process requires should stop before it enters the customer database.

4. Connect Make to GoHighLevel

Add GoHighLevel > Create a Contact after the filter. In Connection, choose Create a connection, select the location connection, and authorize only the sub-account receiving these leads. If your account requires a private marketplace application, follow the connection screen to create it and grant contact and opportunity access.

Map first name, last name, email, phone, and message. Map source-website into Tags. If the module exposes a source field, map the fixed value website there too.

Do not turn on the scenario yet. Select Run once, send the test form again, and inspect the new contact under Contacts > Smart Lists in GoHighLevel.

The step that breaks is duplicate handling. Submit the exact same email and phone a second time. If another contact appears, stop. Recheck Settings > Business Profile > Contact Preferences. If the connection still creates duplicates, replace the Create a Contact step with Search Contacts, then send matches to Update a Contact and unmatched submissions to Create a Contact. Never let two records trigger two customer messages.

5. Create the sales opportunity inside GoHighLevel

Keep Make responsible for a clean contact handoff. Let GoHighLevel place that person on the sales board.

Open Automations > Workflows, select Create Workflow, then choose a blank workflow. Name it Website lead intake. Select Add Trigger > Contact Tag. Set the event to Added and choose source-website.

HighLevel's Contact Tag trigger guide confirms that a workflow can begin when a specified tag is added. It also warns that tags do not trigger older contacts retroactively. That is useful here: only a new handoff from Make should enter this route.

Add Opportunity > Create/Update Opportunity. Select the Inbound leads pipeline, the New Lead stage, and Open status. If one person can submit several requests, decide whether those should update one open opportunity or create separate jobs. For most local businesses, one open opportunity per current inquiry keeps the board readable.

Add an internal notification to the responsible person. Include the contact name, phone, email, message, and source. Keep the workflow in draft while you test.

6. Add follow-up without sending it

Below the opportunity action, add an email or text action. Leave it unpublished, or route it only when the contact carries a separate test-approved tag. The first reply should confirm receipt and set an honest expectation for a human response.

Use the CRM follow-up comparison if you still need to choose the sending system. Remember that whether your emails actually reach inboxes is called deliverability. Before switching on email, complete the inbox authentication build.

7. Run the two-pass test

Publish only the opportunity and internal-notification actions. Keep customer messaging disabled. Then run these tests:

  1. Submit a complete form. Confirm one contact, the source-website tag, one open opportunity, and one internal notice.
  2. Submit the same details again. Confirm the existing contact changes or remains intact, and no second contact appears.
  3. Submit without consent or without a contact route. Confirm the Make filter stops the run before GoHighLevel.
  4. Open Make's scenario history and inspect each module. Green checks are not enough. Read the actual mapped values.

When both valid submissions leave one clean record, publish the follow-up action and send one last test to yourself. Then switch the Make scenario on.

The part that breaks

Duplicate contacts are the costly failure because each copy can start another text, email, task, and opportunity. The problem often hides during a single happy-path test. Your second identical submission is the important one.

Source labels break next. Do not let every form invent its own spelling. Keep a small approved list such as source-website, source-google, and source-referral. That gives you reporting you can trust later.

Finally, watch the Make connection. If authorization expires, the website may still show a successful form message while the CRM receives nothing. In Make, open Scenario settings and enable storage for incomplete executions where your plan permits it. Check failed runs each workday. For volume and credit planning, use the Make pricing breakdown.

Copy this

Paste this into the first reply, then replace the brackets before publishing:

Subject: We received your request

Hi {{contact.first_name}},

Thanks for contacting [Business name] about [service]. We received your request and a team member will reply by [honest time window].

If the request is urgent, call [phone number].

[Business name]

Keep this message factual. Do not promise a time you cannot meet after hours or on weekends.

Upgrade path

After seven clean days, add one improvement at a time. Route leads by service area, assign an owner, or write the landing-page name into a custom field. Test after every change.

Then add a daily exception check: compare form submissions with CRM contacts and investigate any missing submission ID. That simple count catches silent failures before a week of inquiries disappears.

Your next build is the automation library. Pick the handoff that removes the next repeated copy-and-paste job, and keep the same rule: one controlled test before customer contact. Get the next build.

Frequently asked questions

What does a lead-to-CRM automation do?

It takes a new inquiry from your form, checks the information, creates or updates the person in your CRM, records the lead source, and starts the correct follow-up routine.

How long does this Make and GoHighLevel setup take?

Allow about 75 minutes for the first build, including the CRM connection, duplicate checks, two test submissions, and a review of the paused follow-up workflow.

How do you stop duplicate contacts in GoHighLevel?

Turn off Allow Duplicate Contacts, match by email first and phone second, then submit the same test lead twice and confirm that one contact record remains.

Should the first test send an email or text message?

No. Keep customer messages disabled until the contact, source tag, pipeline opportunity, and duplicate test all produce the expected result.

About Runbook

AI tools and automation builds for marketers. What to use, how to wire it, and the workflow to copy this week. How we work

GET THE NEXT DISPATCH

Run the next build before your competitors read about it.

One short email when an AI tool or automation actually changes the work, with the build to copy.

No send unless there is a build worth running.

// keep_reading

Related builds