← Learning Library

πŸš€ GHL WebDev Ultimate Workspace V10 (MEGA EDITION)

The 100% Complete Toolkit: UI Design, ALL 50 CSS Libraries, CRM Automation, and Funnel Mockups.

πŸ—ΊοΈ Step-by-Step Beginner Roadmap

Treat this as your standard operating procedure for your first month. Don't rush into code until Week 3.

Week 1: Master the Native Builder Anatomy


Week 2: Mobile Optimization (No Code Yet)


Week 3: CSS Injection & Overrides


Week 4: Advanced Embeds & Polish

🎨 The 50 Component Library

Select a category. Replace #c-xxx in the code with your actual Element ID.

1. Gradient Text

Gradient
#c-xxx { background: linear-gradient(90deg, #ff8a00, #e52e71); -webkit-background-clip: text; -webkit-text-fill-color: transparent; }

2. Hover Sweep

Hover Me
#c-xxx { background-image: linear-gradient(120deg, #84fab0, #8fd3f4); background-size: 100% 0.2em; background-position: 0 88%; transition: 0.25s; } #c-xxx:hover { background-size: 100% 88%; }

3. Typewriter

Typing...
#c-xxx { overflow: hidden; border-right: .15em solid orange; white-space: nowrap; animation: typing 3.5s steps(30,end), blink-caret .5s step-end infinite; }

4. Neon Glow

NEON
#c-xxx { color: #fff; text-shadow: 0 0 5px #fff, 0 0 10px #fff, 0 0 20px #ff00de, 0 0 40px #ff00de; }

5. 3D Text

3D TEXT
#c-xxx { color: #ccc; text-shadow: 1px 1px 0 #999, 2px 2px 0 #888, 3px 3px 0 #777; }

6. Marker Highlight

Highlighted
#c-xxx { background: linear-gradient(104deg, rgba(255,255,0,0) 0.9%, rgba(255,255,0,1) 2.4%, rgba(255,213,0,0.5) 5.8%, rgba(255,213,0,0.1) 93%, rgba(255,255,0,0) 96%); }

7. Glitch Text

Glitch
/* Needs ::before/after pseudo elements, best used in custom HTML block */

8. Stroke Only

STROKE
#c-xxx { color: transparent; -webkit-text-stroke: 1px #1565c0; }

9. Letter Spacing

HOVER ME
#c-xxx { transition: letter-spacing 0.3s; } #c-xxx:hover { letter-spacing: 5px; }

10. Dark Reveal

SECRET
#c-xxx { color: transparent; background: #333; transition: 0.3s; } #c-xxx:hover { color: #fff; }

1. Glowing CTA

#c-xxx { animation: glow 1.5s infinite; } @keyframes glow { 0%, 100% { box-shadow: 0 0 5px #0f0; } 50% { box-shadow: 0 0 20px #0f0; } }

2. Neumorphism

#c-xxx { box-shadow: 5px 5px 10px #a3b1c6, -5px -5px 10px #fff; } #c-xxx:active { box-shadow: inset 5px 5px 10px #a3b1c6, inset -5px -5px 10px #fff; }

3. Slide Fill

#c-xxx { position: relative; z-index: 1; transition: 0.3s; border: 2px solid #1565c0; } #c-xxx:hover::before { width: 100%; } /* Requires ::before pseudo setup */

4. 3D Push

#c-xxx { box-shadow: 0 5px #09316b; transition: 0.1s; } #c-xxx:active { transform: translateY(4px); box-shadow: 0 1px #09316b; }

5. Outline Pulse

#c-xxx { animation: pulse 1.5s infinite; } @keyframes pulse { 70% { box-shadow: 0 0 0 10px rgba(21,101,192,0); } }

6. Gradient Border

#c-xxx { border: 2px solid transparent; border-image: linear-gradient(to right, #ff8a00, #e52e71) 1; }

7. Ghost Button

#c-xxx { background: transparent; border: 2px solid #333; color: #333; transition: 0.3s; } #c-xxx:hover { background: #333; color: #fff; }

8. Hover Lift

#c-xxx { transition: 0.3s; } #c-xxx:hover { transform: translateY(-5px); box-shadow: 0 10px 15px rgba(0,0,0,0.2); }

9. Wobble Error

#c-xxx:hover { animation: wobble 1s; } /* Requires wobble keyframes */

10. Rounded Pill

