Flowise Embed
Javascript library to display flowise chatbot on your website

Install:
yarn install
Dev:
yarn dev
A development server will be running on http://localhost:5678 automatically. Update public/index.html
to connect directly to Flowise:
<script type="module">
import Chatbot from 'https://localhost:5678/web.js';
Chatbot.init({
chatflowid: '91e9c803-5169-4db9-8207-3c0915d71c5f',
apiHost: 'https://your-flowise-instance.com',
});
</script>
Build:
yarn build
Embed in your HTML
<script type="module">
import Chatbot from 'https://cdn.jsdelivr.net/npm/flowise-embed/dist/web.js';
Chatbot.init({
chatflowid: '<chatflowid>',
apiHost: 'http://localhost:3000',
});
</script>
FullPage
<script type="module">
import Chatbot from 'https://cdn.jsdelivr.net/npm/flowise-embed/dist/web.js';
Chatbot.initFull({
chatflowid: '<chatflowid>',
apiHost: 'http://localhost:3000',
});
</script>
<flowise-fullchatbot></flowise-fullchatbot>
To enable full screen, add margin: 0
to body
style, and confirm you don't set height and width
<body style="margin: 0">
<script type="module">
import Chatbot from 'https://cdn.jsdelivr.net/npm/flowise-embed/dist/web.js';
Chatbot.initFull({
chatflowid: '<chatflowid>',
apiHost: 'http://localhost:3000',
theme: {
chatWindow: {
},
},
});
</script>
</body>
Configuration
You can also customize chatbot with different configuration
<script type="module">
import Chatbot from 'https://cdn.jsdelivr.net/npm/flowise-embed/dist/web.js';
Chatbot.init({
chatflowid: '91e9c803-5169-4db9-8207-3c0915d71c5f',
apiHost: 'http://localhost:3000',
chatflowConfig: {
},
observersConfig: {
observeUserInput: (userInput) => {
console.log({ userInput });
},
observeMessages: (messages) => {
console.log({ messages });
},
observeLoading: (loading) => {
console.log({ loading });
},
},
theme: {
button: {
backgroundColor: '#3B81F6',
right: 20,
bottom: 20,
size: 48,
dragAndDrop: true,
iconColor: 'white',
customIconSrc: 'https://raw.githubusercontent.com/walkxcode/dashboard-icons/main/svg/google-messages.svg',
autoWindowOpen: {
autoOpen: true,
openDelay: 2,
autoOpenOnMobile: false,
},
},
tooltip: {
showTooltip: true,
tooltipMessage: 'Hi There 👋!',
tooltipBackgroundColor: 'black',
tooltipTextColor: 'white',
tooltipFontSize: 16,
},
disclaimer: {
title: 'Disclaimer',
message: 'By using this chatbot, you agree to the <a target="_blank" href="https://flowiseai.com/terms">Terms & Condition</a>',
textColor: 'black',
buttonColor: '#3b82f6',
buttonText: 'Start Chatting',
buttonTextColor: 'white',
blurredBackgroundColor: 'rgba(0, 0, 0, 0.4)',
backgroundColor: 'white',
},
customCSS: ``,
chatWindow: {
showTitle: true,
showAgentMessages: true,
title: 'Flowise Bot',
titleAvatarSrc: 'https://raw.githubusercontent.com/walkxcode/dashboard-icons/main/svg/google-messages.svg',
welcomeMessage: 'Hello! This is custom welcome message',
errorMessage: 'This is a custom error message',
backgroundColor: '#ffffff',
backgroundImage: 'enter image path or link',
height: 700,
width: 400,
fontSize: 16,
starterPrompts: ['What is a bot?', 'Who are you?'],
starterPromptFontSize: 15,
clearChatOnReload: false,
sourceDocsTitle: 'Sources:',
renderHTML: true,
botMessage: {
backgroundColor: '#f7f8ff',
textColor: '#303235',
showAvatar: true,
avatarSrc: 'https://raw.githubusercontent.com/zahidkhawaja/langchain-chat-nextjs/main/public/parroticon.png',
},
userMessage: {
backgroundColor: '#3B81F6',
textColor: '#ffffff',
showAvatar: true,
avatarSrc: 'https://raw.githubusercontent.com/zahidkhawaja/langchain-chat-nextjs/main/public/usericon.png',
},
textInput: {
placeholder: 'Type your question',
backgroundColor: '#ffffff',
textColor: '#303235',
sendButtonColor: '#3B81F6',
maxChars: 50,
maxCharsWarningMessage: 'You exceeded the characters limit. Please input less than 50 characters.',
autoFocus: true,
sendMessageSound: true,
receiveMessageSound: true,
},
feedback: {
color: '#303235',
},
dateTimeToggle: {
date: true,
time: true,
},
footer: {
textColor: '#303235',
text: 'Powered by',
company: 'Flowise',
companyLink: 'https://flowiseai.com',
},
},
},
});
</script>
(Experimental) Proxy Server Setup
The Flowise Embed Proxy Server enhances the security of your chatbot implementation by acting as a protective intermediary layer. This server eliminates the need to expose sensitive Flowise instance details in your frontend code and provides several key security benefits:

