Revset
Book a Free Audit

30-minute call · No obligation

HomeGHL HubCRM & ContactsBuild a Double Opt-in Flow in GoHighLevel: A Step-by-Step Guide
REVSET LABS · EXPERT GUIDE·CRM & Contacts

Build a Double Opt-in Flow in GoHighLevel: A Step-by-Step Guide

1,499 words·6 min read·Updated 28 April 2026·beginner·
Arsalan ZaffarArsalan ZaffarLinkedIn

👉 Start your 30-day GoHighLevel free trial.

Start 30-Day Free Trial
Quick Answer

To build a double opt-in flow, you will create two interconnected workflows: one for the initial opt-in and confirmation email, and another for tagging confirmed subscribers. You begin in Automation → Workflows to set up these sequences. This entire process typically takes about 20-30 minutes to configure.

Key Takeaways
  • Always use two separate workflows: one for the main opt-in sequence and another for confirming the tag application.
  • Ensure your confirmation email clearly explains why the user needs to click the link and what they will receive.
  • Design a simple, clear 'Thank You' landing page for confirmed subscribers to reinforce their action.
  • Thoroughly test your entire double opt-in flow from form submission to final tag application before making it live.
  • Implement a 'Wait' step in your main workflow to give subscribers time to click the confirmation link before marking them unconfirmed.

Why Use a Double Opt-in Flow in GoHighLevel?

A double opt-in flow is a crucial strategy for maintaining a healthy and engaged email list within GoHighLevel. It requires new subscribers to confirm their email address after initially signing up. This extra step verifies that the email address is valid and that the subscriber genuinely wants to receive your communications. Implementing double opt-in significantly reduces spam complaints, improves your sender reputation, and ensures higher email deliverability rates. It helps you build a list of truly interested contacts, leading to better engagement and conversion rates in the long run.

Step 1: Create Your 'Confirmed' Landing Page

The first essential piece of your double opt-in flow is a dedicated landing page. This page serves as the destination for your confirmation link. When a new subscriber clicks the link in your confirmation email, they will land here. This page also acts as the trigger point for marking them as a 'confirmed' contact in GoHighLevel.

1
Access the Funnel BuilderFrom the main dashboard, click on Sites → Funnels in the left-hand navigation menu. This opens the Funnel and Website builder.
2
Create a New Funnel (or Page)Click the + New Funnel button at the top right, or select an existing funnel to add a new page. Name your funnel something descriptive like 'Double Opt-in Confirmation Funnel'.
3
Add a New PageInside your chosen funnel, click + Add New Page. Give your page a clear name, such as 'Confirmation Thank You', and set a user-friendly path like `/confirmed-thank-you`.
4
Design Your Confirmation PageOpen the page in the editor by clicking Edit Page. Create a simple, clear page that thanks the subscriber for confirming their email. A headline like 'Thank You for Confirming!' and a brief message are sufficient.
5
Save Your PageClick the Save button in the top right corner of the page editor. Make sure your page is published and accessible via its URL.

⚠️ Do not skip publishing your confirmation page. The workflow will fail if the page URL is not live and accessible.

🔥 Pro Tip

Keep your confirmation page simple and free of distractions. Its sole purpose is to acknowledge the confirmation and act as a trigger, not to sell anything yet.

Step 2: Build the Confirmation Tagging Workflow

This dedicated workflow will run silently in the background. Its only job is to apply a 'Confirmed' tag to contacts who visit your newly created confirmation page. This tag is the key indicator that a subscriber has successfully completed the double opt-in process.

1
Navigate to WorkflowsGo to Automation → Workflows from the left-hand menu. This is where you will manage all your automated sequences.
2
Create a New WorkflowClick + Create Workflow at the top right, then select Start from scratch. Name this workflow clearly, for example, 'Double Opt-in - Apply Confirmed Tag'.
3
Set the Workflow TriggerClick + Add New Workflow Trigger. Search for and select Page Visited. This trigger activates the workflow when a specific page is accessed.
4
Configure the Page Visited TriggerUnder the Page Visited trigger settings, click Add Filter. Select Page URL and set the condition to is (or contains) the full URL of your confirmation 'Thank You' page created in Step 1. Save the trigger.
5
Add the 'Add Contact Tag' ActionClick the + icon below the trigger to add an action. Search for and select Add Contact Tag. This action will apply a tag to the contact who triggered the workflow.
6
Define the Confirmation TagType in your desired tag, such as 'confirmed-opt-in', and press Enter. This tag uniquely identifies confirmed subscribers. Save the action.
7
Publish the WorkflowToggle the workflow status from Draft to Publish in the top right corner. Click Save to make this tagging workflow active.

⚠️ Forgetting to publish this tagging workflow will prevent contacts from ever being marked as confirmed, breaking your entire double opt-in process.

🔥 Pro Tip

