{"product_id":"gohighlevel-product-sync-from-google-sheets-via-webhook","title":"GoHighLevel Product Sync from Google Sheets via Webhook","description":"\u003ch3\u003eSync Google Sheets Products into GoHighLevel (LeadConnector) via Webhook\u003c\/h3\u003e\n\u003cp\u003eThis n8n workflow listens for a webhook request, then pulls only selected product rows from \u003cstrong\u003eGoogle Sheets\u003c\/strong\u003e and syncs them into \u003cstrong\u003eGoHighLevel (LeadConnector)\u003c\/strong\u003e by creating product records and the related price book entries—automatically.\u003c\/p\u003e\n\n\u003ch3\u003eWhat this workflow does\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003e\n\u003cstrong\u003eStarts via webhook:\u003c\/strong\u003e Receives a POST request through an n8n \u003cem\u003ewebhook\u003c\/em\u003e node to trigger the product sync.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eReads products from Google Sheets:\u003c\/strong\u003e Loads product rows and filters to rows where the \u003cstrong\u003eSelect\u003c\/strong\u003e column is set to \u003cstrong\u003etrue\u003c\/strong\u003e.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eAvoids duplicates:\u003c\/strong\u003e Further filters to only rows where \u003cstrong\u003eCreation Status\u003c\/strong\u003e is empty (so previously processed rows won’t be reprocessed).\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eCreates products in GoHighLevel:\u003c\/strong\u003e Creates a product record in GoHighLevel using the \u003cstrong\u003ecustom_objects.products\u003c\/strong\u003e endpoint.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eMarks the source row as processed:\u003c\/strong\u003e Updates the Google Sheets row to set \u003cstrong\u003eCreation Status\u003c\/strong\u003e to \u003cstrong\u003eYes\u003c\/strong\u003e and clears \u003cstrong\u003eSelect\u003c\/strong\u003e to \u003cstrong\u003efalse\u003c\/strong\u003e.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eCreates price book entries per price book:\u003c\/strong\u003e Splits the row’s comma-separated \u003cstrong\u003ePricebook\u003c\/strong\u003e field into individual price book names and loops through them.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eFinds matching price books and builds associations:\u003c\/strong\u003e For each price book, searches GoHighLevel for the matching record, creates a \u003cstrong\u003eprice_book_entry\u003c\/strong\u003e, and creates the required associations between:\n    \u003cul\u003e\n      \u003cli\u003ethe product and the price book, and\u003c\/li\u003e\n      \u003cli\u003ethe price book entry and its related record.\u003c\/li\u003e\n    \u003c\/ul\u003e\n  \u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eUse cases\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003eOps teams publish new products in Google Sheets and want them synced into GoHighLevel immediately.\u003c\/li\u003e\n  \u003cli\u003eSaaS operators batch-manage product\/pricing lists in Sheets while keeping GoHighLevel updated.\u003c\/li\u003e\n  \u003cli\u003eAutomation engineers need a reliable, idempotent-style sync that uses “Creation Status” to prevent duplicate imports.\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eTechnical details\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003e\n\u003cstrong\u003eWebhook trigger\u003c\/strong\u003e (n8n webhook node) to receive POST requests\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eGoogle Sheets OAuth2\u003c\/strong\u003e (Google Sheets node)\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eFiltering logic\u003c\/strong\u003e via \u003cem\u003efilter\u003c\/em\u003e and \u003cem\u003ecode\u003c\/em\u003e nodes (Select=true, Creation Status empty)\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eGoHighLevel API\u003c\/strong\u003e calls using \u003cem\u003eHTTP Request\u003c\/em\u003e nodes with a \u003cstrong\u003eGoHighLevel (LeadConnector) Private Integration token\u003c\/strong\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cp\u003e\u003cstrong\u003eSetup required:\u003c\/strong\u003e Add your GoHighLevel Private Integration token, set YOUR_GHL_LOCATION_ID and the two association IDs in request bodies, and connect Google Sheets OAuth2 credentials.\u003c\/p\u003e","brand":"N8N Commerce","offers":[{"title":"Default Title","offer_id":46001840160947,"sku":"N8N-19479","price":47.99,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0749\/6279\/6723\/files\/jAeVP0GCBFrTUd37ToMxD_BfpF69j0.png?v=1789117382","url":"https:\/\/buyflowscripts.com\/products\/gohighlevel-product-sync-from-google-sheets-via-webhook","provider":"N8N Commerce","version":"1.0","type":"link"}