Connecting GoHighLevel
Create a GoHighLevel Sub-Account Private Integration token so LeadToSheet can create or update contacts in a location.
Create a Sub-Account Private Integration token
GoHighLevel uses Private Integration tokens for server integrations. Create the token inside the sub-account (location) you want leads to land in — the Contacts Write scope needed to upsert contacts is only available on Sub-Account tokens, not Agency-level ones.
- 1
Open the sub-account
Switch into the specific sub-account (location) that should receive the leads. Don't create the token at the agency level — agency tokens can't write contacts.
- 2
Open Settings -> Private Integrations
Create a new private integration and name it LeadToSheet.
- 3
Grant the required permissions
Enable Edit Contacts (Contacts Write), View Locations (Locations Read), and View Custom Fields. Contacts Write performs the upsert; Locations Read lets LeadToSheet verify the connection; View Custom Fields loads your location's custom fields so you can map form values onto them.
- 4
Copy the token
Copy the token (it starts with `pit-`). You'll paste it into LeadToSheet next.
- 5
Find your Location ID
In the same sub-account, go to Settings -> Business Profile and copy the Location ID shown under General information. Paste both the token and the Location ID into LeadToSheet, then test the connection before saving the route.
Note
LeadToSheet sends leads to GoHighLevel with source set to LeadToSheet and optional tags from the route configuration.
Important
GoHighLevel requires either an email or a phone number on every contact. If a lead's form submission has neither, the delivery is recorded as failed in the route's delivery log instead of creating an incomplete contact.
Map leads onto custom fields
Email, name, phone and company are sent automatically. To send any other form value — a message, a budget, a postcode — map it onto a GoHighLevel custom field. GoHighLevel doesn't let LeadToSheet create fields, so the field has to already exist in your sub-account.
- 1
Create the custom field in GoHighLevel
In the sub-account, go to Settings -> Custom Fields and add the field (for the Contact object) if it doesn't exist yet.
- 2
Load your fields into LeadToSheet
Make sure the token has the View Custom Fields scope, then open the route and click Refresh options. LeadToSheet pulls the sub-account's contact custom fields into the picker.
- 3
Add a mapping
In the route's Custom fields section, click Add custom field mapping. On the left, enter the form value (the form field's name); on the right, pick the GoHighLevel field it should fill.
- 4
Save and test
Save the route and send a test lead. The mapped value appears on the contact in GoHighLevel; if a lead has no value for that form field, LeadToSheet simply omits it.
Tip
If the GoHighLevel field dropdown is empty, the token is missing the View Custom Fields scope or the sub-account has no custom fields yet. Add the scope (or create a field), then click Refresh options again.