Use clear, consistent tags (e.g., 'confirmed-opt-in', 'pending-opt-in', 'unconfirmed-opt-in') to easily segment and manage your contacts later.

Try GoHighLevel Free

Start your 30-day GoHighLevel free trial

Everything in this guide is in your free trial. 30 days, no credit card — the platform behind 78+ revenue systems.

Start 30-Day Free Trial

Some links are affiliate links — if you sign up we may earn a commission, at no extra cost to you. We only recommend GoHighLevel because we build on it every day.

Step 3: Build the Main Double Opt-in Workflow

This is the core workflow that initiates the double opt-in process. It captures new subscribers, sends them the confirmation email, waits for their action, and then directs them based on whether they confirm or not. This workflow orchestrates the entire sequence from signup to final status.

1
Create a New WorkflowReturn to Automation → Workflows and click + Create Workflow. Choose Start from scratch again. Name this workflow something like 'Main Double Opt-in Sequence'.
2
Set the Initial Opt-in TriggerClick + Add New Workflow Trigger. Select Form Submitted or Survey Submitted, depending on how your subscribers are opting in. Choose the specific form or survey they complete.
3
Add a 'Pending' Tag (Optional but Recommended)Below the trigger, add an Add Contact Tag action. Use a tag like 'pending-opt-in' to identify contacts who have signed up but not yet confirmed. This helps with segmentation.
4
Send the Confirmation EmailAdd a Send Email action. Configure the sender name, sender email, and a clear subject line (e.g., 'Action Required: Confirm Your Subscription!').
5
Craft the Confirmation Email BodyWrite a concise email explaining why they need to confirm. Include a prominent call to action button or link. The link's URL must be the exact URL of your confirmation 'Thank You' page created in Step 1.
6
Add a 'Wait' StepAfter sending the email, add a Wait step. Set the duration for a reasonable period, such as '1 Day' or '2 Days'. This gives subscribers time to open the email and click the confirmation link.
7
Add an 'If/Else' ConditionBelow the 'Wait' step, add an If/Else condition. This will check if the contact has been tagged as 'confirmed' during the wait period.
8
Configure the 'Confirmed' ConditionSet the 'If' branch condition: Contact Tagis → 'confirmed-opt-in' (the tag you defined in Step 2). This checks if the tagging workflow has already applied the confirmation tag.
9
Define the 'Confirmed' Branch (YES Path)Under the 'YES' branch of the If/Else condition: Add a Remove Contact Tag action for 'pending-opt-in' (if you used it). Then, add a Move Contact to Workflow action to send them to your welcome sequence or another relevant workflow.
10
Define the 'Unconfirmed' Branch (NO Path)Under the 'NO' branch: You can add actions like Send Email for a reminder, Remove Contact Tag for 'pending-opt-in', and Add Contact Tag for 'unconfirmed-opt-in'. You might also consider deleting the contact or adding them to a re-engagement workflow after a longer period.
11
Publish the Main WorkflowToggle the workflow status from Draft to Publish and click Save. Your main double opt-in sequence is now active.

⚠️ Ensure the confirmation link in your email exactly matches the URL of your confirmation landing page. Any mismatch will prevent contacts from being tagged as confirmed.

🔥 Pro Tip

Consider adding a reminder email in the 'NO' path after a shorter wait (e.g., 12-24 hours) to gently prompt unconfirmed subscribers before marking them as unconfirmed permanently.

Step 4: Test Your Double Opt-in Flow

Thoroughly testing your entire double opt-in flow is critical before deploying it to live subscribers. This ensures every step functions correctly, from the initial signup to the final tag application and welcome sequence. A single broken link or misconfigured trigger can prevent new leads from entering your funnel.

1
Submit Your Opt-in FormGo to your live opt-in form or survey page and submit it using a test email address you control. Use a unique email address that is not already in your GoHighLevel system.
2
Check Your InboxOpen the test email account and verify that you received the confirmation email. Check spam or junk folders if it does not appear in the primary inbox.
3
Click the Confirmation LinkClick the confirmation link within the email. Verify that it directs you to your 'Thank You for Confirming!' landing page.
4
Verify Contact Tags in GoHighLevelImmediately after clicking the link, navigate to Contacts in GoHighLevel and find your test contact. Confirm that the 'confirmed-opt-in' tag has been applied and that the 'pending-opt-in' tag (if used) has been removed.
5
Check Workflow StatusGo to Automation → Workflows, open your 'Main Double Opt-in Sequence', and click on Workflow History. Find your test contact and ensure they progressed through the 'YES' path as expected, moving to the welcome sequence.
6
Test Unconfirmed Path (Optional)Repeat the process with another test email, but this time, do not click the confirmation link. After the 'Wait' step duration, check the contact's tags and workflow history to ensure they followed the 'NO' (unconfirmed) path.