#c-xxx { border-radius: 50px !important; padding: 15px 40px !important; }

1. Glassmorphism

Glass
#c-xxx { background: rgba(255,255,255,0.2); backdrop-filter: blur(10px); border: 1px solid rgba(255,255,255,0.3); }

2. Float on Hover

Hover Me
#c-xxx { transition: 0.3s; } #c-xxx:hover { transform: translateY(-10px); box-shadow: 0 15px 20px rgba(0,0,0,0.2); }

3. Glow Border

Glow Box
#c-xxx { border: 2px solid transparent; transition: 0.3s; } #c-xxx:hover { border-color: #00ff00; box-shadow: 0 0 15px #00ff00; }

4. Dark Mode Panel

Dark Mode
#c-xxx { background: #1e1e1e !important; color: #fff !important; border: 1px solid #333; }

5. Avatar Ring

#c-xxx { border-radius: 50%; border: 3px solid #1565c0; padding: 5px; }

6. Pricing Badge

Pro Plan
/* Use Custom HTML for exact pseudo element mapping */

7. Floating Card

Floating
#c-xxx { animation: cfloat 4s ease-in-out infinite; } @keyframes cfloat { 50% { transform: translateY(-10px); } }

8. Soft Shadow

Soft Drop
#c-xxx { box-shadow: 0 20px 40px -14px rgba(0,0,0,0.15) !important; border: none !important; }

9. Border Draw

Hover Border
#c-xxx { border: 1px solid #ccc; transition: 0.5s; } #c-xxx:hover { border-color: #1565c0; }

10. Circle Cropping

/* Target Row/Column */ #c-xxx { border-radius: 50% !important; overflow: hidden; }

1. Fixed Image Zoom

#c-xxx { overflow: hidden !important; border-radius: 8px; } #c-xxx img { transition: transform 0.5s ease !important; } #c-xxx:hover img { transform: scale(1.3) !important; }

2. CSS Loader

