Add CleanQuote as a Custom Menu Link
CleanQuote receives the location ID from your account context (postMessage) when the app is embedded in a Custom Menu Link. No need to pass locationId in the URL.
Steps
- In your account, go to Settings → Custom Menu Links.
- Create a new link or edit the existing CleanQuote link.
- Set the URL to:
https://www.cleanquote.io/dashboard
Use https://my.cleanquote.io/dashboard or https://www.cleanquote.io/dashboard. Even when your GHL account uses a white-label domain (e.g. my.ricochetbusinesssolutions.com, app.gohighlevel.com), the Custom Menu Link URL must point to our domain—not your white-label domain—so the app loads correctly.
- Set Sidebar Preference to Sub-Account's sidebar (or both).
- Choose Open in an Embedded Page (iFrame) so CleanQuote runs inside the app.
- Save the link.
How it works
CleanQuote requests user context from the platform via postMessage. The platform responds with encrypted session data; we decrypt it on our backend using your Shared Secret. The decrypted data includes activeLocation (location ID). Ensure your Marketplace App Shared Secret matches the app SSO key in your deployment environment.
Important
Users must open CleanQuote from inside a sub-account (location), not from the Agency view. User context with location ID is only sent when viewing a specific location.
Troubleshooting
CleanQuote works in both cases: (1) when the platform responds to the iframe via postMessage (event.source.postMessage(response, event.origin)), and (2) when no postMessage response is received — we fall back to URL (?locationId=...) and sessionStorage (from a previous load). So the app can work even if the platform's handler has a bug.
If you see Failed to execute 'postMessage'… target origin … does not match the recipient window's origin in the console, that is a bug in the platform's handler: they must reply to the iframe with event.source.postMessage(response, event.origin). We send origin in the request (e.g. https://www.cleanquote.io) so the platform can use it. Until they fix it, location still comes from URL or sessionStorage when available.
Add more sidebar menu items with Custom JS · ← Back to setup guides