AutomationFlowsWeb Scraping › Ai-powered One-click Virtual Fitting Room for Woocommerce, Shopify, Prestashop

Ai-powered One-click Virtual Fitting Room for Woocommerce, Shopify, Prestashop

ByDavide Boizza @n3witalia on n8n.io

This low-code automation enables all eCommerce store visitors to upload a photo of themselves and virtually “try on” a garment in just a few clicks.

Event trigger★★★★☆ complexity16 nodesForm TriggerFtpHTTP RequestForm
Web Scraping Trigger: Event Nodes: 16 Complexity: ★★★★☆ Added:

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

This workflow follows the Form → Form Trigger 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": "bnkWL5ReJLmi9DKA",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Form Visual Try-on for Ecommerce webiste",
  "tags": [],
  "nodes": [
    {
      "id": "ec6c9aa4-aa67-4f76-bda5-2d8368995993",
      "name": "On form submission",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        -680,
        200
      ],
      "parameters": {
        "options": {
          "appendAttribution": false
        },
        "formTitle": "Virtual Try On",
        "formFields": {
          "values": [
            {
              "fieldLabel": "Nome",
              "placeholder": "Nome",
              "requiredField": true
            },
            {
              "fieldName": "Product",
              "fieldType": "hiddenField"
            },
            {
              "fieldType": "file",
              "fieldLabel": "Me",
              "requiredField": true,
              "acceptFileTypes": ".jpg,.png"
            }
          ]
        },
        "formDescription": "Upload your image and virtually try on the dress"
      },
      "typeVersion": 2.2
    },
    {
      "id": "12941dfe-2c91-4270-87a4-510f83c7aa65",
      "name": "FTP",
      "type": "n8n-nodes-base.ftp",
      "position": [
        -420,
        200
      ],
      "parameters": {
        "path": "=/eolianpenthouse.dev.eureweb.it/test/{{$now.format('yyyyyyLLddHHii')}}-{{ $json.Me[0].filename }}",
        "operation": "upload",
        "binaryPropertyName": "Me"
      },
      "credentials": {
        "ftp": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "d5524925-4d2d-4c95-9efc-c877004e65b0",
      "name": "Get Url image",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -680,
        460
      ],
      "parameters": {
        "url": "=https://queue.fal.run/fal-ai/kling/requests/{{ $json.request_id }}",
        "options": {},
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "87300ee2-366e-469b-85bf-9dbd1d5de850",
      "name": "Get status",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        240,
        200
      ],
      "parameters": {
        "url": "=https://queue.fal.run/fal-ai/kling/requests/{{ $('Create Image').item.json.request_id }}/status ",
        "options": {},
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "8db4508e-b82a-4134-85c7-44b2162d5da6",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -300,
        -980
      ],
      "parameters": {
        "color": 6,
        "width": 340,
        "height": 540,
        "content": "## Me\n![image](https://n3wstorage.b-cdn.net/n3witalia/model.jpg)"
      },
      "typeVersion": 1
    },
    {
      "id": "f4765a45-0ad4-49d6-8227-9cc3e050b429",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -700,
        -980
      ],
      "parameters": {
        "color": 6,
        "width": 360,
        "height": 540,
        "content": "## Product\n![image](https://n3wstorage.b-cdn.net/n3witalia/tshirt.jpg)"
      },
      "typeVersion": 1
    },
    {
      "id": "79a6158d-fb3c-4293-82cc-e344aa21db37",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        80,
        -980
      ],
      "parameters": {
        "color": 4,
        "width": 340,
        "height": 540,
        "content": "## Result\n![image](https://n3wstorage.b-cdn.net/n3witalia/result.png)"
      },
      "typeVersion": 1
    },
    {
      "id": "032557a3-1ced-47d3-8e72-b1e3057d9e46",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -700,
        -1260
      ],
      "parameters": {
        "color": 3,
        "width": 740,
        "height": 240,
        "content": "# Functionality\n\nThis low-code automation enables all eCommerce store visitors to upload a **photo of themselves and virtually \u201ctry on\u201d** a garment in just a few clicks. \n\nWith this workflow, **WooCommerce, Prestashop, Shopify** and more merchants can offer a cutting-edge \u201cvirtual try-on\u201d feature with minimal development effort, enhancing customer engagement and reducing product returns.\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "6a740b21-b95f-4c8e-bb92-c205e52e3925",
      "name": "Completed?",
      "type": "n8n-nodes-base.if",
      "position": [
        420,
        200
      ],
      "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": "f33040d8-cbac-4c21-845b-10397c5210cc",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -700,
        -80
      ],
      "parameters": {
        "width": 740,
        "height": 180,
        "content": "## STEP 3  - ECOMMERCE\nIn production environment, the \"Product\" field must be dynamically filled with the url of the product dress image (e.g. https://n3wstorage.b-cdn.net/n3witalia/camicia-seta.png).\n\nOn the ecommerce, create a \"Try On\" button and the following url to open in pop-up format https://URL_N8N/form/ca1c314d-46c6-4eeb-b6a5-359XXXXXX?Product=IMAGE_URL"
      },
      "typeVersion": 1
    },
    {
      "id": "0799d997-c38e-4c84-8096-0f2ef04b0223",
      "name": "Create Image",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -180,
        200
      ],
      "parameters": {
        "url": "https://queue.fal.run/fal-ai/kling/v1-5/kolors-virtual-try-on",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"human_image_url\": \"https://eolianpenthouse.dev.eureweb.it/test/{{$now.format('yyyyyyLLddHHii')}}-{{ $json.Me[0].filename }}\",\n  \"garment_image_url\": \"{{ $('On form submission').item.json.Product }}\"\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": "63e29ad5-5965-4a2c-98f5-bc89124a6b21",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -700,
        -400
      ],
      "parameters": {
        "width": 740,
        "height": 140,
        "content": "## STEP 1 - 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": "67188445-73c4-4070-b1f8-6e21beb3e1fa",
      "name": "Form",
      "type": "n8n-nodes-base.form",
      "position": [
        -240,
        460
      ],
      "parameters": {
        "operation": "completion",
        "redirectUrl": "={{ $json.image.url }}",
        "respondWith": "redirect"
      },
      "typeVersion": 1
    },
    {
      "id": "1a65532e-abb9-4c3f-99c3-ddf35e7ed5e4",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -700,
        -220
      ],
      "parameters": {
        "width": 740,
        "height": 100,
        "content": "## STEP 2  - FTP\nFTP space or S3 bucket to temporarily upload your image to"
      },
      "typeVersion": 1
    },
    {
      "id": "cf2e4f76-e658-4aa3-a6c0-9a85bb1749e6",
      "name": "Get image",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -460,
        460
      ],
      "parameters": {
        "url": "={{ $json.image.url }}",
        "options": {}
      },
      "typeVersion": 4.2
    },
    {
      "id": "04573589-8467-4768-9451-177aa2d19f57",
      "name": "Wait 10 sec.",
      "type": "n8n-nodes-base.wait",
      "position": [
        60,
        200
      ],
      "parameters": {
        "amount": 10
      },
      "typeVersion": 1.1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "c42ea134-5e24-4e45-9a6b-0f0765c4c13c",
  "connections": {
    "FTP": {
      "main": [
        [
          {
            "node": "Create Image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Form": {
      "main": [
        []
      ]
    },
    "Get image": {
      "main": [
        [
          {
            "node": "Form",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Completed?": {
      "main": [
        [
          {
            "node": "Get Url image",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait 10 sec.",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get status": {
      "main": [
        [
          {
            "node": "Completed?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Image": {
      "main": [
        [
          {
            "node": "Wait 10 sec.",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait 10 sec.": {
      "main": [
        [
          {
            "node": "Get status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Url image": {
      "main": [
        [
          {
            "node": "Get image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "On form submission": {
      "main": [
        [
          {
            "node": "FTP",
            "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 low-code automation enables all eCommerce store visitors to upload a photo of themselves and virtually “try on” a garment in just a few clicks.

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

More Web Scraping workflows → · Browse all categories →

Related workflows

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

Web Scraping

This workflow allows you to import any workflow from a file or another n8n instance and map the credentials easily. A multi-form setup guides you through the entire process At the beginning you have t

Execute Command, Read Write File, HTTP Request +3
Web Scraping

N8n recently introduced folders and it has been a big improvement on workflow management on top of the tags.

HTTP Request, n8n, Form Trigger +1
Web Scraping

Git Commit. Uses github, n8n, formTrigger, httpRequest. Event-driven trigger; 34 nodes.

GitHub, n8n, Form Trigger +2
Web Scraping

Small businesses, consultants, agencies… anyone who bills with PayPal.

Form, Form Trigger, HTTP Request
Web Scraping

Transform your GLPI system's user experience with a modern, optimized web interface that simplifies technical support ticket creation. How it works

Form Trigger, Form, HTTP Request