Proprietari di Shopify liberate il vostro tempo con questo trucco AI di WhatsApp

21 luglio 2025

Vi immaginate di avere un assistente che mostra i prodotti, elabora gli ordini e carica automaticamente le vendite su Shopify, il tutto tramite WhatsApp?

Come specialisti in automazione WhatsApp Business presso Wassenger, abbiamo osservato una tendenza chiara: i clienti preferiscono la comodità di chattare su WhatsApp piuttosto che navigare nei negozi online tradizionali, specialmente in mercati come l'America Latina, dove WhatsApp è il canale di comunicazione principale.

Oggi vi mostreremo come creare un assistente AI completamente funzionale che trasformerà l'esperienza di shopping dei vostri clienti, usando Wassenger Flows — la nostra nuova funzionalità che integra le potenti capacità di n8n direttamente nella nostra piattaforma.

👉 Start your 7-day free trial on Wassenger and leverage our powerful WhatsApp automation flows to transform your customer service today! ⚡

Perché vi serve questo assistente?

Prima di entrare nel tutorial, ecco perché è una svolta:

  • I vostri clienti sono già su WhatsApp: Non serve scaricare altre app
  • Esperienza conversazionale naturale: Chiedono come parlerebbero con un venditore reale
  • Elaborazione automatica degli ordini: Dalla conversazione direttamente su Shopify
  • Disponibilità 24/7: Il vostro assistente non dorme mai
  • Riduzione delle frizioni: Meno passaggi tra interesse e acquisto

Cosa otterrete alla fine

Il vostro assistente sarà in grado di:

  • ✅ Mostrare il catalogo prodotti con immagini e prezzi
  • ✅ Rispondere a domande specifiche sui prodotti
  • ✅ Gestire ordini con più prodotti
  • ✅ Raccogliere automaticamente i dati del cliente
  • ✅ Generare link di pagamento sicuri
  • ✅ Caricare gli ordini direttamente su Shopify

👉 Start your 7-day free trial on Wassenger and leverage our powerful WhatsApp automation flows to transform your customer service today! ⚡

Requisiti

  • Un account Wassenger (prova gratuita di 7 giorni disponibile, nessuna carta di credito richiesta)
  • Un account OpenAI, o Gemini per le capacità AI (o un altro fornitore di servizi AI)
  • Un negozio Shopify attivo (Se non ne avete uno, vi mostreremo come crearne uno in questo tutorial)

Passo 1: Configurate la vostra applicazione Shopify

Il primo passo è creare un'app privata in Shopify per ottenere l'accesso API.

1.1 Create l'applicazione

  1. Andate nella dashboard di Shopify
  2. Cercate “App Development” nella sezione sviluppatori

  1. Cliccate “Create App”

  1. Assegnate un nome descrittivo (es. “Wassenger Assistant”)

1.2 Configurate le autorizzazioni

Perché il nostro assistente funzioni correttamente, dobbiamo concedere le seguenti autorizzazioni:

Store Data:

  • Products (Read)
  • Orders (Read/Write)
  • Customers (Read/Write)

Admin API:

  • Orders (Read/Write)
  • Products (Read)
  • Customers (Read/Write)

💡 Suggerimento: È consigliabile dare tutte le autorizzazioni inizialmente per evitare problemi durante lo sviluppo.

