{{$execution.id}} in n8n) so every submission gets a unique ID before touching Google Sheets.
values.append expands the table boundary cleanly, and match any follow-up score update on the unique contact_id or execution_id column rather than Timestamp.
3 tries with 2000 ms wait) on your AI scoring step so a temporary 429 rate limit never leaves a lead unscored.
Prevent concurrent webhook row overwrites for sub-account <YOUR_LOCATION_ID>: 1. In Automation > Workflows, capture inbound form submissions and deduplicate on email/phone to issue a unique contact.id before syncing to external sheets. 2. In the Google Sheets integration or n8n node, enable Options > Use Append, keep cells below any formatted Table empty, and key row updates on contact_id or execution_id instead of Timestamp. 3. Enable Retry On Fail (3 attempts, 2000ms interval) on downstream AI scoring steps and verify completion in Workflow Execution Logs.
# Inspect inbound lead workflows in the target sub-account via ghl-crm ghl-crm workflows list --context <YOUR_CONTEXT> --location <YOUR_LOCATION_ID>
Official GHL MCP vs. ghl-tools: HighLevel’s official hosted MCP (services.leadconnectorhq.com/mcp) covers public v2 CRM records (contacts, opportunities, appointments, conversations). ghl-tools MCP complements it with workflow graph inspection & recipes, funnel/form builders, DNS/BIMI checks, and ghl-crm doctor audits.
execution_id or GoHighLevel contact_id) before appending so post-scoring updates never match on a timestamp| Step | Menu Path in GHL | Action |
|---|---|---|
| Step 1 | Automation > Workflows | Capture the form submission and create or update the contact in GoHighLevel first (or assign {{$execution.id}} in n8n) so every submission gets a unique ID before touching Google Sheets. |
| Step 2 | Contacts > Smart Lists | In Contacts > Smart Lists (and your Google Sheets node Options > Use Append), keep rows below your sheet table completely blank so values.append expands the table boundary cleanly, and match any follow-up score update on the unique contact_id or execution_id column rather than Timestamp. |
| Step 3 | Automation > Workflows > Execution Logs | Turn on Retry On Fail (3 tries with 2000 ms wait) on your AI scoring step so a temporary 429 rate limit never leaves a lead unscored. |
Connect Claude Code, Cursor, or OpenAI Codex to our ghl-tools MCP Server & Rust CLI to build workflows, forms, and funnels from your editor, or start your GoHighLevel plan through our partner link to unlock $612+ in ready-to-import kits (including GHL Webhook Concurrency & Lead Sync Pack) and weekly live clinics.