How to Add a Scored Quiz to a GoHighLevel Funnel | Origin

How to add a scored quiz to any GoHighLevel funnel

Connor CallahanApril 7, 20268 min read

GHL's native quiz builder does not support custom question types like image cards, sliders, or ranking grids for scored lead qualification. Adding a scored quiz to a GoHighLevel funnel requires either the native Quiz Builder with its percentage-based tier system or custom HTML code pasted into a Custom Code element. This walkthrough covers the full workflow for both paths: the infrastructure you set up inside GHL before the quiz exists, how the quiz sends scored data to the CRM, how workflows route leads based on that score, and how to verify everything works before real traffic arrives.

The quiz builder approach you choose determines the ceiling on your lead segmentation quality, but the GHL setup underneath is the same regardless. The official GHL quiz builder documentation covers the native builder's interface. This article covers the infrastructure that makes any quiz produce pipeline results. Start there.

Set up custom fields before touching the quiz

Every data point the quiz captures needs a destination inside the GHL contact record. If the field does not exist when the data arrives, GHL drops it silently. No error message. No partial save. The data is gone.

Open the sub-account. Navigate to Settings, then Custom Fields. Create the following fields at minimum for a scored lead qualification quiz:

Quiz Score (number): Stores the calculated numeric score. Use a number field type, not text, so workflow conditions can compare values with greater-than and less-than operators.

Lead Temperature (single-line text or dropdown): Stores the tier label that the scoring logic assigns. Values are typically Hot, Warm, or Cold, but you can use any labels that match your pipeline stage names. A dropdown field with predefined options is cleaner for filtering.

Key Answer Fields (varies): For each quiz answer the business owner wants visible in the contact record without opening the full quiz response, create a dedicated field. A realtor quiz might store Timeline (text: "0 to 3 months," "3 to 6 months," "6 to 12 months"), Budget Range (text: "$200K to $350K," "$350K to $500K"), and Property Type (text: "single family," "condo," "townhome"). The remaining 12 questions in a 16-question quiz contribute to the score calculation but do not need individual fields.

Name every custom field with a consistent prefix so they sort together in the CRM. Use quiz_score, quiz_temperature, quiz_timeline, quiz_budget. The prefix groups them visually and prevents naming collisions with fields from other integrations.

Build the pipeline before the first lead arrives

The pipeline is where scored leads land after the workflow processes them. Create a pipeline (or use an existing one) with stages that correspond to the quiz's scoring tiers.

A 3-tier scoring system needs at minimum: Hot Lead (score above threshold, ready to book), Warm Lead (score in mid-range, needs nurturing), and Cold Lead (score below threshold, long-term follow-up). If your scoring model uses 5 or 6 tiers, create matching stages.

Each stage should have a clear definition: what score range qualifies a lead for this stage, what the business owner should do when they see a lead in this stage, and what automated follow-up the system sends. Write these definitions before the quiz goes live. A pipeline with unlabeled or ambiguous stages creates confusion when the business owner opens it for the first time and sees 30 contacts distributed across stages with no context.

