Troubleshooting
Common issues and what to check first.
Things to check when something isn't behaving the way you expect.
A picker is empty
If the Custom Fields, Custom Values, Calendars, or Trigger Links picker shows nothing, your Private Integration Token is missing the matching scope. Open Settings → GoHighLevel integration, look at the listed scopes, and confirm against the table on the Installation page.
To fix: regenerate the PIT in GHL with the missing scope checked, paste the new token into Social Sourced, and save.
Standard contact fields aren't showing in the variable picker
Standard contact fields (first name, address, city, state, postal code, country, etc.) require the contacts.readonly scope on your PIT. The locations/customFields.readonly scope only exposes user-defined custom fields — not GHL's built-in contact attributes.
A keyword isn't matching
Check, in order:
- Is the keyword active? Inactive rows are skipped.
- Is the comment going through the Master Workflow? Open GHL's workflow execution log for the post in question — if there's no execution, the workflow isn't catching the comment, and you should re-install it from Settings → GoHighLevel integration → Reinstall workflow.
- Is a higher-priority keyword winning? Matching is first-match-wins by priority. If "book" and "book a call" both exist and "book" sits higher, "book" will fire even on the longer phrase. Reorder so the more specific keyword sits above the shorter one.
A reply went out with broken variable text
If a DM landed with literal {{ contact.first_name }} text instead of a name, GHL didn't have a value for that field on the contact. The fix is GHL-side: make sure the field is populated, or pick a variable with a fallback.
"Unauthorized" errors after working fine for a while
The PIT was probably revoked or rotated. Open Settings → Private Integrations in GHL and check that the "Social Sourced" entry still exists. If it's gone, create a new one with the scopes from the Installation page and paste it in.
Still stuck?
Send us a message with the keyword name and an approximate timestamp. We can pull up the matching attempt in the activity log and tell you exactly what happened.