⚠️ Do not skip testing. A broken double opt-in flow can lead to lost leads, frustrated subscribers, and damage to your email sender reputation.

Troubleshooting Common Issues

⚠️ Confirmation email is not being sent.
Check the 'Send Email' action in your main workflow. Ensure the sender details are correct, the email template is selected, and the workflow is published. Also, check your email service provider's logs for delivery issues.
⚠️ Confirmation link leads to a broken page or error.
Verify that the URL in your confirmation email's link exactly matches the published URL of your 'Thank You for Confirming!' landing page. Ensure the landing page itself is published and active under Sites → Funnels.
⚠️ Contact is not getting the 'confirmed-opt-in' tag.
Check your 'Double Opt-in - Apply Confirmed Tag' workflow. Ensure it is published, the 'Page Visited' trigger is correctly configured for your 'Thank You' page URL, and the 'Add Contact Tag' action is set to the correct tag. Also, ensure the contact actually visited the page.
⚠️ Contact stays in the 'pending' state or follows the 'unconfirmed' path even after clicking the link.
Review the 'If/Else' condition in your main workflow. Ensure it checks for the *exact* 'confirmed-opt-in' tag. The 'Wait' step duration should also be long enough for the tagging workflow to execute before the 'If/Else' condition is evaluated.
⚠️ Workflow trigger (Form Submitted) is not working.
Verify that the correct form or survey is selected in the trigger settings of your 'Main Double Opt-in Sequence' workflow. Test the form submission independently to ensure it's functioning and connected to GoHighLevel.

Common Mistakes to Avoid

  • Not publishing both the confirmation landing page and both workflows (main and tagging).
  • Incorrectly copying the confirmation landing page URL into the email link, leading to a broken link.
  • Forgetting to add a 'Wait' step before the 'If/Else' condition in the main workflow, which doesn't give subscribers time to confirm.
  • Using inconsistent or misspelled tags between the tagging workflow and the main workflow's 'If/Else' condition.
  • Not testing the entire flow with a new, unique email address before making it live to subscribers.

Frequently Asked Questions

QWhat happens if a subscriber doesn't click the confirmation link?
If a subscriber does not click the confirmation link within the timeframe set in your 'Wait' step, they will follow the 'NO' (unconfirmed) path of your main workflow. Here, you can choose to send a reminder email, mark them with an 'unconfirmed-opt-in' tag, or remove them from your list entirely. It is crucial to have a clear strategy for unconfirmed contacts to maintain list hygiene.
QCan I customize the confirmation email and landing page?
Yes, GoHighLevel offers extensive customization options for both your emails and landing pages. You can use the email builder to design your confirmation email with your branding, logos, and specific messaging. Similarly, the Funnel Builder allows you to fully customize the 'Thank You for Confirming!' landing page to match your brand's aesthetics and provide any additional information you deem necessary after confirmation.
QWhy do I need two separate workflows for double opt-in?
You need two separate workflows for a robust double opt-in system in GoHighLevel because the confirmation action (clicking a link that leads to a page) is best handled by a distinct 'Page Visited' trigger. The first workflow handles the initial signup and sends the email. The second, simpler workflow specifically listens for the page visit and applies the 'confirmed' tag. The first workflow then checks for this tag to determine the contact's path, creating a reliable and flexible setup.
QWhat tags should I use for double opt-in?
For effective double opt-in management, we recommend using at least two distinct tags: 'pending-opt-in' and 'confirmed-opt-in'. You can optionally add 'unconfirmed-opt-in' for those who never click. The 'pending' tag is applied immediately after initial signup. The 'confirmed' tag is applied when they click the link. The main workflow then uses these tags to segment contacts and direct them to the appropriate next steps, ensuring clear identification of their subscription status.
QHow can I test my double opt-in flow without affecting live contacts?
To test your double opt-in flow safely, always use a unique test email address that is not already in your GoHighLevel system. Submit your live opt-in form with this test email. Then, follow the entire process: check your inbox for the confirmation email, click the link, and verify the tags and workflow progression for your test contact in GoHighLevel. This allows you to simulate a real subscriber's journey without impacting your active list.
Try GoHighLevel Free

Start your 30-day GoHighLevel free trial

Everything in this guide is in your free trial. 30 days, no credit card — the platform behind 78+ revenue systems.

Start 30-Day Free Trial

Some links are affiliate links — if you sign up we may earn a commission, at no extra cost to you. We only recommend GoHighLevel because we build on it every day.

Arsalan Zaffar
Arsalan Zaffar
Revset Labs · Revenue Systems · 78+ GHL Builds

Arsalan writes GHL guides from real build experience — 78+ systems, $9.2M in client pipeline. Wharton, CXL & Google certified.

Connect on LinkedIn
Tags:GoHighLevelDouble Opt-inEmail MarketingWorkflowsAutomationList Building