{
  "nodes": [
    {
      "id": "30fcebd0-d271-47ee-98e7-e1c9db4ae1f1",
      "name": "WhatsApp Trigger",
      "type": "n8n-nodes-base.whatsAppTrigger",
      "position": [
        -2740,
        120
      ],
      "parameters": {
        "options": {},
        "updates": [
          "messages"
        ]
      },
      "credentials": {
        "whatsAppTriggerApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "a71a46a0-72c6-43d3-a001-b9a2f57da8f5",
      "name": "Send Message in Channel",
      "type": "n8n-nodes-base.slack",
      "position": [
        -1640,
        -180
      ],
      "parameters": {
        "text": "={{ $('WhatsApp Trigger').item.json.messages[0].text.body }}",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json.id }}"
        },
        "otherOptions": {
          "includeLinkToWorkflow": false
        }
      },
      "credentials": {
        "slackApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "aef4c666-5e07-4692-b9f1-4049bb06e6c8",
      "name": "Slack Trigger",
      "type": "n8n-nodes-base.slackTrigger",
      "position": [
        -2700,
        920
      ],
      "parameters": {
        "options": {},
        "trigger": [
          "message"
        ],
        "watchWorkspace": true
      },
      "credentials": {
        "slackApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "b665feac-c851-4463-851f-f723a940ce80",
      "name": "Message Type",
      "type": "n8n-nodes-base.switch",
      "position": [
        -1860,
        99
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "text",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "668fdd23-fb5c-4473-b34f-15157b2059f9",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $('WhatsApp Trigger').item.json.messages[0].type }}",
                    "rightValue": "text"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "audio",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "25381929-f26b-446e-a460-baee6b2a420e",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $('WhatsApp Trigger').item.json.messages[0].type }}",
                    "rightValue": "audio"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "image",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "2dbde15e-324c-46f8-82e8-ccd8084e5718",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $('WhatsApp Trigger').item.json.messages[0].type }}",
                    "rightValue": "image"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "document",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "b5ed8fb5-0519-4245-81c4-84139e4b14c0",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $('WhatsApp Trigger').item.json.messages[0].type }}",
                    "rightValue": "document"
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "bbe095f2-914f-41b9-ad69-b47d0217e392",
      "name": "get audio URL",
      "type": "n8n-nodes-base.whatsApp",
      "position": [
        -1640,
        20
      ],
      "parameters": {
        "resource": "media",
        "operation": "mediaUrlGet",
        "mediaGetId": "={{ $('WhatsApp Trigger').item.json.messages[0].audio.id }}"
      },
      "credentials": {
        "whatsAppApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "c645ad49-d722-47fe-9b1e-c8685f0322ea",
      "name": "get document URL",
      "type": "n8n-nodes-base.whatsApp",
      "position": [
        -1640,
        420
      ],
      "parameters": {
        "resource": "media",
        "operation": "mediaUrlGet",
        "mediaGetId": "={{ $('WhatsApp Trigger').item.json.messages[0].document.id }}"
      },
      "credentials": {
        "whatsAppApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "2c5eb333-0d26-4ce4-b4ac-a94e183d910c",
      "name": "get image URL",
      "type": "n8n-nodes-base.whatsApp",
      "position": [
        -1640,
        220
      ],
      "parameters": {
        "resource": "media",
        "operation": "mediaUrlGet",
        "mediaGetId": "={{ $('WhatsApp Trigger').item.json.messages[0].image.id }}"
      },
      "credentials": {
        "whatsAppApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "78012279-114e-4b8c-bd18-3e33d537c7c8",
      "name": "Create Channel",
      "type": "n8n-nodes-base.slack",
      "onError": "continueRegularOutput",
      "position": [
        -2520,
        120
      ],
      "parameters": {
        "resource": "channel",
        "channelId": "={{ $('WhatsApp Trigger').item.json.messages[0].from }}",
        "channelVisibility": "private"
      },
      "credentials": {
        "slackApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "9413ee28-9b92-409a-807a-38b1139cd837",
      "name": "get All Channels",
      "type": "n8n-nodes-base.slack",
      "position": [
        -2300,
        120
      ],
      "parameters": {
        "filters": {
          "types": [
            "private_channel"
          ]
        },
        "resource": "channel",
        "operation": "getAll",
        "returnAll": true
      },
      "credentials": {
        "slackApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "40d09c7b-aeb2-491f-864e-b92023dc8e57",
      "name": "Filter Channel by Name",
      "type": "n8n-nodes-base.filter",
      "position": [
        -2080,
        120
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "or",
          "conditions": [
            {
              "id": "586f6026-e893-46f8-ac89-4b16db24339a",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.name }}",
              "rightValue": "={{ $('WhatsApp Trigger').item.json.messages[0].from }}"
            }
          ]
        }
      },
      "retryOnFail": false,
      "typeVersion": 2.2
    },
    {
      "id": "f0ed5738-9442-42a9-bc76-bd71eaf2fb5b",
      "name": "upload media",
      "type": "n8n-nodes-base.slack",
      "position": [
        -1200,
        220
      ],
      "parameters": {
        "options": {
          "channelId": "={{ $('Message Type').item.json.id }}"
        },
        "resource": "file"
      },
      "credentials": {
        "slackApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "6a749b7b-78c0-4462-9019-f059d0845382",
      "name": "download media",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -1420,
        220
      ],
      "parameters": {
        "url": "={{ $json.url }}",
        "options": {
          "response": {
            "response": {}
          }
        },
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpBearerAuth": {
          "name": "<your credential>"
        },
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "66423f74-1ce5-44e2-8b41-2dcb6d22b1a9",
      "name": "Get Channel by ID",
      "type": "n8n-nodes-base.slack",
      "position": [
        -2480,
        920
      ],
      "parameters": {
        "options": {},
        "resource": "channel",
        "channelId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json.channel }}"
        },
        "operation": "get"
      },
      "credentials": {
        "slackApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "5587398a-5a6b-48b4-b056-1ef2ae40aaae",
      "name": "Checking Message Type",
      "type": "n8n-nodes-base.switch",
      "position": [
        -2260,
        920
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "media",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "7e42c494-a9eb-45ea-86cc-8a1e1d100fe1",
                    "operator": {
                      "type": "array",
                      "operation": "notEmpty",
                      "singleValue": true
                    },
                    "leftValue": "={{ $('Slack Trigger').item.json.files }}",
                    "rightValue": ""
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "text",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "f1f5bbbd-5536-4a8c-9c93-910cf51b1847",
                    "operator": {
                      "type": "string",
                      "operation": "notEmpty",
                      "singleValue": true
                    },
                    "leftValue": "={{ $('Slack Trigger').item.json.text }}",
                    "rightValue": ""
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "00abbd13-b397-4a8b-ac9a-5f4c7bb37823",
      "name": "Send Message",
      "type": "n8n-nodes-base.whatsApp",
      "position": [
        -2040,
        1020
      ],
      "parameters": {
        "textBody": "={{ $('Slack Trigger').item.json.blocks[0].elements[0].elements[0].text }}",
        "operation": "send",
        "phoneNumberId": "=674099929114802",
        "additionalFields": {},
        "recipientPhoneNumber": "={{ $('Get Channel by ID').item.json.name }}"
      },
      "credentials": {
        "whatsAppApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "52c609ed-0085-4762-badc-5fab0e526dfe",
      "name": "Get Media URL",
      "type": "n8n-nodes-base.slack",
      "position": [
        -2040,
        820
      ],
      "parameters": {
        "fileId": "={{ $('Slack Trigger').item.json.files[0].id }}",
        "resource": "file",
        "operation": "get"
      },
      "credentials": {
        "slackApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "f8d972de-add6-4858-abe8-d13ceebee263",
      "name": "Download Media",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -1820,
        820
      ],
      "parameters": {
        "url": "={{ $json.url_private_download }}",
        "options": {
          "response": {
            "response": {}
          }
        },
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "1552ab2b-d8c4-4324-a1a2-4a27e981f292",
      "name": "Send Message1",
      "type": "n8n-nodes-base.whatsApp",
      "position": [
        -1600,
        820
      ],
      "parameters": {
        "mediaPath": "useMedian8n",
        "operation": "send",
        "messageType": "document",
        "phoneNumberId": "=674099929114802",
        "additionalFields": {},
        "recipientPhoneNumber": "={{ $('Get Channel by ID').item.json.name }}"
      },
      "credentials": {
        "whatsAppApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "592dd9e2-8b95-420a-910d-f6f3a5bd583e",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2840,
        620
      ],
      "parameters": {
        "width": 1860,
        "height": 560,
        "content": "## Slack to WhatsApp Flow\n- Trigger: Slack Trigger listens for Slack messages (text or media).\n- Message Type Handling: Checking Message Type uses a Switch to determine whether it\u2019s text or media.\n- Text Handling: Extracts text and sends it back to WhatsApp via Send Message.\n- Media Handling: Gets media URL (Get Media URL).\n- Downloads the file (Download Media) and (presumably in the missing portion) sends it to WhatsApp as a document/media."
      },
      "typeVersion": 1
    },
    {
      "id": "23ee1ef0-ad8d-4c4a-8558-40bcbbfb1406",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2840,
        -200
      ],
      "parameters": {
        "width": 1860,
        "height": 780,
        "content": "## WhatsApp to Slack Flow\n- Trigger: WhatsApp Trigger listens for new WhatsApp messages.\n- Message Type Routing: Message Type node uses a Switch to check if the message is text, audio, image, or document.\n- Slack Channel Management: Checks if a private Slack channel already exists for the WhatsApp contact (from field).\n- If not, creates one using Create Channel.\n- Media Processing (for non-text): Gets WhatsApp media URL via get audio/image/document URL.\n- Downloads it (download media) and uploads to Slack using upload media.\n- Text Handling: For text, sends message directly to Slack using Send Message in Channel."
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Message Type": {
      "main": [
        [
          {
            "node": "Send Message in Channel",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "get audio URL",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "get image URL",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "get document URL",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Media URL": {
      "main": [
        [
          {
            "node": "Download Media",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Slack Trigger": {
      "main": [
        [
          {
            "node": "Get Channel by ID",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "get audio URL": {
      "main": [
        [
          {
            "node": "download media",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "get image URL": {
      "main": [
        [
          {
            "node": "download media",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Channel": {
      "main": [
        [
          {
            "node": "get All Channels",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download Media": {
      "main": [
        [
          {
            "node": "Send Message1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "download media": {
      "main": [
        [
          {
            "node": "upload media",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "WhatsApp Trigger": {
      "main": [
        [
          {
            "node": "Create Channel",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "get All Channels": {
      "main": [
        [
          {
            "node": "Filter Channel by Name",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "get document URL": {
      "main": [
        [
          {
            "node": "download media",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Channel by ID": {
      "main": [
        [
          {
            "node": "Checking Message Type",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Checking Message Type": {
      "main": [
        [
          {
            "node": "Get Media URL",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Send Message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter Channel by Name": {
      "main": [
        [
          {
            "node": "Message Type",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}