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
- Andate nella dashboard di Shopify
- Cercate “App Development” nella sezione sviluppatori
- Cliccate “Create App”
- 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
- Cliccate “Install” per installare l'applicazione
- IMPORTANTE! Salvate il Admin API Access Token che appare
Avrete anche bisogno della API Secret Key
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
- Effettuate il login nel vostro account Wassenger
- Andate nella sezione “Flows” nella sidebar
- Cliccate “Create new Flow”
- 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
- Nel vostro Flow, cercate “Shopify” nella libreria dei nodi
- Selezionate “Product” → “Get Many”
- Questo permetterà al vostro assistente di accedere a tutto il catalogo
3.2 Configurate le credenziali Shopify
- Cliccate “Create New Credential”
- 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
- Cliccate “Test Connection” per verificare
✅ Se vedete “Connection tested successfully”, perfetto!
3.3 Aggiungete il nodo ordini
- Aggiungete un altro nodo Shopify
- Selezionate “Order” → “Create”
- 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
- Il cliente conferma l'ordine
- L'assistente genera un link di pagamento sicuro
- Il cliente paga
- Un webhook conferma il pagamento
- L'ordine viene caricato automaticamente su Shopify
Passo 6: Testate il vostro Assistente
6.1 Test di base
- Richiesta di prodotto: “Che giocattoli avete per bambini?”
- Informazione specifica: “Dimmi di più sull'escavatore telecomandato”
- 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.





















