GoHighLevel Web Widget Developer How-To Guide
If you build apps for ClickUp or other platforms and want to expand into the GoHighLevel ecosystem, this guide shows you exactly how to create and sell web widgets in the GoHighLevel App Marketplace. You will learn how web widgets work, how to structure your files, and how to configure your app to pass validation and display correctly in different contexts.
What Is a GoHighLevel Web Widget?
A web widget in GoHighLevel is a small web application (HTML, CSS, and JavaScript) that is rendered inside an iframe within the GoHighLevel interface. It lets you extend platform functionality, embed custom tools, or integrate external services without modifying the core system.
These widgets can be distributed through the GoHighLevel App Marketplace so that other users can install and use them in their own accounts.
How GoHighLevel Renders Web Widgets
When a user opens your app inside GoHighLevel, the platform loads your widget URL in an iframe. The system then injects a global JavaScript object named HighLevel to help your code communicate with the host environment.
The core object provided by GoHighLevel is:
window.HighLevel
This object contains a sessionData property that holds important contextual and authentication information.
GoHighLevel Session Data Structure
Your web widget should be prepared to read the HighLevel.sessionData object to understand who is using the app and in which account context it is running.
The sessionData object is structured like this:
{
type: "account" | "location" | "saas",
loginType: "user" | "subAccount" | "saas",
audience: "Agency" | "Account",
workspaceId: string,
accountId: string,
user: {
id: string,
email: string,
name: string,
permissions: string[],
type: "user" | "subAccount" | "saas",
},
agency: {
id: string,
name: string,
...
}
}
This data lets your GoHighLevel widget:
- Identify the current user and their role.
- Know whether it is running at agency, account, or sub-account level.
- Tailor features and permissions accordingly.
GoHighLevel App Types and Context
GoHighLevel supports multiple app types, and your web widget may need to behave slightly differently depending on the chosen context. Common contexts include:
- Agency-level apps that work across multiple sub-accounts.
- Account-level apps that focus on individual client accounts.
- Location or sub-account focused tools.
Your widget logic should interpret type, loginType, and audience from HighLevel.sessionData to adapt to these contexts.
Building Your GoHighLevel Web Widget
You can build your widget with any frontend stack (plain JavaScript, React, Vue, etc.), as long as it ultimately outputs a standard web page that can be loaded in an iframe.
1. Set Up Your Project Structure for GoHighLevel
At minimum, you should have:
index.html: main HTML file.styles.css: widget styling.script.js: widget logic and interactions withwindow.HighLevel.
Make sure your build system (if you use one) generates static assets that are served over HTTPS from a reliable hosting provider.
2. Access the GoHighLevel Global Object
Inside your script.js, you can safely read the injected object after the window has loaded:
window.addEventListener("load", () => {
const hl = window.HighLevel;
if (!hl || !hl.sessionData) return;
const { user, type, loginType, audience } = hl.sessionData;
console.log("Running in", type, "as", loginType, "for", audience);
console.log("Current user:", user);
});
This pattern ensures your GoHighLevel widget does not run before the platform has injected the object.
3. Style Your Widget for the GoHighLevel UI
To keep a consistent look inside GoHighLevel, follow these recommendations:
- Use neutral background colors that match light or dark themes.
- Avoid global styles that might leak out of your iframe.
- Make all layouts responsive because users may view your app in different panel sizes.
Configuring Your Widget in the GoHighLevel Marketplace
Once your widget is hosted and working, you must configure it in the GoHighLevel App Marketplace console.
4. Register a New App in GoHighLevel
- Open the GoHighLevel App Marketplace developer area.
- Create a new app entry and choose the appropriate app type.
- Provide the URL of your widget (for example,
https://yourdomain.com/index.html). - Set icons, screenshots, and listing details as requested.
Follow the exact guidelines from the official documentation here: GoHighLevel web widget developer guide.
5. Handle Authentication and Security
GoHighLevel provides session context through HighLevel.sessionData. Your backend, if used, should validate any tokens or identifiers you rely on and never trust client-side data alone.
Typical best practices include:
- Sending a secure identifier from the widget to your backend via HTTPS.
- Matching the identifier to known GoHighLevel account or user records.
- Restricting sensitive operations to authorized users based on their permissions.
Testing Your GoHighLevel Web Widget
Before listing your app publicly, test it thoroughly across multiple scenarios inside GoHighLevel.
6. Validate Different User Roles
Confirm that your widget behaves correctly for:
- Agency admins.
- Standard users.
- Sub-account or location users.
Use HighLevel.sessionData.user.permissions to adapt your UI, hide restricted features, or display appropriate warnings.
7. Test in All Supported Contexts
If your app is available at both agency and account level, test your GoHighLevel widget in each context:
- Check that navigation, links, and callbacks work as intended.
- Verify that data is scoped correctly to the current account or workspace.
- Ensure performance remains acceptable inside the embedded iframe.
Submitting and Selling Your GoHighLevel Widget
Once the widget has passed your internal testing, you can finalize it for sale in the GoHighLevel App Marketplace.
8. Prepare Your Listing Content
To maximize adoption of your GoHighLevel app, prepare:
- A clear description of what the widget does.
- Key benefits and use cases.
- Screenshots or short demo videos.
- Pricing and licensing details.
Make your onboarding instructions short and actionable so new users can connect your service within minutes.
9. Complete Marketplace Submission
Follow the submission flow in the GoHighLevel developer console to:
- Confirm ownership of the app and domain.
- Agree to marketplace terms.
- Submit for review and approval.
The platform will validate that your GoHighLevel widget loads correctly, uses allowed permissions, and complies with UI and security requirements.
Maintaining and Updating Your GoHighLevel Widget
After your GoHighLevel app is live, plan for ongoing maintenance.
- Monitor changes to the GoHighLevel API and session object structure.
- Update your code when new app types or audiences are introduced.
- Respond to customer feedback with regular improvements.
If you need expert help designing, integrating, or scaling your GoHighLevel web widget business, you can work with a specialized consultancy such as Consultevo to refine your technical and go-to-market strategy.
Next Steps for Your GoHighLevel Integration
By following this walkthrough and the official GoHighLevel developer documentation, you can confidently build, configure, and sell robust web widgets in the marketplace. Start with a simple proof of concept, read HighLevel.sessionData carefully, and iterate based on real user feedback to create a valuable, scalable app offering for the GoHighLevel ecosystem.
Need Help With ClickUp?
If you want expert help building, automating, or scaling your GHL , work with ConsultEvo — trusted GoHighLevel Partners.
“`