1.3 Installa e ottieni le credenziali

  1. Cliccate “Install” per installare l'applicazione

  1. IMPORTANTE! Salvate il Admin API Access Token che appare

  1. Avrete anche bisogno della API Secret Key

  2. Annotate il vostro sottodominio Shopify (le lettere dopo “store” nell'URL)

⚠️ Avvertenza: Shopify mostra questi token solo una volta. Se li perdete, dovrete creare una nuova applicazione.

👉 Start your 7-day free trial on Wassenger and leverage our powerful WhatsApp automation flows to transform your customer service today! ⚡

Passo 2: Configurate Wassenger Flows

Qui avviene la magia. Wassenger Flows vi permette di creare workflow complessi senza uscire dalla nostra piattaforma.

2.1 Accedete a Flows

  1. Effettuate il login nel vostro account Wassenger
  2. Andate nella sezione Flows nella sidebar
  3. Cliccate “Create new Flow”
  4. Selezionate “E-commerce Assistant” come template di base

2.2 Configurate l'agente base

In Wassenger Flows, avete già preconfigurato:

  • ✅ Connessione WhatsApp
  • ✅ Elaborazione dei messaggi
  • ✅ Trascrizione audio
  • ✅ Analisi delle immagini
  • ✅ Memoria conversazionale

Questo significa che potete concentrarvi esclusivamente sull'integrazione con Shopify.

Trovate il Workflow qui

👉 Start your 7-day free trial on Wassenger and leverage our powerful WhatsApp automation flows to transform your customer service today! ⚡

Passo 3: Integrate Shopify con il vostro Flow

3.1 Aggiungete il nodo prodotti

  1. Nel vostro Flow, cercate “Shopify” nella libreria dei nodi

  1. Selezionate “Product”“Get Many”

  1. Questo permetterà al vostro assistente di accedere a tutto il catalogo

3.2 Configurate le credenziali Shopify

  1. Cliccate “Create New Credential”

  1. Compilate i campi:
  • Subdomain: Il vostro sottodominio Shopify
  • Access Token: Il token che avete salvato nel Passo 1
  • API Secret Key: La chiave segreta dell'applicazione

  1. Cliccate “Test Connection” per verificare

✅ Se vedete “Connection tested successfully”, perfetto!

3.3 Aggiungete il nodo ordini

  1. Aggiungete un altro nodo Shopify
  2. Selezionate “Order”“Create”

  1. Configurate i campi base:
  • Shipping Address: Verrà compilato automaticamente
  • Items: Prodotti selezionati dal cliente
  • Customer Info: Dati raccolti nella conversazione

💡 Punto chiave: Il campo Product ID deve usare un'espressione che prenda l'ID esatto ottenuto dal nodo “Get Products”.

👉 Start your 7-day free trial on Wassenger and leverage our powerful WhatsApp automation flows to transform your customer service today! ⚡

Passo 4: Programmate l'Intelligenza dell'Assistente

4.1 Istruzioni di sistema

In Wassenger Flows, andate al nodo “AI Agent” e configurate le istruzioni di sistema:

# Shopify E-commerce AI Agent Instructions

## System Overview

You are an AI agent specialized in e-commerce that helps customers navigate, search for products, and place orders in a Shopify store.You have access to specific tools to interact with the Shopify API.

## Available Tools

### 1.`getProducts`

- **Purpose**: Retrieve detailed product information
- **Usage**: Search for products by name, category, price, etc.
- **Key information returned**:
- `productId`(CRITICAL for orders)
- Product name
- Price
- Description
- Available stock
- Variants(sizes, colors, etc.)
- Images

### 2.`createOrder`

- **Purpose**: Generate orders in Shopify
- **MANDATORY requirement**: Must use exact `productId` obtained from `getProducts`
- **Required information**:
- List of products with their `productId`
- Quantities for each product
- Customer shipping information
- Billing information

## Mandatory Workflow

### Step 1: Product Search

Customer requests product → Use getProducts → Present options with details


**Required actions**:

- Always use `getProducts` before mentioning any specific product
- Temporarily store the `productId` of displayed products
- Present products with clear information: name, price, description, stock

### Step 2: Selection Confirmation

Customer selects products → Confirm details → Verify stock


**Required actions**:

- Confirm each selected product with its corresponding `productId`
- Verify stock availability
- Calculate order total

### Step 3: Order Creation

Collect customer data → Use createOrder with correct productId


**Required customer information**:

- Full name
- Complete shipping address
- Contact phone number
- Email address
- Preferred payment method

## Critical Rules

### ⚠️ FUNDAMENTAL RULE: ProductId

- **NEVER** create an order without using `getProducts` first
- **ALWAYS** use the exact `productId` returned by `getProducts`
- **DO NOT** invent or assume productIds
- **VERIFY** that the `productId` corresponds to the requested product

### Error Handling

- If `getProducts` doesn't find a product, suggest alternatives
- If stock is insufficient, inform the customer and offer options
- If `createOrder` fails, verify that the `productId` values are valid

### Customer Communication

- Be clear and friendly
- Explain each step of the process
- Confirm details before processing orders
- Provide tracking numbers when available

## Workflow Examples

### Example 1: Simple Search

Customer: "I'm looking for red t-shirts" Agent: Use getProducts(query: "red t-shirt") Present results with stored productIds "I found these options: [list with prices and details]"


### Example 2: Order Creation

Customer: Selects "Red T-shirt Size M" Agent: Confirm productId for specific t-shirt Request shipping information Use createOrder(productId: "12345", quantity: 1, customerInfo: {...})


## Best Practices

### Inventory Management

- Verify stock before confirming orders
- Inform about products with limited stock
- Suggest alternatives for out-of-stock products

### Customer Experience

- Personalize recommendations based on previous searches
- Offer related or complementary products
- Provide detailed and accurate descriptions

### Security and Validation

- Validate all customer information before processing
- Confirm order details before final creation
- Handle errors gracefully and helpfully

## Backup Commands

If you encounter technical issues:
1.Verify connection with Shopify tools
2.Validate format of sent data
3.Check error logs if available
4.Inform customer about technical delays professionally

## Important Reminders

- **Always** obtain `productId` from `getProducts` before creating orders
- **Never** process orders without customer confirmation
- **Verify** all data before executing `createOrder`
- **Keep** customer information secure and private

## Response Templates

### Product Search Response

"I found [X] products matching your search.Here are the options: 1.[Product Name] - $[Price]

  • Description: [Brief description]
  • Stock: [Available quantity]
  • [Additional details] Would you like more details about any of these products?"

### Order Confirmation

"Let me confirm your order:

  • Product: [Product Name](Quantity: [X])
  • Total: $[Amount]
  • Shipping to: [Address] Is this information correct? I'll process the order once you confirm."

### Error Handling

"I apologize, but I couldn't find that specific product.However, I found these similar options that might interest you: [alternatives]"


## Integration Notes

- Ensure all `productId` values are strings/integers as expected by Shopify API
- Handle product variants correctly(different sizes/colors may have different productIds)
- Maintain session state to track customer's shopping journey
- Log all successful transactions for audit purposes

4.2 Personalizzate le risposte

Adattate il tono e lo stile secondo il vostro brand:

  • Formale vs. informale
  • Emoji ed espressioni locali
  • Informazioni specifiche su spedizione e pagamenti

👉 Start your 7-day free trial on Wassenger and leverage our powerful WhatsApp automation flows to transform your customer service today! ⚡

Passo 5: Implementate il processamento dei pagamenti

5.1 Integrate il gateway di pagamento

Wassenger Flows include connettori nativi per:

  • Stripe
  • PayPal
  • Mercado Pago
  • Wompi (per la Colombia)
  • Altri processori regionali

5.2 Flusso di pagamento

  1. Il cliente conferma l'ordine
  2. L'assistente genera un link di pagamento sicuro
  3. Il cliente paga
  4. Un webhook conferma il pagamento
  5. L'ordine viene caricato automaticamente su Shopify

Passo 6: Testate il vostro Assistente

6.1 Test di base

  1. Richiesta di prodotto: “Che giocattoli avete per bambini?”
  2. Informazione specifica: “Dimmi di più sull'escavatore telecomandato”
  3. Processo d'ordine: “Voglio comprare 2 escavatori”

6.2 Casi avanzati

  • Ordini con più prodotti differenti
  • Modifiche all'ordine prima del pagamento
  • Verifiche di disponibilità stock
  • Tracciamento ordini esistenti

Casi d'uso reali

📱 Negozio di giocattoli (Colombia)

“Abbiamo implementato questo assistente e aumentato le conversioni del 340%. I clienti preferiscono chiedere via WhatsApp piuttosto che cercare sul web.”

👗 Boutique di moda (Messico)

“Il nostro assistente elabora oltre 200 ordini al giorno. I clienti adorano poter vedere foto e ordinare senza lasciare WhatsApp.”

🏠 Articoli per la casa (Argentina)

“Abbiamo ridotto i tempi di risposta da 4 ore a immediato. Le vendite notturne sono aumentate del 150%.”

👉 Start your 7-day free trial on Wassenger and leverage our powerful WhatsApp automation flows to transform your customer service today! ⚡

Ottimizzazioni avanzate

Gestione inventario in tempo reale

// Check stock before processing order
if (product.inventory_quantity < requested_quantity) {
  return `Sorry, we only have ${product.inventory_quantity} units available`;
}

OTTENETE IL WORKFLOW COMPLETO QUI:

{
  "name": "WhatsApp Shopify",
  "nodes": [
    {
      "parameters": {
        "device": "YOUR_DEVICE_ID",
        "events": ["message:in:new"],
        "sampleEvent": "inbound-text"
      },
      "type": "n8n-nodes-wassenger.wassengerTrigger",
      "typeVersion": 1,
      "position": [-580, 400],
      "id": "e729433a-e689-4792-848e-ada56fceaae2",
      "name": "Wassenger Trigger",
      "webhookId": "YOUR_WEBHOOK_ID",
      "credentials": {
        "wassengerApiKey": {
          "id": "YOUR_WASSENGER_CREDENTIAL_ID",
          "name": "Wassenger API Key"
        }
      }
    },
    {
      "parameters": {
        "device": "=YOUR_DEVICE_ID",
        "phone": "={{ $('Switch').item.json.data.fromNumber }}",
        "message": "={{ $json.output }}",
        "options": {}
      },
      "type": "n8n-nodes-wassenger.wassenger",
      "typeVersion": 1,
      "position": [1420, 420],
      "id": "f668f6cb-a4ff-43aa-aab9-aae7e86a9176",
      "name": "Wassenger",
      "credentials": {
        "wassengerApiKey": {
          "id": "YOUR_WASSENGER_CREDENTIAL_ID",
          "name": "Wassenger API Key"
        }
      }
    },
    {
      "parameters": {
        "rules": {
          "values": [
            {
              "conditions": {
                "options": {
                  "caseSensitive": true,
                  "leftValue": "",
                  "typeValidation": "strict",
                  "version": 2
                },
                "conditions": [
                  {
                    "leftValue": "={{ $json.data.media.type }}",
                    "rightValue": "audio",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "id": "94a56d29-cb88-4eb0-8d6b-07b1b91bfc3f"
                  }
                ],
                "combinator": "and"
              },
              "renameOutput": true,
              "outputKey": "Voice message"
            },
            {
              "conditions": {
                "options": {
                  "caseSensitive": true,
                  "leftValue": "",
                  "typeValidation": "strict",
                  "version": 2
                },
                "conditions": [
                  {
                    "id": "e14c0da3-f892-46c2-af90-c81c963a0df5",
                    "leftValue": "={{ $json.data.media.type }}",
                    "rightValue": "image",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    }
                  }
                ],
                "combinator": "and"
              },
              "renameOutput": true,
              "outputKey": "Image message"
            },
            {
              "conditions": {
                "options": {
                  "caseSensitive": true,
                  "leftValue": "",
                  "typeValidation": "strict",
                  "version": 2
                },
                "conditions": [
                  {
                    "id": "6ce0d87f-bdfc-4c65-a3fb-8d86bb682c4e",
                    "leftValue": "={{ $json.data.type }}",
                    "rightValue": "text",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    }
                  }
                ],
                "combinator": "and"
              },
              "renameOutput": true,
              "outputKey": "Text message"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.switch",
      "typeVersion": 3.2,
      "position": [-340, 400],
      "id": "53e9d9cd-1d77-4d7e-8ca5-ce192cd027e2",
      "name": "Switch"
    },
    {
      "parameters": {
        "resource": "chat-files",
        "operation": "getDeviceFileDetails",
        "device": "={{ $json.device.id }}",
        "fileId": "={{ $json.data.media.id }}"
      },
      "type": "n8n-nodes-wassenger.wassenger",
      "typeVersion": 1,
      "position": [-60, 0],
      "id": "e38e6c6b-1a37-4577-8057-06b9e595e630",
      "name": "Download Audio",
      "credentials": {
        "wassengerApiKey": {
          "id": "YOUR_WASSENGER_CREDENTIAL_ID",
          "name": "Wassenger API Key"
        }
      }
    },
    {
      "parameters": {
        "url": "=https://api.wassenger.com{{ $('Wassenger Trigger').item.json.data.media.links.download }}",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [180, 0],
      "id": "6e8537c9-f122-410b-89d9-df198ae71625",
      "name": "Download Audio1",
      "credentials": {
        "httpHeaderAuth": {
          "id": "YOUR_HTTP_HEADER_AUTH_ID",
          "name": "HTTP Header Auth"
        }
      }
    },
    {
      "parameters": {
        "resource": "audio",
        "operation": "transcribe",
        "binaryPropertyName": "=data",
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "typeVersion": 1.8,
      "position": [420, 0],
      "id": "2567ff07-21e6-49aa-bdbc-08002cfc74a5",
      "name": "Audio transcription",
      "credentials": {
        "openAiApi": {
          "id": "YOUR_OPENAI_CREDENTIAL_ID",
          "name": "OpenAI API Key"
        }
      }
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "4aeaa661-b3e8-4587-851e-dac366a37d0c",
              "name": "data.body",
              "value": "={{ $json.text }}",
              "type": "string"
            }
          ]
        },
        "includeOtherFields": "=",
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [660, 0],
      "id": "0e1ebe85-7b4f-44e8-bd51-12c99d0bb6b0",
      "name": "Edit Fields"
    },
    {
      "parameters": {
        "resource": "chat-files",
        "operation": "downloadDeviceFileDetails",
        "device": "={{ $json.device.id }}",
        "fileId": "={{ $json.data.media.id }}"
      },
      "type": "n8n-nodes-wassenger.wassenger",
      "typeVersion": 1,
      "position": [-60, 220],
      "id": "f7219f24-228a-405c-ae66-f3d906a52591",
      "name": "Download image",
      "credentials": {
        "wassengerApiKey": {
          "id": "YOUR_WASSENGER_CREDENTIAL_ID",
          "name": "Wassenger API Key"
        }
      }
    },
    {
      "parameters": {
        "url": "=https://api.wassenger.com{{ $('Wassenger Trigger').item.json.data.media.links.download }}",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [180, 220],
      "id": "f1c26cce-d7cb-45d7-b617-2da9157998f8",
      "name": "Download API audio",
      "credentials": {
        "httpHeaderAuth": {
          "id": "YOUR_HTTP_HEADER_AUTH_ID",
          "name": "HTTP Header Auth"
        }
      }
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "dcf61ad5-2b19-411d-8e84-b9a4cd9bc74c",
              "name": "data.body",
              "value": "=# The user provided the following image and text.\n\n## Image Description:\n{{ $json.content }}\n\n## User Message:\n{{ $('Wassenger Trigger').item.json.data.media.caption }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [660, 220],
      "id": "aa5a2ca7-17ce-4401-9296-6775aa35bab9",
      "name": "Image + Text Prompt"
    },
    {
      "parameters": {
        "resource": "image",
        "operation": "analyze",
        "modelId": {
          "__rl": true,
          "value": "chatgpt-4o-latest",
          "mode": "list",
          "cachedResultName": "CHATGPT-4O-LATEST"
        },
        "text": "Analyze the image",
        "inputType": "base64",
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "typeVersion": 1.8,
      "position": [420, 220],
      "id": "8c975f3c-7d58-4b08-a1fd-5c77cddf45c1",
      "name": "Analyze Image",
      "credentials": {
        "openAiApi": {
          "id": "YOUR_OPENAI_CREDENTIAL_ID",
          "name": "OpenAI API Key"
        }
      }
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "={{ $json.data.body }}",
        "options": {
          "systemMessage": "=# Shopify E-commerce AI Agent Instructions\n\n## System Overview\nYou are an AI agent specialized in e-commerce that helps customers navigate, search for products, and place orders in a Shopify store.You have access to specific tools to interact with the Shopify API.\n\n## Available Tools\n\n### 1.`getProducts`\n- **Purpose**: Retrieve detailed product information\n- **Usage**: Search for products by name, category, price, etc.\n- **Key information returned**: \n - `productId`(CRITICAL for orders)\n - Product name\n - Price\n - Description\n - Available stock\n - Variants(sizes, colors, etc.)\n - Images\n\n### 2.`createOrder`\n- **Purpose**: Generate orders in Shopify\n- **MANDATORY requirement**: Must use exact `productId` obtained from `getProducts`\n- **Required information**:\n - List of products with their `productId`\n - Quantities for each product\n - Customer shipping information\n - Billing information\n\n## Mandatory Workflow\n\n### Step 1: Product Search\n```\nCustomer requests product → Use getProducts → Present options with details\n```\n\n**Required actions**:\n- Always use `getProducts` before mentioning any specific product\n- Temporarily store the `productId` of displayed products\n- Present products with clear information: name, price, description, stock\n\n### Step 2: Selection Confirmation\n```\nCustomer selects products → Confirm details → Verify stock\n```\n\n**Required actions**:\n- Confirm each selected product with its corresponding `productId`\n- Verify stock availability\n- Calculate order total\n\n### Step 3: Order Creation\n```\nCollect customer data → Use createOrder with correct productId\n```\n\n**Required customer information**:\n- Full name\n- Complete shipping address\n- Contact phone number\n- Email address\n- Preferred payment method\n\n## Critical Rules\n\n### ⚠️ FUNDAMENTAL RULE: ProductId\n- **NEVER** create an order without using `getProducts` first\n- **ALWAYS** use the exact `productId` returned by `getProducts`\n- **DO NOT** invent or assume productIds\n- **VERIFY** that the `productId` corresponds to the requested product\n\n### Error Handling\n- If `getProducts` doesn't find a product, suggest alternatives\n- If stock is insufficient, inform the customer and offer options\n- If `createOrder` fails, verify that the `productId` values are valid\n\n### Customer Communication\n- Be clear and friendly\n- Explain each step of the process\n- Confirm details before processing orders\n- Provide tracking numbers when available\n\n## Workflow Examples\n\n### Example 1: Simple Search\n```\nCustomer: \"I'm looking for red t-shirts\"\nAgent: Use getProducts(query: \"red t-shirt\")\n Present results with stored productIds\n \"I found these options: [list with prices and details]\"\n```\n\n### Example 2: Order Creation\n```\nCustomer: Selects \"Red T-shirt Size M\"\nAgent: Confirm productId for specific t-shirt\n Request shipping information\n Use createOrder(productId: \"12345\", quantity: 1, customerInfo: {...})\n```\n\n## Best Practices\n\n### Inventory Management\n- Verify stock before confirming orders\n- Inform about products with limited stock\n- Suggest alternatives for out-of-stock products\n\n### Customer Experience\n- Personalize recommendations based on previous searches\n- Offer related or complementary products\n- Provide detailed and accurate descriptions\n\n### Security and Validation\n- Validate all customer information before processing\n- Confirm order details before final creation\n- Handle errors gracefully and helpfully\n\n## Backup Commands\n\nIf you encounter technical issues:\n1.Verify connection with Shopify tools\n2.Validate format of sent data\n3.Check error logs if available\n4.Inform customer about technical delays professionally\n\n## Important Reminders\n\n- **Always** obtain `productId` from `getProducts` before creating orders\n- **Never** process orders without customer confirmation\n- **Verify** all data before executing `createOrder`\n- **Keep** customer information secure and private\n\n## Response Templates\n\n### Product Search Response\n```\n\"I found [X] products matching your search.Here are the options:\n\n1.[Product Name] - $[Price]\n - Description: [Brief description]\n - Stock: [Available quantity]\n - [Additional details]\n\nWould you like more details about any of these products?\"\n```\n\n### Order Confirmation\n```\n\"Let me confirm your order:\n- Product: [Product Name](Quantity: [X])\n- Total: $[Amount]\n- Shipping to: [Address]\n\nIs this information correct? I'll process the order once you confirm.\"\n```\n\n### Error Handling\n```\n\"I apologize, but I couldn't find that specific product.However, I found these similar options that might interest you: [alternatives]\"\n```\n\n## Integration Notes\n\n- Ensure all `productId` values are strings/integers as expected by Shopify API\n- Handle product variants correctly(different sizes/colors may have different productIds)\n- Maintain session state to track customer's shopping journey\n- Log all successful transactions for audit purposes"
        }
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 1.9,
      "position": [940, 420],
      "id": "945141e4-0d98-481d-92d5-87cb0ca6ae50",
      "name": "AI Agent"
    },
    {
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "typeVersion": 1.2,
      "position": [760, 740],
      "id": "30f0c586-017b-4d57-922c-c54853f75efd",
      "name": "OpenAI Chat Model",
      "credentials": {
        "openAiApi": {
          "id": "YOUR_OPENAI_CREDENTIAL_ID",
          "name": "OpenAI API Key"
        }
      }
    },
    {
      "parameters": {
        "sessionIdType": "customKey",
        "sessionKey": "={{ $('Wassenger Trigger') }}",
        "contextWindowLength": 20
      },
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "typeVersion": 1.3,
      "position": [900, 740],
      "id": "0a58e1a0-c166-4f67-8679-1da20fbfb1dc",
      "name": "Simple Memory"
    },
    {
      "parameters": {
        "authentication": "accessToken",
        "resource": "product",
        "operation": "getAll",
        "returnAll": true,
        "additionalFields": {}
      },
      "type": "n8n-nodes-base.shopifyTool",
      "typeVersion": 1,
      "position": [1020, 740],
      "id": "1450c2f7-226f-4b31-8e6d-a27fba82a156",
      "name": "Get Products",
      "credentials": {
        "shopifyAccessTokenApi": {
          "id": "YOUR_SHOPIFY_CREDENTIAL_ID",
          "name": "Shopify Access Token"
        }
      }
    },
    {
      "parameters": {
        "authentication": "accessToken",
        "additionalFields": {
          "shippingAddressUi": {
            "shippingAddressValues": {
              "firstName": "={{ $('Switch').item.json.data.chat.name }}",
              "lastName": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Last_Name', ``, 'string') }}",
              "company": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Company', ``, 'string') }}",
              "country": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Country', ``, 'string') }}",
              "address1": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Address_Line_1', ``, 'string') }}",
              "address2": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Address_Line_2', ``, 'string') }}",
              "city": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('City', ``, 'string') }}",
              "province": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Province', ``, 'string') }}",
              "zip": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Zip_Code', ``, 'string') }}",
              "phone": "={{ $('Switch').item.json.data.fromNumber }}"
            }
          }
        },
        "limeItemsUi": {
          "lineItemValues": [
            {
              "productId": "={{ $fromAI('productId', ``, 'string') }}"
            }
          ]
        }
      },
      "type": "n8n-nodes-base.shopifyTool",
      "typeVersion": 1,
      "position": [1140, 740],
      "id": "81b7bc24-ca23-4cf3-989f-9270d6fa5de0",
      "name": "Create Order",
      "credentials": {
        "shopifyAccessTokenApi": {
          "id": "YOUR_SHOPIFY_CREDENTIAL_ID",
          "name": "Shopify Access Token"
        }
      }
    },
    {
      "parameters": {
        "content": "# WhatsApp Shopify E-commerce Workflow\n\n## Overview\n\nThis n8n workflow transforms WhatsApp into a complete e-commerce chatbot for Shopify stores.It handles text, voice, and image messages, enabling customers to browse products, get recommendations, and place orders directly through WhatsApp.\n\n## How It Works\n\n1.**Message Reception**: Receives WhatsApp messages via Wassenger trigger\n2.**Media Processing**: \n - **Voice messages**: Downloads and transcribes audio to text\n - **Images**: Downloads and analyzes images with AI vision\n - **Text messages**: Processes directly\n3.**AI Shopping Assistant**: Handles customer inquiries using specialized e-commerce prompts\n4.**Shopify Integration**: Searches products and creates orders automatically\n5.**Response Delivery**: Sends personalized responses back to customers\n\n## Key Features\n\n- **Multi-format support**: Text, voice, and image messages\n- **AI-powered product search** with Shopify integration\n- **Automated order creation** with customer data collection\n- **Conversation memory** for personalized shopping experience\n- **Image analysis** for visual product searches\n\n## Components\n\n### Media Processing\n- **Audio Transcription**: OpenAI Whisper converts voice to text\n- **Image Analysis**: GPT-4o analyzes product images and descriptions\n- **Download Management**: Handles media file downloads from Wassenger\n\n### AI Shopping Assistant\n- **Product Search**: Retrieves Shopify products with detailed information\n- **Order Processing**: Creates orders with customer shipping/billing data\n- **Conversation Context**: Maintains shopping session memory\n- **Smart Recommendations**: Suggests products based on customer needs\n\n### Shopify Tools\n- **Get Products**: Searches and retrieves product catalog\n- **Create Order**: Processes customer orders with full details\n\n## Use Cases\n\nPerfect for:\n- **E-commerce stores** wanting WhatsApp sales integration\n- **Product discovery** through voice and image searches\n- **Order management** without leaving WhatsApp\n- **Customer service** with intelligent product recommendations\n- **Mobile-first shopping** experiences\n\n## Configuration Requirements\n\n- **Wassenger Account**: WhatsApp Business API access\n- **OpenAI API**: For transcription and image analysis\n- **Shopify Store**: With API access tokens\n- **n8n Instance**: To run the workflow\n\n## Setup Instructions\n\n1.Replace all placeholder values with your actual credentials:\n - `YOUR_DEVICE_ID`: Your Wassenger device ID\n - `YOUR_WEBHOOK_ID`: Your webhook ID\n - `YOUR_WASSENGER_CREDENTIAL_ID`: Your Wassenger API credential\n - `YOUR_OPENAI_CREDENTIAL_ID`: Your OpenAI API credential\n - `YOUR_SHOPIFY_CREDENTIAL_ID`: Your Shopify API credential\n - `YOUR_HTTP_HEADER_AUTH_ID`: Your HTTP header authentication credential\n\n2.Configure credentials in n8n:\n - Add Wassenger API key\n - Add OpenAI API key\n - Add Shopify access token\n - Add HTTP header authentication for Wassenger downloads\n\n3.Test the workflow with different message types(text, voice, image)\n\n4.Monitor and adjust the AI agent prompts based on your store's needs",
        "height": 1500,
        "width": 980
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [-1800, -300],
      "id": "05a4d839-87cd-4350-b87d-cf27a10952d8",
      "name": "Sticky Note"
    },
    {
      "parameters": {
        "content": "# AI Agent",
        "height": 740,
        "width": 2360,
        "color": 5
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [-680, -100],
      "id": "579650e7-aadd-49a6-8d72-f50cd7769fa6",
      "name": "Sticky Note1"
    },
    {
      "parameters": {
        "content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n# Shopify Agent",
        "height": 280,
        "width": 820,
        "color": 4
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [860, 680],
      "id": "c5a9eee7-3435-4939-99b1-dc30898ed52e",
      "name": "Sticky Note2"
    }
  ],
  "pinData": {},
  "connections": {
    "Wassenger Trigger": {
      "main": [
        [
          {
            "node": "Switch",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Switch": {
      "main": [
        [
          {
            "node": "Download Audio",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Download image",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download Audio": {
      "main": [
        [
          {
            "node": "Download Audio1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download Audio1": {
      "main": [
        [
          {
            "node": "Audio transcription",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Audio transcription": {
      "main": [
        [
          {
            "node": "Edit Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download image": {
      "main": [
        [
          {
            "node": "Download API audio",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download API audio": {
      "main": [
        [
          {
            "node": "Analyze Image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Image + Text Prompt": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Analyze Image": {
      "main": [
        [
          {
            "node": "Image + Text Prompt",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent": {
      "main": [
        [
          {
            "node": "Wassenger",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Simple Memory": {
      "ai_memory": [
        [
          {
            "node": "AI Agent",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "Get Products": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Create Order": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "WORKFLOW_VERSION_ID",
  "meta": {
    "templateCredsSetupCompleted": true,
    "instanceId": "YOUR_INSTANCE_ID"
  },
  "id": "YOUR_WORKFLOW_ID",
  "tags": []
}

Raccomandazioni intelligenti

  • Prodotti complementari
  • Offerte basate sulla cronologia
  • Sconti per quantità

Analytics integrati

Wassenger fornisce metriche dettagliate:

  • Prodotti più consultati
  • Tasso di conversione per prodotto
  • Ore di attività di picco
  • Motivi di abbandono del carrello

Perché Wassenger Flows?

Vantaggi rispetto alle soluzioni tradizionali:

🚀 Velocità di implementazione

  • Configurazione in minuti, non giorni
  • Template preconfigurati
  • Integrazioni native

💰 Economico

  • Una piattaforma per tutto
  • Prezzi trasparenti
  • Nessun costo di sviluppo nascosto

🔧 Manutenzione semplice

  • Interfaccia visiva intuitiva
  • Aggiornamenti automatici
  • Supporto tecnico specializzato

📊 Analytics integrati

  • Metriche delle conversazioni
  • ROI in tempo reale
  • Insight comportamentali

Serve aiuto? Il nostro team di specialisti è disponibile per accompagnarvi in ogni fase qui

Vi è stato utile questo tutorial? Condividetelo con altri imprenditori che potrebbero beneficiarne. E se implementate questo assistente, ci piacerebbe conoscere i vostri risultati.

Ready to transform your WhatsApp communication?

Start automating your customer interactions today with Wassenger

Get Started Free