{
  "id": "HQcHQhEaig6JXOH4",
  "name": "AI Virtual TryOn for WooCommerce Nano Banana",
  "tags": [],
  "nodes": [
    {
      "id": "614bb588-3180-47e7-8dd6-fd61883d6042",
      "name": "When clicking \u2018Test workflow\u2019",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -480,
        1600
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "9f15348f-8e76-43d7-a17a-3efb1b9d5724",
      "name": "Get File image",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        448,
        1872
      ],
      "parameters": {
        "url": "={{ $json.images[0].url }}",
        "options": {}
      },
      "typeVersion": 4.2
    },
    {
      "id": "44d01abf-6b54-432a-a21c-a4b94c1487c7",
      "name": "Get Url image",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        224,
        1872
      ],
      "parameters": {
        "url": "=https://queue.fal.run/fal-ai/nano-banana/requests/{{ $json.request_id }}",
        "options": {},
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "d9e88f7a-dc2b-4470-87ae-92919b5c28d2",
      "name": "Get status",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        864,
        1616
      ],
      "parameters": {
        "url": "=https://queue.fal.run/fal-ai/nano-banana/requests/{{ $('Create Image').item.json.request_id }}/status ",
        "options": {},
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "722f45bd-a779-43ba-9c36-8bba1d5fc421",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -464,
        320
      ],
      "parameters": {
        "color": 6,
        "width": 340,
        "height": 540,
        "content": "## Model\n![image](https://n3wstorage.b-cdn.net/n3witalia/model.jpg)"
      },
      "typeVersion": 1
    },
    {
      "id": "2bb4598f-801e-4730-a15f-e006db7699ac",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -80,
        320
      ],
      "parameters": {
        "color": 6,
        "width": 360,
        "height": 540,
        "content": "## Product\n![image](https://n3wstorage.b-cdn.net/n3witalia/tshirt.jpg)"
      },
      "typeVersion": 1
    },
    {
      "id": "62a9183c-9201-4843-9d2e-c845b8dcbf7d",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        576,
        320
      ],
      "parameters": {
        "color": 4,
        "width": 340,
        "height": 540,
        "content": "## Result\n![image](https://n3wstorage.b-cdn.net/n3witalia/result_sport.jpeg)"
      },
      "typeVersion": 1
    },
    {
      "id": "ab7daa1a-2494-4dee-af0d-c19d28adf3f0",
      "name": "WooCommerce",
      "type": "n8n-nodes-base.wooCommerce",
      "position": [
        1104,
        1872
      ],
      "parameters": {
        "imagesUi": {
          "imagesValues": [
            {
              "alt": "",
              "src": "={{ $('Get File image').item.json.images[0].url }}",
              "name": ""
            }
          ]
        },
        "resource": "product",
        "operation": "update",
        "productId": "={{ $('Loop Over Items').item.json['PRODUCT ID'] }}",
        "metadataUi": {},
        "dimensionsUi": {},
        "updateFields": {}
      },
      "credentials": {
        "wooCommerceApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "e8e4c772-b11e-404a-b581-5710c680d853",
      "name": "Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -256,
        1600
      ],
      "parameters": {
        "options": {
          "returnFirstMatch": false
        },
        "filtersUI": {
          "values": [
            {
              "lookupValue": "=",
              "lookupColumn": "IMAGE RESULT"
            }
          ]
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/11ebWJvwwXHgvQld9kxywKQUvIoBw6xMa0g0BuIqHDxE/edit#gid=0",
          "cachedResultName": "Foglio1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "11ebWJvwwXHgvQld9kxywKQUvIoBw6xMa0g0BuIqHDxE",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/11ebWJvwwXHgvQld9kxywKQUvIoBw6xMa0g0BuIqHDxE/edit?usp=drivesdk",
          "cachedResultName": "AI Virtual TryOn for WooCommerce"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "86a83c5c-616a-498a-a844-8b689fea7c4a",
      "name": "Wait 60 sec.",
      "type": "n8n-nodes-base.wait",
      "position": [
        672,
        1616
      ],
      "parameters": {
        "amount": 10
      },
      "typeVersion": 1.1
    },
    {
      "id": "ff15269e-472e-4c65-872c-d24dac05739f",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -464,
        -176
      ],
      "parameters": {
        "color": 3,
        "width": 740,
        "height": 424,
        "content": "# AI Virtual TryOn for WooCommerce\nThis Workflow is designed to streamline the process of creating realistic images of clothing products worn by models, eliminating the need for expensive photoshoots. The primary goal is to automate the generation of virtual try-on images for an eCommerce store selling clothing, using advanced image processing technologies.\n\nStarting from a Google Sheets document or a database containing the URLs of a model image and a clothing product, the AI Agent generates an image of the model wearing the selected clothing item (Virtual TryOn).\n\nOnce the URL of the resulting image is obtained, the system downloads the final image file. This image is then uploaded to Google Drive, archived via FTP in a dedicated folder, or directly added to the WooCommerce product page.\n\nBy offering realistic images of clothing items worn by models, this automation process saves time and resources, making product catalog management more efficient. This approach not only enhances the competitiveness of the eCommerce store but also provides greater flexibility in creating high-quality visual content adaptable to various digital marketing campaigns.\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "d223fd2a-6590-47e3-b197-a2fc9934c070",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -464,
        944
      ],
      "parameters": {
        "width": 740,
        "height": 260,
        "content": "## STEP 1 - GOOGLE SHEET\nCreate a [Google Sheet like this](https://docs.google.com/spreadsheets/d/11ebWJvwwXHgvQld9kxywKQUvIoBw6xMa0g0BuIqHDxE/edit?usp=sharing).\n\nPlease insert:\n- in the \"IMAGE MODEL\" column the basic image of the model to dress\n- in the \"IMAGE PRODUCT\" column the image of the item of clothing to wear\n- in the \"PRODUCT ID\" column the ID of the product on your WooCommerce\n\nLeave the \"IMAGE RESULT\" column unfilled. It will be inserted by the system once the image has been created"
      },
      "typeVersion": 1
    },
    {
      "id": "8018008c-f420-498b-8762-4acab6af295d",
      "name": "Completed?",
      "type": "n8n-nodes-base.if",
      "position": [
        1040,
        1616
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "383d112e-2cc6-4dd4-8985-f09ce0bd1781",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.status }}",
              "rightValue": "COMPLETED"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "78d4b56e-0b29-40cb-a1fc-e51b5c092a93",
      "name": "Upload Image",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        656,
        1872
      ],
      "parameters": {
        "name": "={{ $now.format('yyyyLLddHHmmss') }}-{{ $json.images[0].file_name }}",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "list",
          "value": "1aHRwLWyrqfzoVC8HoB-YMrBvQ4tLC-NZ",
          "cachedResultUrl": "https://drive.google.com/drive/folders/1aHRwLWyrqfzoVC8HoB-YMrBvQ4tLC-NZ",
          "cachedResultName": "Fal.run"
        }
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "a0a4b685-b46e-400c-b8c7-863d0dfa518b",
      "name": "Update result",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        896,
        1872
      ],
      "parameters": {
        "columns": {
          "value": {
            "row_number": "={{ $('Loop Over Items').item.json.row_number }}",
            "IMAGE RESULT": "={{ $('Get File image').item.json.images[0].url }}"
          },
          "schema": [
            {
              "id": "IMAGE MODEL",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "IMAGE MODEL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "IMAGE PRODUCT",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "IMAGE PRODUCT",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "PRODUCT ID",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "PRODUCT ID",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "IMAGE RESULT",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "IMAGE RESULT",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": true,
              "required": false,
              "displayName": "row_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "row_number"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/11ebWJvwwXHgvQld9kxywKQUvIoBw6xMa0g0BuIqHDxE/edit#gid=0",
          "cachedResultName": "Foglio1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "11ebWJvwwXHgvQld9kxywKQUvIoBw6xMa0g0BuIqHDxE",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/11ebWJvwwXHgvQld9kxywKQUvIoBw6xMa0g0BuIqHDxE/edit?usp=drivesdk",
          "cachedResultName": "AI Virtual TryOn for WooCommerce"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "0e09b903-fd2a-4109-86eb-22ce23065c2f",
      "name": "Set data",
      "type": "n8n-nodes-base.set",
      "position": [
        224,
        1616
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "c713d31f-9abd-496a-ac79-e8e2efe60aa0",
              "name": "model",
              "type": "string",
              "value": "={{ $json['IMAGE MODEL'] }}"
            },
            {
              "id": "58fb5e76-6576-4d16-8b25-b931c7935c01",
              "name": "shirt",
              "type": "string",
              "value": "={{ $json['IMAGE PRODUCT'] }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "f7b63738-d131-4c85-894f-b18e1cd93884",
      "name": "Create Image",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        464,
        1616
      ],
      "parameters": {
        "url": "https://queue.fal.run/fal-ai/nano-banana/edit",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n     \"prompt\": \"make a photo of the model wearing the submitted clothing item and creating the themed background\",\n     \"image_urls\": [\n       \"{{ $json.model }}\",\n       \"{{ $json.shirt }}\"\n     ]\n   }",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "ddf4b966-f1e3-4e55-8282-5146f91d7242",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -464,
        1248
      ],
      "parameters": {
        "width": 740,
        "height": 156,
        "content": "## STEP 2 - GET API KEY (YOURAPIKEY)\nCreate an account [here](https://fal.ai/) and obtain API KEY.\nIn the node \"Create Image\" set \"Header Auth\" and set:\n- Name: \"Authorization\"\n- Value: \"Key YOURAPIKEY\""
      },
      "typeVersion": 1
    },
    {
      "id": "d5410953-da60-446a-8e79-9eab1aecd6ea",
      "name": "Loop Over Items",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        -48,
        1600
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "ddbaa607-7da6-4865-b362-3b482a326399",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -464,
        1440
      ],
      "parameters": {
        "width": 740,
        "height": 92,
        "content": "## STEP 3 - WOOCOMMERCE\n- Set WooCommerce API"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "32487dc5-f108-4e1b-af68-dc5d66d2cfef",
  "connections": {
    "Set data": {
      "main": [
        [
          {
            "node": "Create Image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Completed?": {
      "main": [
        [
          {
            "node": "Get Url image",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait 60 sec.",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get status": {
      "main": [
        [
          {
            "node": "Completed?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "WooCommerce": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Image": {
      "main": [
        [
          {
            "node": "Wait 60 sec.",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload Image": {
      "main": [
        [
          {
            "node": "Update result",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait 60 sec.": {
      "main": [
        [
          {
            "node": "Get status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Url image": {
      "main": [
        [
          {
            "node": "Get File image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Sheets": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update result": {
      "main": [
        [
          {
            "node": "WooCommerce",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get File image": {
      "main": [
        [
          {
            "node": "Upload Image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [],
        [
          {
            "node": "Set data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking \u2018Test workflow\u2019": {
      "main": [
        [
          {
            "node": "Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}