Social Planner - Attach Facebook Pages
n8n-nodes-base.httpRequest
Enables specific Facebook pages for social posting in GoHighLevel.
π‘ Use Cases
- Enable Facebook pages
- Configure posting destinations
- Set up Facebook pages
π API Documentation
Reference documentation for this API endpoint:
π https://marketplace.gohighlevel.com/docs/ghl/social-media-posting/social-planner-attach-facebook-pages βπ Node Configuration
{
"nodes": [
{
"parameters": {
"content": "## π Social Planner - Attach Facebook Pages\n\n**Usage:**\nEnables specific Facebook pages for social posting in GoHighLevel.\n\n**Required Input:**\n- `locationId`: Location ID\n- `pages`: Array of page objects with page IDs to enable\n\n**Optional Fields:**\n- None\n\n**Setup:**\n1. Configure HTTP Header Auth with GHL Private Token\n2. First use Start Facebook OAuth to connect account\n3. Use Get Facebook Pages to see available pages\n4. Pass locationId and pages array in incoming data\n5. Node configures the selected pages for posting\n\n**Pages Array Format:**\n```json\n{\n \"pages\": [\n {\n \"id\": \"facebook_page_id\",\n \"name\": \"Page Name\"\n }\n ]\n}\n```\n\n**Output:**\nReturns confirmation of attached Facebook pages and account IDs for use in posting.\n\n**Credential Setup (HTTP Header Auth):**\n1. In n8n, go to Credentials β Add Credential\n2. Select \"Header Auth\"\n3. Set Name: `Authorization`\n4. Set Value: `Bearer YOUR_ACCESS_TOKEN`\n5. Get your token from GHL Settings β Integrations β Private Integrations",
"height": 238,
"width": 389,
"color": 4
},
"type": "n8n-nodes-base.stickyNote",
"position": [
96,
332
],
"typeVersion": 1,
"id": "sticky-ghl-social-planner-attach-facebook-pages",
"name": "Sticky Note"
},
{
"parameters": {
"method": "POST",
"url": "https://services.leadconnectorhq.com/social-media-posting/facebook/pages",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Version",
"value": "2021-07-28"
},
{
"name": "Content-Type",
"value": "application/json"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={\n \"locationId\": \"{{ $json.locationId }}\",\n \"pages\": {{ $json.pages ? JSON.stringify($json.pages) : '[]' }}\n}",
"options": {}
},
"id": "ghl-social-planner-attach-facebook-pages-001",
"name": "GHL Social Planner - Attach Facebook Pages",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.1,
"position": [
368,
400
],
"credentials": {
"httpHeaderAuth": {
"id": "GHL_Private_Token",
"name": "GoHighLevel Private Integration"
}
}
}
],
"connections": {},
"pinData": {},
"meta": {
"templateCredsSetupCompleted": true,
"instanceId": "751aeba95f3d1aebe5a6ebe9d20293dd6c0f61b00ef369c580f0dc54913f5fcb"
}
}
[
{
"id": "89328f36-66ad-45f5-a2f9-bac01fc913a1",
"meta": {
"name": "API Call Node",
"id": "api-call",
"icon": {
"svg": " ",
"type": "SVG"
},
"description": "## π Social Planner - Attach Facebook Pages **Usage:**"
},
"label": "GHL Social Planner - Attach Facebook Pages",
"dependencies": {
"node-fetch": "3.3.2"
},
"script": "import fetch from \"node-fetch\";\nexport default async function apiCall({\n url,\n method,\n contentType,\n authorization,\n body,\n shouldAwait,\n queryParams,\n customHeaders\n}: NodeInputs, {\n logging\n}: NodeScriptOptions) : NodeOutput {\n const headers = {\n \"Content-Type\": contentType,\n ...customHeaders\n };\n if (authorization) headers[\"Authorization\"] = authorization;\n\n let queryParamsString = '';\n if (queryParams) {\n queryParamsString = '?' + new URLSearchParams(queryParams).toString();\n }\n\n const fetchOptions = {\n method,\n headers\n };\n\n if (method !== 'GET') {\n fetchOptions.body = JSON.stringify(body);\n }\n\n const fetchPromise = fetch(url + queryParamsString, fetchOptions);\n\n if (!shouldAwait) {\n return {\n data: null\n };\n }\n\n const response = await fetchPromise;\n const data = await response.json();\n return {\n status: response.status,\n data\n };\n}",
"inputs": {
"properties": {
"method": {
"type": "string",
"description": "The HTTP method to use for the API call",
"enum": [
"GET",
"POST",
"PUT",
"DELETE",
"PATCH"
],
"default": "POST",
"title": "HTTP Method",
"buildship": {
"options": [
{
"label": "GET",
"value": "GET"
},
{
"value": "POST",
"label": "POST"
},
{
"value": "PUT",
"label": "PUT"
},
{
"label": "DELETE",
"value": "DELETE"
},
{
"label": "PATCH",
"value": "PATCH"
}
],
"index": 0,
"sensitive": false
}
},
"url": {
"description": "The URL of the API endpoint",
"title": "URL",
"type": "string",
"buildship": {
"index": 1
}
},
"authorization": {
"description": "The authorization header for the API call, if required (e.g., Bearer or Basic token)",
"type": "string",
"title": "Authorization",
"buildship": {
"sensitive": true,
"index": 2
}
},
"queryParams": {
"default": {},
"description": "The query parameters for the API call",
"type": "object",
"title": "Query Parameters",
"buildship": {
"index": 3,
"sensitive": false
}
},
"body": {
"type": "object",
"buildship": {
"index": 4
},
"description": "The body to send with the API call",
"title": "Body"
},
"contentType": {
"enum": [
"application/json",
"application/x-www-form-urlencoded",
"multipart/form-data",
"text/plain"
],
"description": "The content type of the API call",
"title": "Content Type",
"buildship": {
"index": 5,
"options": [
{
"label": "application/json",
"value": "application/json"
},
{
"value": "application/x-www-form-urlencoded",
"label": "application/x-www-form-urlencoded"
},
{
"label": "multipart/form-data",
"value": "multipart/form-data"
},
{
"label": "text/plain",
"value": "text/plain"
}
]
},
"type": "string"
},
"shouldAwait": {
"description": "Whether to wait for the request to complete or not",
"title": "Await?",
"type": "boolean",
"buildship": {
"sensitive": false,
"index": 6
}
},
"customHeaders": {
"type": "object",
"description": "Additional custom headers for the API call",
"title": "Custom Headers",
"buildship": {
"index": 7,
"sensitive": false
}
}
},
"type": "object",
"required": [
"url",
"shouldAwait",
"method"
]
},
"integrations": [],
"name": "API Call Node",
"output": {
"buildship": {},
"properties": {
"status": {
"buildship": {
"index": 0
},
"type": "number",
"description": "The HTTP status of the API response",
"title": "Status"
},
"data": {
"buildship": {
"index": 1
},
"title": "Data",
"type": "object",
"description": "The data object from the API response"
}
},
"type": "object"
},
"isCollapsed": false,
"type": "script",
"values": {
"method": "POST",
"url": "https://services.leadconnectorhq.com/social-media-posting/facebook/pages",
"authorization": {
"_$expression_": "`Bearer ${(await getSecret(\"ANONYMIZED_SECRET\"))}`",
"type": "javascript",
"hasErrors": false
},
"queryParams": {},
"body": {
"_$expression_": "{\n \"locationId\": ctx?.[\"root\"]?.[\"inputs\"]?.[\"body\"].locationId,\n \"pages\": {{ $json.pages ? JSON.stringify($json.pages) : '[]' }}\n}",
"type": "javascript",
"hasErrors": false
},
"contentType": "application/json",
"shouldAwait": true,
"customHeaders": {
"Version": "2021-07-28",
"Content-Type": "application/json"
}
}
}
]
{
"subflows": [
{
"flow": [
{
"id": 144,
"module": "http:ActionSendDataBasicAuth",
"version": 3,
"parameters": {
"key": "ANONYMIZED_CREDENTIALS",
"handleErrors": false,
"useNewZLibDeCompress": true
},
"mapper": {
"ca": "",
"qs": [],
"url": "https://services.leadconnectorhq.com/social-media-posting/facebook/pages",
"data": "{\n \"locationId\": {{1.locationId}},\n \"pages\": {{ $json.pages ? JSON.stringify($json.pages) : '[]' }}\n}",
"gzip": true,
"method": "post",
"headers": [
{
"name": "Version",
"value": "2021-07-28"
},
{
"name": "Content-Type",
"value": "application/json"
},
{
"name": "Authorization",
"value": "Bearer {{ANONYMIZED_TOKEN}}"
}
],
"timeout": "",
"useMtls": false,
"bodyType": "raw",
"contentType": "application/json",
"serializeUrl": false,
"shareCookies": false,
"parseResponse": true,
"followRedirect": true,
"useQuerystring": false,
"followAllRedirects": false,
"rejectUnauthorized": true
},
"metadata": {
"designer": {
"x": 300,
"y": 300,
"name": "Social Planner Attach Facebook Pages"
},
"restore": {
"expect": {
"qs": {
"mode": "chose",
"items": []
},
"method": {
"mode": "chose",
"label": "POST"
},
"headers": {
"mode": "chose",
"items": [
null,
null,
null
]
},
"bodyType": {
"label": "Raw"
},
"contentType": {
"label": "JSON (application/json)"
}
},
"parameters": {
"key": {
"label": "ANONYMIZED_CREDENTIALS"
}
}
},
"parameters": [
{
"name": "key",
"type": "keychain:basicauth",
"label": "Credentials",
"required": true
},
{
"name": "handleErrors",
"type": "boolean",
"label": "Evaluate all states as errors (except for 2xx and 3xx )",
"required": true
},
{
"name": "useNewZLibDeCompress",
"type": "hidden"
}
],
"expect": [
{
"name": "url",
"type": "url",
"label": "URL",
"required": true
},
{
"name": "serializeUrl",
"type": "boolean",
"label": "Serialize URL",
"required": true
},
{
"name": "method",
"type": "select",
"label": "Method",
"required": true,
"validate": {
"enum": [
"get",
"head",
"post",
"put",
"patch",
"delete",
"options"
]
}
},
{
"name": "headers",
"spec": [
{
"name": "name",
"type": "text",
"label": "Name",
"required": true
},
{
"name": "value",
"type": "text",
"label": "Value"
}
],
"type": "array",
"label": "Headers"
},
{
"name": "qs",
"spec": [
{
"name": "name",
"type": "text",
"label": "Name",
"required": true
},
{
"name": "value",
"type": "text",
"label": "Value"
}
],
"type": "array",
"label": "Query String"
},
{
"name": "bodyType",
"type": "select",
"label": "Body type",
"validate": {
"enum": [
"raw",
"x_www_form_urlencoded",
"multipart_form_data"
]
}
},
{
"name": "parseResponse",
"type": "boolean",
"label": "Parse response",
"required": true
},
{
"name": "contentType",
"type": "select",
"label": "Content type",
"validate": {
"enum": [
"text/plain",
"application/json",
"application/xml",
"text/xml",
"text/html",
"custom"
]
}
},
{
"name": "data",
"type": "buffer",
"label": "Request content"
}
]
}
}
]
}
],
"metadata": {
"version": 1
}
}