.loader { border: 4px solid #f3f3f3; border-top: 4px solid #1565c0; border-radius: 50%; animation: spin 1s linear infinite; }

3. Hover Shake

πŸ””
#c-xxx:hover { animation: shake 0.5s; } @keyframes shake { 25% { transform: translateX(-5px); } 75% { transform: translateX(5px); } }

4. Bounce Idle

πŸ‘‡
#c-xxx { animation: bounce 2s infinite; } /* Keyframes needed */

5. Fade Up Info

New Alert!
#c-xxx { animation: fadeUp 2s infinite; } @keyframes fadeUp { 0% { opacity: 0; transform: translateY(20px); } 100% { opacity: 1; transform: translateY(0); } }

6. Heartbeat

❀️
#c-xxx { animation: heartbeat 1.5s infinite; } @keyframes heartbeat { 50% { transform: scale(1.2); } }

7. Pendulum Swing

πŸ•°οΈ
#c-xxx { transform-origin: top center; animation: swing 2s infinite; }

8. Skeleton Load

#c-xxx { background: linear-gradient(90deg, #eee 25%, #ddd 50%, #eee 75%); background-size: 200% 100%; animation: loading 1.5s infinite; }

9. Pulse BG

#c-xxx { animation: pulseBg 2s infinite; } @keyframes pulseBg { 70% { box-shadow: 0 0 0 15px rgba(255, 152, 0, 0); } }

10. Continuous Spin

βš™οΈ
#c-xxx { animation: spin 2s linear infinite; }

1. Sticky Header

#c-xxx { position: sticky !important; top: 0; z-index: 9999; }

2. Form Focus Glow

.ghl-form-wrap input:focus { border-color: #1565c0 !important; box-shadow: 0 0 8px rgba(21,101,192,0.4) !important; }

3. Hide on Mobile

@media only screen and (max-width: 767px) { #c-xxx { display: none !important; } }

4. Hide on Desktop

@media only screen and (min-width: 768px) { #c-xxx { display: none !important; } }

5. Disable Text Select

Try highlighting me
#c-xxx { user-select: none; -webkit-user-select: none; }

6. Truncate Text

This is a very long text that will get cut off
#c-xxx { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

7. Custom Scrollbar

::-webkit-scrollbar { width: 10px; } ::-webkit-scrollbar-thumb { background: #1565c0; border-radius: 5px; }

8. Absolute Centering

#c-xxx { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); }

9. Blur Background

#c-xxx { backdrop-filter: blur(8px); background: rgba(0,0,0,0.5); }

10. Full Screen Height

#c-xxx { min-height: 100vh !important; display: flex; flex-direction: column; justify-content: center; }

πŸ“– Deep-Dive WebDev Guide (The SOP)

Follow these exact phases for every single page you build to ensure professional quality.

Phase 1: Wireframing & Structural Logic

  1. Determine the Goal: Is this a Lead Gen funnel (requires a form) or a Sales Page (requires a checkout)? Choose your GHL templates accordingly.
  2. The Z-Pattern: Users read in a Z shape. Place your Logo top left, CTA button top right, main headline center-left, and hero image center-right.
  3. Container Widths: Do not make text stretch all the way across a desktop screen; it is hard to read. Limit text columns to a maximum of 800px wide.

Phase 2: Global Styling

  1. Color Palette: Pick exactly 3 colors. A Primary brand color, a Secondary background color, and an Accent color specifically for buttons to make them pop.
  2. Typography Rules: Set Headings (H1, H2, H3) to a bold font like Montserrat or Poppins. Set body text to a highly readable font like Open Sans or Roboto.
  3. Implementation: Apply these settings in the Global Typography and Colors menu before adding elements.

Phase 3: The Build & CSS Injection

  1. Build Native First: Do 90% of your work using GHL's native padding, margin, and color tools. Do not use CSS unless you have to.
  2. Apply Upgrades: Once the page is built, look at elements that feel "boring." Grab the CSS Selectors for your main Call-To-Action buttons and apply snippets from Tab 2.
  3. Protect with Wrappers: When targeting images (like the Image Zoom), always target the Column wrapping the image, not the image file itself.

Phase 4: QA & Handover Protocol

  1. The Mobile Audit: Open the page on an actual physical smartphone, not just the GHL mobile preview. Check if buttons are easily tappable.
  2. Form Testing: Submit a dummy lead through the form. Ensure the "Thank You" page triggers correctly.
  3. Speed Optimization: Compress all background images before uploading them to GHL. Massive image files ruin conversion rates.

βš™οΈ GHL Custom Values & Essential JavaScript

As a GHL WebDev, you are building pages inside a CRM. You need to know how to pull CRM data into your web pages dynamically.

1. The "Custom Values" Simulator (Shortcodes)

Type these exact brackets directly into any Text Element in the GHL Builder. Try the live simulator below to see how GHL dynamically updates the text when a real lead visits the page.

"Thanks for signing up, {{contact.first_name}}! We just sent an email to {{contact.email}}."

Type this on the page...What it displays live...
{{contact.first_name}}The first name of the person visiting (if they previously filled out a form).
{{location.name}}The name of the Client's Business/Sub-Account.
{{location.email}}The support email of the Client's Business. Put this in the footer.
{{location.full_address}}The full physical address. Perfect for Contact pages.

2. Essential JavaScript Embeds

Drag the Custom JS/HTML Element onto your page, open the code editor, and paste the code.

Auto-Updating Copyright Year

Never update a footer year manually again.

Copyright © Your Client's Business
<span id="year"></span>
<script>
  document.getElementById("year").innerHTML = new Date().getFullYear();
</script>

Auto-Redirect (After X Seconds)

Use on a Thank You page to send them back to the main site.

<script>
  setTimeout(function() {
    window.location.href = "https://yourclientwebsite.com";
  }, 5000); // 5000 = 5 seconds
</script>

3. The "Inspect Element" Pro Workflow

Using the GHL "Advanced Tab" to find a CSS ID is slow. Here is how professional WebDevs do it faster:

  1. Click Preview on your GHL page to open the live version in a new tab.
  2. Right-click the exact button or text you want to change, and click Inspect (or press F12 on Chrome).
  3. The DevTools panel will open. The element you right-clicked will be highlighted in the HTML code.
  4. Look for the id="c-xxxxxxxx" tag on that highlighted line. Double click it and copy it.
  5. In the "Styles" box on the right side of DevTools, you can test CSS (like background: red;) live to see if it works without breaking your actual funnel.
  6. Once it looks good, copy your tested CSS back into the GHL Builder > Settings > Custom CSS.

πŸ›‘οΈ Platform Reality Checks & Time Protection

You have a 2-hour per day setup. This is amazing, but it means you must manage client expectations ruthlessly. Use current account documentation to verify feature availability, and protect your limited time with clear technical boundaries.

1. The β€œCustom Objects” Reality Check

GoHighLevel accounts may expose Custom Objects for structured records beyond Contacts, such as a Vehicles object. Availability and builder support can vary by account, plan, permissions, and rollout, so verify the current account before promising an implementation.


2. The Scope Creep Shield (Copy-Paste Scripts)

Clients often say "Can you just quickly add this one thing?" when that "one thing" takes 3 hours. Since you only have 2 hours a day, use these professional scripts to protect your boundaries without sounding aggressive.

The Client's Request Your Professional Boundary Script
"Can you build out this massive 5-page funnel today?" "I'd love to get this done for you! Just a heads-up, based on my part-time structure, this is a multi-day build. I will knock out the main Landing Page during my shift today, and tackle the Checkout/Thank You pages tomorrow. Sound good?"
"I want a completely custom coded animation that GHL doesn't have." "That animation looks awesome! However, building that from scratch with custom JavaScript falls slightly outside the scope of our standard rapid-deployment builds. I can implement [Insert your CSS snippet animation] today, or we can look into hiring a dedicated JS developer for that specific feature."
"Can you keep making revisions to the header? I'm just not feeling it yet." (Endless Revisions) "I want to make sure this looks perfect for you. Since I have limited hours dedicated to your account today, let's gather all your final header feedback into one bulleted list. I'll execute all of those changes at once during my shift tomorrow so we can move forward efficiently."

3. Basic WebDev Ethics: SEO Meta Data & Accessibility

Want to look like a high-tier professional during your 2 hours? Always do these two things before handing over a link:

πŸ”„ Full CRM & Automation Setup Guide

A beautiful funnel is useless if the leads go nowhere. This is the exact 4-step process to create a fully functioning CRM loop in GoHighLevel.

Step 1: The Capture Mechanism (Forms & Funnels)

Before you build the funnel, you must build the Form that collects the data. You cannot capture a lead without a form.

πŸ‘€ Visual Preview: Funnel Steps UI
1. Landing Page (Opt-in)
Has the Form embedded
Step 1
2. Thank You Page
Where the form redirects after submit
Step 2

Step 2: The Pipeline (The CRM Board)

Now that the lead filled out the form, they need a place to go so the client's sales team can track them.

πŸ‘€ Visual Preview: Kanban Pipeline UI (Opportunities Tab)
1. New Lead (1)
John Doe
Value: $500
Hot Lead
2. Contacted (0)
No opportunities
3. Booked (1)
Sarah Smith
Value: $500

Step 3: The Automation Engine (Workflows)

This is where the magic happens. You need an automation to grab the form data and physically push the lead into the Pipeline you just made, while simultaneously emailing them.

πŸ‘€ Visual Preview: Workflow Builder UI
⚑ Trigger: Form Submitted
Filter: Landing Page Form
πŸ‘€ Action 1: Create/Update Opportunity
Pipeline: Website Leads -> Stage: New Lead
βœ‰οΈ Action 2: Send Email
Template: "Welcome Email"
πŸ”” Action 3: Internal Notification
SMS: "Hey Client, you have a new lead!"

Step 4: Publish & Test (Crucial)

Workflows are built in "Draft" mode by default. In the top right corner of the workflow builder, toggle it to Publish and hit Save.

To test: Go to your live funnel link, put your own name and email in the form, and hit submit. Then, go check the "Opportunities" tab to see if your card appeared in the "New Lead" column, and check your inbox to see if the automated email fired.

πŸ•ΈοΈ How to Create a Funnel from Scratch

Funnels in GHL are different from standard Websites. Funnels are designed to push a user through a linear sequence (Step 1 -> Step 2 -> Step 3) with no distraction menus. Here is how you build one.

Step 1: Creating the Shell


Step 2: Adding the Steps (The Anatomy)

A standard lead-gen funnel requires at least 2 steps. Click + Add New Step inside your new funnel.

πŸ‘€ Visual Preview: Funnel Dashboard UI
Steps (2)
Opt-in Page https://yourdomain.com/optin
Thank You Page https://yourdomain.com/thankyou

Opt-in Page

πŸ–ΌοΈ

Preview Generation...


Step 3: Connecting the Domain

Your funnel will not be live to the public until it is attached to a real web domain.


Step 4: Tracking Sales & Stats

Once your funnel is live, you don't need external tracking tools. GHL tracks it all natively.