Skip to content
- Confirm the Marketplace OAuth approval completed for the intended sub-account.
- Confirm workspace billing is active or trialing.
- Check Admin -> Locations for a pending or disconnected location.
- Reinstall from GoHighLevel only after confirming the existing install is not already linked.
- Confirm billing is active or trialing first — Admin -> Getting Started requires billing before it will create the API-only location.
- After choosing “Use the Kotally API instead”, confirm you land on Admin -> API Clients with the location present.
- If the location is missing, it was not created yet; complete billing and retry from Getting Started.
- Create the API client and copy the token immediately — it is shown only once.
- Confirm the GoHighLevel webhook reached
/webhooks/ghl.
- Confirm the payment event contains a GoHighLevel product id.
- Confirm exactly one active product mapping exists for that product in the same location.
- For invoice payments, confirm the invoice item product id maps to a Kotally product config.
- If Stripe fallback is enabled, remember GoHighLevel-native grants are primary and duplicate commercial events are suppressed.
- Confirm the contact has a Kotally entitlement for the appointment calendar.
- Confirm the entitlement has credits remaining and is not expired or paused.
- Confirm the appointment payload includes
contactId and calendarId.
- Check for
SERVICE_FAMILY_MISMATCH when the customer has credits for a different calendar.
- Confirm the user opened Kotally from a supported GoHighLevel surface.
- Confirm the signed embed request reaches
/embed/auth.
- Use the Open Kotally fallback if the side panel cannot resolve contact context.
- Ask support to inspect the location summary and recent events.
- Use
Authorization: Bearer <token>.
- Confirm the API client has the required scope for the endpoint.
- Confirm the token is allowed to access the requested
location_id.
- Reuse the same
request_id only for an exact retry of the same operation.