- Enhanced Security: Conceals your Flowise API host and chatflow IDs from client-side exposure
- Access Control: Implements strict domain-based restrictions for chatbot embedding
- Secure Communication: Acts as a secure gateway for all interactions between your website and Flowise instance
- Authentication Management: Handles API key authentication securely on the server side, away from client exposure
This proxy server can be deployed to any Node.js hosting platform.
Quick Start
API_HOST=https://your-flowise-instance.com
FLOWISE_API_KEY=your-api-key
support=abc123-def456,https://example.com
agent1=xyz789-uvw456,https://sales.example.com
helpdesk=ghi123-jkl456,https://help.example.com,https://support.example.com
- Install dependencies: (assuming you did not run
yarn install
yet)
yarn install
yarn start
- Once the proxy server is running in production, you will be able to embed your chatbots safely without exposing your Flowise API host and chatflow IDs as below:
<script type="module">
import Chatbot from 'your-proxy-server-url/web.js';
Chatbot.init({
chatflowid: 'your-identifier-here',
apiHost: 'your-proxy-server-url',
chatflowConfig: {
},
});
</script>
- (optional) If you want to test any identifier in public/index.html, you can update it as below:
chatflowid: 'your-identifier-here' // Must match an identifier from your .env
Important Notes:
- To ensure secure embedding, you must explicitly whitelist the websites authorized to embed each chatbot. This configuration is done within the .env file. Note that this also applies to your server's URL when deployed to a cloud environment, or http://localhost:3001 for local development, if needed you must whitelist it as well.
- Wildcard domains (*) are not supported for security reasons
- Identifiers are case-insensitive (e.g., 'Support' and 'support' are treated the same)
Cloud Deployment Requirements
When deploying to cloud platforms, you must configure the environment variables directly in your platform. The proxy server will not start without these variables being properly set. Compatible with Nixpacks for automatic deployment configuration.
Development Mode (For Local Testing)
yarn start
- Update the test page configuration:
- Open
public/index.html
in your code editor
- Modify the
chatflowid
and apiHost
to match your .env
settings:
<script type="module">
import Chatbot from './web.js';
Chatbot.init({
chatflowid: 'agent1',
apiHost: 'http://localhost:3001',
});
</script>
For full page testing, use this configuration instead:
<flowise-fullchatbot></flowise-fullchatbot>
<script type="module">
import Chatbot from './web.js';
Chatbot.initFull({
chatflowid: 'agent1',
apiHost: 'http://localhost:3001',
});
</script>
- While the proxy server is running, open a new terminal and start the development server:
yarn dev
Note: The development URL (http://localhost:5678) is automatically added to allowed domains in development mode. You don't need to add it manually.
License
Source code in this repository is made available under the MIT License.