AutomationFlowsSocial Media › Social Media Auto-posting to Instagram, Facebook & Linkedin From Google Sheets

Social Media Auto-posting to Instagram, Facebook & Linkedin From Google Sheets

ByDinakar Selvakumar @jamesdinakar on n8n.io

This workflow enables multi-platform social media posting using Google Sheets as the control center.

Event trigger★★★★☆ complexity16 nodesGoogle Sheets TriggerFacebook Graph ApiLinkedInGoogle Sheets
Social Media Trigger: Event Nodes: 16 Complexity: ★★★★☆ Added:

This workflow corresponds to n8n.io template #11996 — we link there as the canonical source.

This workflow follows the Facebookgraphapi → Google Sheets recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "id": "wnLktAY4pgk79U5K",
  "name": "4 Multi-Platform Social Media Content Distribution with Google Sheets Integration",
  "tags": [],
  "nodes": [
    {
      "id": "19d1640b-f929-4ea2-a8d9-058dc0939dcc",
      "name": "\ud83d\udccb Workflow Overview",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -896,
        0
      ],
      "parameters": {
        "color": 5,
        "width": 304,
        "height": 156,
        "content": "## Trigger & Configuration\n\nDetects new rows added to Google Sheets and sets required configuration values such as platform IDs before routing the post through the workflow.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "e2c0852c-b320-4bf1-bde5-03e708eefbf8",
      "name": "New Row in Content Sheet",
      "type": "n8n-nodes-base.googleSheetsTrigger",
      "position": [
        -896,
        192
      ],
      "parameters": {
        "event": "rowAdded",
        "options": {},
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        }
      },
      "credentials": {
        "googleSheetsTriggerOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "567439b8-6078-4020-a0c6-710bfc06a396",
      "name": "Workflow Configuration",
      "type": "n8n-nodes-base.set",
      "position": [
        -672,
        192
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "id-1",
              "name": "instagramPageId",
              "type": "string",
              "value": "<__PLACEHOLDER_VALUE__Your Instagram Business Account ID__>"
            },
            {
              "id": "id-2",
              "name": "facebookPageId",
              "type": "string",
              "value": "<__PLACEHOLDER_VALUE__Your Facebook Page ID__>"
            }
          ]
        },
        "includeOtherFields": true
      },
      "typeVersion": 3.4
    },
    {
      "id": "ca2cfe6e-3af8-4875-8c73-5db8e1332d06",
      "name": "Check Platform: Instagram",
      "type": "n8n-nodes-base.if",
      "position": [
        -448,
        192
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 3,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "id-1",
              "operator": {
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.Instagram }}",
              "rightValue": "TRUE"
            }
          ]
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "588431d6-63d7-48f9-bdc8-017407cc3bd3",
      "name": "Check Platform: Facebook",
      "type": "n8n-nodes-base.if",
      "position": [
        -80,
        80
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "leftValue": "",
            "caseSensitive": false,
            "typeValidation": "loose"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "id-1",
              "operator": {
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.Facebook }}",
              "rightValue": "TRUE"
            }
          ]
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "03430223-ff05-4223-b8c5-aebb4aa5ec52",
      "name": "Check Platform: LinkedIn",
      "type": "n8n-nodes-base.if",
      "position": [
        144,
        -16
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "leftValue": "",
            "caseSensitive": false,
            "typeValidation": "loose"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "id-1",
              "operator": {
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.LinkedIn }}",
              "rightValue": "TRUE"
            }
          ]
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "1b8aed6b-480d-44bb-964d-a8c9257f99b5",
      "name": "Post to Instagram",
      "type": "n8n-nodes-base.facebookGraphApi",
      "position": [
        -80,
        368
      ],
      "parameters": {
        "edge": "feed",
        "node": "={{ $('Workflow Configuration').first().json.instagramPageId }}",
        "options": {
          "queryParameters": {
            "parameter": [
              {
                "name": "message",
                "value": "={{ $json.Content }}"
              }
            ]
          }
        },
        "httpRequestMethod": "POST"
      },
      "typeVersion": 1
    },
    {
      "id": "cd8c89a5-0820-403a-b668-3ef3be4dce72",
      "name": "Post to Facebook",
      "type": "n8n-nodes-base.facebookGraphApi",
      "position": [
        144,
        176
      ],
      "parameters": {
        "edge": "feed",
        "node": "={{ $('Workflow Configuration').first().json.facebookPageId }}",
        "options": {
          "queryParameters": {
            "parameter": [
              {
                "name": "message",
                "value": "={{ $json.Content }}"
              }
            ]
          }
        },
        "httpRequestMethod": "POST"
      },
      "typeVersion": 1
    },
    {
      "id": "26b22cf7-8a35-4cb1-b5be-d0074df088aa",
      "name": "Post to LinkedIn",
      "type": "n8n-nodes-base.linkedIn",
      "position": [
        368,
        -16
      ],
      "parameters": {
        "text": "={{ $json.Content }}",
        "additionalFields": {}
      },
      "credentials": {
        "linkedInOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "6ebb06ee-f1b6-4971-8080-029ccba03653",
      "name": "Update Status: Instagram",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        144,
        368
      ],
      "parameters": {
        "columns": {
          "value": {
            "Row Number": "={{ $json.row_number }}"
          },
          "schema": [
            {
              "id": "Row Number",
              "type": "string",
              "required": false,
              "displayName": "Row Number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Status",
              "type": "string",
              "required": false,
              "displayName": "Status",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Row Number"
          ]
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "<__PLACEHOLDER_VALUE__Sheet name from trigger__>"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "<__PLACEHOLDER_VALUE__Document ID from trigger__>"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "4fa7dda2-8ac4-4199-9db9-88997d9aecef",
      "name": "Update Status: Facebook",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        368,
        176
      ],
      "parameters": {
        "columns": {
          "value": {
            "Row Number": "={{ $json.row_number }}"
          },
          "schema": [
            {
              "id": "Row Number",
              "type": "string",
              "required": false,
              "displayName": "Row Number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Status",
              "type": "string",
              "required": false,
              "displayName": "Status",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Row Number"
          ]
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "<__PLACEHOLDER_VALUE__Sheet name from trigger__>"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "<__PLACEHOLDER_VALUE__Document ID from trigger__>"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "1a8277ac-f1d9-4dda-88a0-9325d147f0e8",
      "name": "Update Status: LinkedIn",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        592,
        -16
      ],
      "parameters": {
        "columns": {
          "value": {
            "Row Number": "={{ $json.row_number }}"
          },
          "schema": [
            {
              "id": "Row Number",
              "type": "string",
              "required": false,
              "displayName": "Row Number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Status",
              "type": "string",
              "required": false,
              "displayName": "Status",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Row Number"
          ]
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "<__PLACEHOLDER_VALUE__Sheet name from trigger__>"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "<__PLACEHOLDER_VALUE__Document ID from trigger__>"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "520303c4-c037-4ce5-b655-5febcdf5f599",
      "name": "\ud83d\udd2e Future: Image Processing",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -496,
        96
      ],
      "parameters": {
        "color": 3,
        "width": 206,
        "height": 376,
        "content": "## Platform Routing\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nChecks platform flags from the sheet (Instagram, Facebook, LinkedIn) and routes the post only to the platforms marked as TRUE.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "fba262bb-7827-4dc3-af16-07aecaa1d803",
      "name": "\ud83d\udd2e Future: Scheduling",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1488,
        -112
      ],
      "parameters": {
        "width": 494,
        "height": 648,
        "content": "## How it works\n\nThis workflow automatically publishes social media posts using Google Sheets as a lightweight content calendar.  \nEach new row added to the sheet represents one post. Platform-specific flags (Instagram, Facebook, LinkedIn) determine where the content should be published.\n\nWhen a new row is detected, the workflow reads the post content, checks which platforms are enabled, and publishes the post to the selected platforms. After each successful post, the workflow updates the same row in Google Sheets with a status so you can track what has already been published.\n\nThis design keeps content creation simple (Google Sheets) while automation handles distribution and status tracking. No manual posting is required once the row is added.\n\n## Setup steps\n\n1. Create a Google Sheet with columns:  \n   **Content**, **Instagram**, **Facebook**, **LinkedIn**, **Status**\n2. Connect your Google Sheets account in n8n.\n3. Add your Instagram Business Account ID and Facebook Page ID in the **Workflow Configuration** node.\n4. Connect Facebook Graph API and LinkedIn credentials.\n5. Set platform columns to `TRUE` or `FALSE` for each post.\n6. Add a new row to publish automatically.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "7083d703-14da-49b9-8dc2-b600a9a26e52",
      "name": "\ud83d\udd2e Future: Analytics",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -112,
        -192
      ],
      "parameters": {
        "color": 6,
        "width": 590,
        "height": 136,
        "content": "## Publish Posts\n\nPublishes the content text to the selected social media platforms using their respective APIs.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "f5f733cd-e752-4a45-9287-a5a0a0283fa8",
      "name": "\ud83d\udd2e Future: Analytics1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        144,
        560
      ],
      "parameters": {
        "color": 6,
        "width": 606,
        "height": 136,
        "content": "## Update Sheet Status\n\nUpdates the original Google Sheets row after posting, allowing you to track which platforms were successfully published.\n"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "d369c4fa-626a-45c6-b962-a7ebf7447f8b",
  "connections": {
    "Post to Facebook": {
      "main": [
        [
          {
            "node": "Update Status: Facebook",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Post to LinkedIn": {
      "main": [
        [
          {
            "node": "Update Status: LinkedIn",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Post to Instagram": {
      "main": [
        [
          {
            "node": "Update Status: Instagram",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Workflow Configuration": {
      "main": [
        [
          {
            "node": "Check Platform: Instagram",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check Platform: Facebook": {
      "main": [
        [
          {
            "node": "Post to Facebook",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Check Platform: LinkedIn",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check Platform: LinkedIn": {
      "main": [
        [
          {
            "node": "Post to LinkedIn",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "New Row in Content Sheet": {
      "main": [
        [
          {
            "node": "Workflow Configuration",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check Platform: Instagram": {
      "main": [
        [
          {
            "node": "Post to Instagram",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Check Platform: Facebook",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

This workflow enables multi-platform social media posting using Google Sheets as the control center.

Source: https://n8n.io/workflows/11996/ — original creator credit. Request a take-down →

More Social Media workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Social Media

Okay, here are the "How It Works" and "Setup Steps" for your "Automated Social Media Content Distribution System," presented clearly in Markdown.

Google Sheets Trigger, Facebook Graph Api, Twitter +3
Social Media

Triggers when a Telegram callback query is received. Evaluates the message with a conditional statement. Directs the flow based on language or action choice. Fetches data from Google Sheets once confi

Telegram Trigger, Facebook Graph Api, LinkedIn +2
Social Media

This workflow is built for creators, solopreneurs, SaaS founders, and agencies looking to automate their social media content process from idea to publication. It combines the power of OpenAI, Google

OpenAI Chat, Tool Workflow, Agent +15
Social Media

This workflow automates trend extraction and social media content creation for businesses and marketers. It eliminates manual trend research and content generation by fetching trends, scoring them wit

HTTP Request, OpenAI, Reddit +5
Social Media

Credentials-Setup. Uses twitter, reddit, googleDocs, googleDrive. Event-driven trigger; 43 nodes.

Twitter, Reddit, Google Docs +22