Add a final stage called Booked (or whatever matches the client's language for a scheduled appointment). The workflow will move leads to this stage when the calendar booking event fires. The pipeline should tell a complete story from quiz submission to booked appointment without the agency owner having to explain it.

Connect the quiz output to the CRM

This is the step where the two approaches diverge.

Path A: GHL native quiz builder

Build the quiz under Sites, then Quizzes. Configure your questions, assign point values, and set up categories and scoring tiers. The quiz builder uses a 0 to 100 normalized scoring scale. Tiers (Low, Medium, High) are defined as percentage ranges.

To get quiz data into the CRM, embed the quiz on a funnel page using the Integrate button (which provides an iframe embed code), then use the Quiz Submitted workflow trigger to fire automation when a contact completes the quiz. The trigger can filter by quiz name, overall score, or category score. Inside the workflow, use Update Contact actions to write score values to your custom fields and a Pipeline Stage Change action to route the lead.

Path B: Custom HTML quiz code

Paste the quiz code into a Custom Code element on the GHL funnel page. The JavaScript inside the code handles scoring on the client side: it assigns point values per answer, applies any weighting or conditional logic, calculates the total, determines the temperature tier, and packages all data into a payload.

The payload reaches GHL through one of two methods. A webhook sends an HTTP POST to a GHL webhook URL you create in the sub-account under Automations, then Workflows, then Webhook trigger. The JSON payload maps each field to a custom field key. A hidden form submission uses an invisible GHL form on the same funnel page. The JavaScript fills the hidden input fields and triggers the form's native submit event. The form submission enters the CRM like any other form, and a Form Submitted workflow trigger handles the routing.

The webhook path is more flexible: it can send computed values (composite scores, concatenated answer strings, timestamp data) that the native form structure does not support. The hidden form path is simpler to troubleshoot because it uses GHL's standard form processing pipeline.

Build the workflow that routes leads by score

Create a new workflow. Set the trigger to Quiz Submitted (for the native builder) or Webhook (for custom code with a webhook) or Form Submitted (for custom code with a hidden form).

Add an IF/ELSE condition that reads the quiz_score custom field:

Branch 1: quiz_score >= 70. This is a hot lead. The workflow adds a tag (quiz_hot), moves the contact to the Hot Lead pipeline stage, sends an internal notification to the business owner with the contact name, phone number, and score, and enrolls the contact in the hot lead email sequence.

Branch 2: quiz_score >= 40 AND quiz_score < 70. This is a warm lead. The workflow adds a tag (quiz_warm), moves the contact to Warm Lead, and enrolls them in the nurture sequence. No internal notification fires immediately, but a reminder fires after 48 hours if the contact has not booked.

Branch 3: quiz_score < 40. This is a cold lead. The workflow adds a tag (quiz_cold), moves the contact to Cold Lead, and enrolls them in a long-term drip campaign with monthly check-ins.

The internal notification for hot leads is critical. The business owner needs to know within 60 seconds that someone ready to buy just completed the quiz. The notification should include the contact name, phone number, quiz score, and any key answer fields (timeline, budget) so the business owner can call without opening the CRM first.

For agencies working across multiple niches, the score thresholds and email sequences change per niche, but the workflow architecture stays identical. The structure is portable. The content is niche-specific.

Run a test lead through the entire system

Before sending any traffic, submit a test lead. Use a personal email address that is not already a contact in the sub-account. Complete every question in the quiz and submit.

Check the following in this exact order:

1. Contact record exists. Open Contacts and find the test submission. If the contact does not appear, the quiz-to-CRM connection is broken. For webhooks, verify the webhook URL is correct and the payload format matches. For hidden forms, verify the form fields are populated before the submit event fires.

2. Custom fields are populated. Open the contact record and check that quiz_score, quiz_temperature, and all key answer fields contain the expected values. If the score field is empty, the webhook payload key does not match the custom field key. The most common error is a case mismatch or an extra space in the field name.

3. Workflow triggered. Check the contact's workflow history. If the workflow did not fire, verify the trigger type matches the data submission method (Quiz Submitted trigger for native quizzes, Webhook trigger for webhooks, Form Submitted for hidden forms). Also confirm the workflow is published and active.

4. Pipeline stage is correct. Open the pipeline and confirm the test contact landed in the stage that matches their score. If a lead with a score of 85 is in the Cold Lead stage, the IF/ELSE conditions are misconfigured.

5. Email or SMS sent. Check the contact's conversation history. Confirm the first message in the sequence was sent or is queued for delivery.

6. Internal notification received. Check the business owner's email inbox, SMS, or in-app notifications for the hot lead alert. If the notification did not arrive, the notification step in the workflow is misconfigured or the recipient is wrong.

Key takeaway: The quiz itself is the visible part. The infrastructure underneath (custom fields, pipeline stages, workflow routing, internal notifications, email sequences) is where the conversion happens. A quiz without this infrastructure is a form that collects data nobody acts on. For a breakdown of how the native builder compares to custom code on the design and scoring side, see the full comparison.

Three setup mistakes that break the funnel

Missing custom fields. The quiz sends data to field names that do not exist in the sub-account. GHL drops the data. The contact record shows a name and email but no score, no temperature, and no answer data. The workflow cannot route what it cannot read. Always create fields first, verify keys match, then test.

Workflow trigger mismatch. The quiz uses a webhook, but the workflow trigger is set to Form Submitted. Or the quiz uses the native builder, but the workflow trigger is Webhook instead of Quiz Submitted. The data enters the CRM but the workflow never fires. The lead sits in the pipeline's default stage (or no pipeline at all) and receives no follow-up. Always match the trigger type to the data submission method.

No internal notification for hot leads. The quiz scores a lead at 90 out of 100. The workflow moves them to the Hot Lead pipeline stage and sends an automated email. But nobody calls them. The business owner did not know the lead existed because no notification was configured. Hot leads go cold in hours, not days. The internal notification is the single most valuable step in the workflow. For more inspiration on what niche-specific quiz structures look like, see 5 niche quiz ideas for GHL agency owners.

Scoring. Segmentation.
One import.
Quiz, pipeline, workflows, and email sequences. Already wired.
Get Origin
$497 one-time + $97/mo | 10 niches included

Frequently asked

Yes. Custom fields must exist in the sub-account before the quiz sends data. If a webhook payload references a field name that does not exist, GHL silently drops that data point. Create every custom field first, confirm the field keys match the webhook payload keys, then test with a submission before going live.
The quiz sends the calculated score to a GHL custom field via webhook or hidden form submission. A GHL workflow listens for the quiz submission trigger (or webhook trigger) and reads the score custom field value. An IF/ELSE condition in the workflow checks the score against thresholds and moves the contact to the corresponding pipeline stage. The score itself does not move the contact. The workflow does, based on the score value.
A webhook sends data from the quiz JavaScript directly to a GHL webhook URL via an HTTP POST request. The payload is JSON. A hidden form submission uses an invisible GHL form element on the same funnel page. The quiz JavaScript fills the hidden fields and triggers the form's submit event. Both methods get data into the CRM. The webhook is more flexible because it can send any data structure. The hidden form is simpler because it uses GHL's native form processing.
Yes. The workflow that processes the quiz submission uses IF/ELSE branches to check the score value. Each branch can enroll the contact in a different email sequence, assign a different tag, or add the contact to a different campaign. A lead scoring 80 out of 100 enters the hot lead sequence. A lead scoring 30 enters the nurture sequence. The branching happens inside the workflow, not inside the quiz.
Submit a test lead through the full quiz. Verify the contact record shows all custom field values populated correctly. Confirm the workflow triggered by checking the contact's workflow history. Verify the pipeline stage matches the expected tier for the test score. Check that the first email or SMS in the sequence was sent or is queued. Confirm the internal notification reached the business owner's inbox or phone. If any step fails, fix it before traffic starts.
A typical lead qualification quiz uses 3 to 8 custom fields: one for the total score, one for the lead temperature tag (hot, warm, cold), and one for each key answer the business owner wants visible in the contact record without opening the quiz response. A 16-question realtor quiz might store the total score, the temperature, the timeline answer, the budget range answer, and the property type preference. The remaining answers contribute to the score calculation but do not need individual fields.