KIWI

EV Charging Solution Contractor

Fully dedicated to delivering unparalleled products and solutions that will empower your EV charging station business.

Flagship Services

Unique Project Solutions

Based on your specific requirements, KIWI provides you with a tailored solution that includes power systems, EVSE, construction plans, and commercial facilities. Enabling you to start your EV charging business efficiently and cost-effectively.

Free for a limited time until August 1st

Various EV Chargers Supplying

KIWI offers OEM and ODM services for AC/DC EV chargers, providing testing reports and quality assurance services to meet your needs while ensuring the feasibility of the products. This will make your EV charger business more competitive.

30% off sample discount on DC chargers

Components and Accessories

KIWI provides self-developed main control boards, charging modules, cooling fans, cables, charging guns, adapters, display screen safety components and other internal or external accessories. At the same time, we support cooperative production business.

Continuously supplying your EV charger assembly factory

Technology Service

Based on years of industry experience, we provide real-time online/on-site technical support and training for customers who have purchased our EV charger as well as distributors in the global electric vehicle charging industry.

24/7 online service and global on-site travel services

About KIWI

Established in early 2018, Shenzhen Kiwi Technology Co., Ltd. boasts a core team with over a decade of industry experience. Aspiring to be a leading EV charging solutions contractor, we uphold the highest standards throughout our R&D engineer team, and production processes. We eagerly anticipate partnering with you for mutual success.

Target

Become a leading solution contractor worldwide.

Vision

Continuously promote low-carbon travel to make the world cleaner.

Advantage

A one-stop service provider (Solutions,chargers, accessories, guidance)

Hot Selling Countries And Regions

Factory Floor Space(㎡)

Number of R&D Engineers

Overall Annual Output Value(USD)

KIWI Clients

KIWI News

EV Charging Station Vietnam: VinFast, EVN and the $1.4B Market 2026

Vietnam EV Charging Market Overview The EV charging station Vietnam market is one of Southeast Asia's most dynamic and rapidly evolving sectors. With a current market size of $317.5 million and projected to reach $1.38 billion by 2030 (growing at a 26% CAGR), Vietnam...

DC Fast Charger Thailand: Market Guide & Business Opportunity 2026

Thailand EV Charging Market Overview The DC fast charger Thailand market is experiencing explosive growth, driven by the country's ambitious electric vehicle adoption targets and government support for EV infrastructure development. According to recent market...

How to Become an EV Charger Distributor in India: 2026 Complete Guide

How to Become an EV Charger Distributor in India: 2026 Complete Guide

India’s EV charging market is projected to reach $10.6 billion by 2030, and the country needs 1.2 million charging points — but has fewer than 100,000 today. Becoming an EV charger distributor in India in 2026 means entering a high-growth market with massive...

