{
  "name": "bundle.social: Google Sheets to Instagram, Facebook and LinkedIn",
  "nodes": [
    {
      "parameters": {
        "content": "## Google Sheets to Instagram, Facebook and LinkedIn\n\nEach new row in a Google Sheet becomes one scheduled post on Instagram, Facebook and LinkedIn.\n\n**Sheet columns**: Text, Image URL, Post Date. Write Post Date as ISO 8601 text, for example 2026-11-12T09:00:00Z. An empty Post Date publishes right away.\n\n**Careful when testing**: Test workflow sends every row in the sheet. Test on a sheet with one row. Once the workflow is active, only new rows trigger it.\n\n**Setup**\n1. Install the community node **n8n-nodes-bundlesocial** on self-hosted n8n.\n2. Add a **bundle.social API** credential and a Google Sheets Trigger credential.\n3. In **New row in sheet**, pick the spreadsheet and the sheet.\n4. In **Create post**, pick the team with the three accounts connected. Remove a platform from **Social Account Types** to skip it.\n5. Activate the workflow. Instagram needs the image, so every row needs an Image URL.",
        "height": 520,
        "width": 440,
        "color": 4
      },
      "id": "8a37aaf5-1614-5107-9f3a-9f8a7e14e9ce",
      "name": "Setup",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -560,
        -200
      ]
    },
    {
      "parameters": {
        "event": "rowAdded",
        "options": {},
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        },
        "documentId": {
          "__rl": true,
          "mode": "url",
          "value": ""
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": ""
        }
      },
      "id": "18e98d9f-a026-5a61-8e69-0d570052866f",
      "name": "New row in sheet",
      "type": "n8n-nodes-base.googleSheetsTrigger",
      "typeVersion": 1,
      "position": [
        0,
        0
      ]
    },
    {
      "parameters": {
        "resource": "upload",
        "operation": "createFromUrl",
        "url": "={{ $json['Image URL'] }}",
        "additionalFields": {}
      },
      "id": "17378aa6-1948-5477-952d-fe56b0c0bd92",
      "name": "Upload image from URL",
      "type": "n8n-nodes-bundlesocial.bundleSocial",
      "typeVersion": 1,
      "position": [
        240,
        0
      ]
    },
    {
      "parameters": {
        "resource": "post",
        "operation": "create",
        "teamId": "",
        "title": "={{ $('New row in sheet').item.json.Text.slice(0, 60) }}",
        "postDate": "={{ (() => { const v = $('New row in sheet').item.json['Post Date']; if (v === '' || v === null || v === undefined) return $now.toISO(); if (typeof v === 'number') return DateTime.fromMillis(Math.round((v - 25569) * 86400000), { zone: 'utc' }).toISO(); const text = String(v); if (DateTime.fromISO(text).isValid) return text; const parsed = new Date(text); return isNaN(parsed.getTime()) ? text : parsed.toISOString(); })() }}",
        "status": "SCHEDULED",
        "socialAccountTypes": [
          "INSTAGRAM",
          "FACEBOOK",
          "LINKEDIN"
        ],
        "dataInstagram": {
          "type": "POST",
          "text": "={{ $('New row in sheet').item.json.Text }}",
          "uploadIds": "={{ $json.id }}"
        },
        "dataFacebook": {
          "type": "POST",
          "text": "={{ $('New row in sheet').item.json.Text }}",
          "uploadIds": "={{ $json.id }}"
        },
        "dataLinkedin": {
          "text": "={{ $('New row in sheet').item.json.Text }}",
          "uploadIds": "={{ $json.id }}"
        }
      },
      "id": "ee80a38e-a262-598d-a9d7-7a76992ef9c1",
      "name": "Create post",
      "type": "n8n-nodes-bundlesocial.bundleSocial",
      "typeVersion": 1,
      "position": [
        480,
        0
      ]
    }
  ],
  "connections": {
    "New row in sheet": {
      "main": [
        [
          {
            "node": "Upload image from URL",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload image from URL": {
      "main": [
        [
          {
            "node": "Create post",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  },
  "pinData": {}
}