tag. * Or use the Divi Theme Options → Integration panel. * * Configuration: * - WEBHOOK_URL: n8n webhook endpoint * - brand colors are hardcoded for KIWI EV */(function() { 'use strict';// ============ CONFIGURATION ============ const CONFIG = { webhookUrl: 'https://n8n.srv1272413.hstgr.cloud/webhook/14df1758-7932-4d2d-8926-2a2298c0fc4a/chat', companyName: 'KIWI EV Support', subtitle: 'Your AI-powered KIWI EV assistant is here to help.', primaryColor: '#00a651', primaryDark: '#007b3d', secondaryColor: '#f0f0f0', textColor: '#333333', headerTextColor: '#ffffff', botBubbleColor: '#f0f0f0', userBubbleColor: '#00a651', welcomeMessage: '👋 Welcome to KIWI EV! Ask me anything about our electric vehicles, partnerships, or how we can help you bring affordable EV solutions to your market.', placeholderText: 'Ask about KIWI EV products, partnerships, or support...', sessionStorageKey: 'kiwi_ev_chat_session', historyStorageKey: 'kiwi_ev_chat_history', storagePrefix: 'kiwi_ev_', };// ============ STATE ============ let isOpen = false; let sessionId = loadSessionId(); let messages = loadHistory(); let isSending = false;// ============ SESSION MANAGEMENT ============ function generateSessionId() { return 'kiwi_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9); }function loadSessionId() { try { let sid = localStorage.getItem(CONFIG.sessionStorageKey); if (!sid) { sid = generateSessionId(); localStorage.setItem(CONFIG.sessionStorageKey, sid); } return sid; } catch(e) { return generateSessionId(); } }function loadHistory() { try { let data = localStorage.getItem(CONFIG.historyStorageKey); return data ? JSON.parse(data) : []; } catch(e) { return []; } }function saveHistory() { try { localStorage.setItem(CONFIG.historyStorageKey, JSON.stringify(messages.slice(-50))); } catch(e) { // localStorage full or unavailable — silently ignore } }// ============ UI CONSTRUCTION ============ function createWidget() { // Check if already exists if (document.getElementById('kiwi-ev-chat-widget')) return;// Create root container const root = document.createElement('div'); root.id = 'kiwi-ev-chat-widget'; root.innerHTML = `
${CONFIG.companyName}
${CONFIG.subtitle}
${CONFIG.welcomeMessage}
`;document.body.appendChild(root); bindEvents(); restoreHistory();// Auto-resize textarea const input = document.getElementById('kiwiInput'); input.addEventListener('input', function() { this.style.height = 'auto'; this.style.height = Math.min(this.scrollHeight, 100) + 'px'; }); }// ============ EVENT BINDING ============ function bindEvents() { document.getElementById('kiwiChatButton').addEventListener('click', toggleChat); document.getElementById('kiwiSendBtn').addEventListener('click', sendMessage); document.getElementById('kiwiInput').addEventListener('keydown', function(e) { if (e.key === 'Enter' && !e.shiftKey) { e.preventDefault(); sendMessage(); } }); }// ============ CHAT TOGGLE ============ function toggleChat() { isOpen = !isOpen; const panel = document.getElementById('kiwiChatPanel'); const button = document.getElementById('kiwiChatButton'); panel.classList.toggle('open', isOpen); button.classList.toggle('open', isOpen); if (isOpen) { setTimeout(() => { document.getElementById('kiwiInput').focus(); scrollToBottom(); }, 100); } }// ============ MESSAGE DISPLAY ============ function addMessage(text, role) { const container = document.getElementById('kiwiMessages'); const typingEl = document.getElementById('kiwiTyping'); const msgDiv = document.createElement('div'); msgDiv.className = 'kiwi-message ' + role; const bubble = document.createElement('div'); bubble.className = 'kiwi-bubble'; bubble.textContent = text; msgDiv.appendChild(bubble); const time = document.createElement('div'); time.className = 'kiwi-message-time'; time.textContent = new Date().toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); msgDiv.appendChild(time); container.insertBefore(msgDiv, typingEl); scrollToBottom();messages.push({ role: role, text: text, time: new Date().toISOString() }); saveHistory(); }function showTyping() { document.getElementById('kiwiTyping').classList.add('active'); scrollToBottom(); }function hideTyping() { document.getElementById('kiwiTyping').classList.remove('active'); }function scrollToBottom() { const container = document.getElementById('kiwiMessages'); setTimeout(() => { container.scrollTop = container.scrollHeight; }, 50); }function restoreHistory() { // Show previous messages from this session (excluding welcome) const welcomeEl = document.querySelector('.kiwi-message.bot:first-child .kiwi-bubble'); if (welcomeEl && welcomeEl.textContent === CONFIG.welcomeMessage) { // Keep welcome, load rest for (const msg of messages) { if (msg.text !== CONFIG.welcomeMessage) { addMessage(msg.text, msg.role); } } } }// ============ SEND MESSAGE ============ function sendMessage() { if (isSending) return; const input = document.getElementById('kiwiInput'); const text = input.value.trim(); if (!text) return;input.value = ''; input.style.height = 'auto';addMessage(text, 'user'); isSending = true; document.getElementById('kiwiSendBtn').disabled = true; showTyping();// Call n8n webhook fetch(CONFIG.webhookUrl, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ action: 'sendMessage', sessionId: sessionId, chatInput: text, }) }) .then(response => { if (!response.ok) throw new Error('HTTP ' + response.status); return response.json(); }) .then(data => { hideTyping(); const reply = data.output || data.response || data.text || JSON.stringify(data); addMessage(reply, 'bot'); }) .catch(err => { hideTyping(); addMessage('Sorry, I\'m having trouble connecting right now. Please try again later.', 'bot'); console.error('Chat widget error:', err); }) .finally(() => { isSending = false; document.getElementById('kiwiSendBtn').disabled = false; }); }// ============ INIT ============ if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', createWidget); } else { createWidget(); }})();