Eedesy
Book Demo
HomeProductsContact
Zapbot
  • Introduction
  • Overview
  • Graph Editor
  • Variables
  • Publish
  • Share
  • Context Menu
  • Export & Import
  • Overview
  • Text Bubble
  • Image Bubble
  • Video Bubble
  • Audio Bubble
  • Embed Bubble
  • Text Input
  • Number Input
  • Email Input
  • Phone Input
  • Date Input
  • Buttons
  • Picture Choice
  • Rating
  • File Upload
  • Payment
  • Set Variable
  • Condition
  • Redirect
  • Script
  • Zapbot Link
  • Wait
  • Jump
  • A/B Test
  • Webhook
  • Google Sheets
  • HTTP Request
  • OpenAI
  • Anthropic Claude
  • ElevenLabs
  • Google Analytics
  • Meta Pixel
  • Zapier
  • Make.com
  • Chatwoot
  • Zendesk
  • Send Email
  • Overview
  • HTML & JavaScript
  • React
  • Next.js
  • WordPress
  • Webflow
  • iFrame
  • Custom Domain
  • WhatsApp
  • Theme Overview
  • Custom Fonts
  • Bot Settings
  • Remember User
  • Overview
  • Analytics
  • How to Get Help
  • Creating Loops
  • UTM Tracking
  • Multiple Avatars
  • RTL Support
  • FAQ

Related Products

  • AI Voice Agent
  • AI Voice Assistant
  • Try Free
Zapbot
  • Introduction
  • Overview
  • Graph Editor
  • Variables
  • Publish
  • Share
  • Context Menu
  • Export & Import
  • Overview
  • Text Bubble
  • Image Bubble
  • Video Bubble
  • Audio Bubble
  • Embed Bubble
  • Text Input
  • Number Input
  • Email Input
  • Phone Input
  • Date Input
  • Buttons
  • Picture Choice
  • Rating
  • File Upload
  • Payment
  • Set Variable
  • Condition
  • Redirect
  • Script
  • Zapbot Link
  • Wait
  • Jump
  • A/B Test
  • Webhook
  • Google Sheets
  • HTTP Request
  • OpenAI
  • Anthropic Claude
  • ElevenLabs
  • Google Analytics
  • Meta Pixel
  • Zapier
  • Make.com
  • Chatwoot
  • Zendesk
  • Send Email
  • Overview
  • HTML & JavaScript
  • React
  • Next.js
  • WordPress
  • Webflow
  • iFrame
  • Custom Domain
  • WhatsApp
  • Theme Overview
  • Custom Fonts
  • Bot Settings
  • Remember User
  • Overview
  • Analytics
  • How to Get Help
  • Creating Loops
  • UTM Tracking
  • Multiple Avatars
  • RTL Support
  • FAQ
  1. Docs
  2. Zapbot
  3. Deploy
  4. HTML & JavaScript

HTML & Javascript

Embed your Zapbot using HTML and JavaScript with standard, popup, or bubble display modes.

Standard

You can get the standard HTML and Javascript code by clicking on the "HTML & Javascript" button in the "Share" tab of your zapbot.

There, you can change the container dimensions. Here is a code example:

<script type="module">
  import Zapbot from 'https://cdn.jsdelivr.net/npm/@edesy/zapbot-js@0/dist/web.js'

  Zapbot.initStandard({
    zapbot: 'my-zapbot',
  })
</script>

<zapbot-standard style="width: 100%; height: 600px; "></zapbot-standard>

This code is creating a container with a 100% width (will match parent width) and 600px height.

All Available Settings

type BotProps = {
  id?: string;
  zapbot: string | any;
  isPreview?: boolean;
  resultId?: string;
  prefilledVariables?: Record<string, unknown>;
  apiHost?: string;
  wsHost?: string;
  font?:
    | string
    | {
        type: "Google";
        family?: string | undefined;
      }
    | {
        type: "Custom";
        url?: string | undefined;
        family?: string | undefined;
        css?: string | undefined;
      };
  progressBarRef?: HTMLDivElement;
  startFrom?:
    | {
        type: "group";
        groupId: string;
      }
    | {
        type: "event";
        eventId: string;
      };
  sessionId?: string;
  theme?: {
    chatWindow?: {
      backgroundColor?: string;
      maxWidth?: string;
      maxHeight?: string;
    };
    button?: {
      size?: "medium" | "large" | `${number}px`;
      backgroundColor?: string;
      iconColor?: string;
      customIconSrc?: string;
      customCloseIconSrc?: string;
    };
    previewMessage?: {
      backgroundColor?: string;
      textColor?: string;
      closeButtonBackgroundColor?: string;
      closeButtonIconColor?: string;
    };
    position?: "fixed" | "static"; // Defaults to "fixed"
    placement?: "left" | "right"; // Defaults to "right"
  };
  previewMessage?: {
    avatarUrl?: string;
    message: string;
    autoShowDelay?: number;
  };
  autoShowDelay?: number;
  onNewInputBlock?: (inputBlock: any) => void;
  onAnswer?: (answer: { message: string; blockId: string }) => void;
  onInit?: () => void;
  onEnd?: () => void;
  onNewLogs?: (
    logs: {
      status: string;
      description: string;
      details?: unknown;
    }[],
  ) => void;
  onChatStatePersisted?: (isEnabled: boolean) => void;
  onScriptExecutionSuccess?: (message: string) => void;
};

Multiple bots

If you have different bots on the same page you will have to make them distinct with an additional id prop:

<script type="module">
  import Zapbot from 'https://cdn.jsdelivr.net/npm/@edesy/zapbot-js@0/dist/web.js'

  Zapbot.initStandard({
    id: 'bot1'
    zapbot: 'my-zapbot',
  })

  Zapbot.initStandard({
    id: 'bot2'
    zapbot: 'my-zapbot-2',
  })
</script>

<zapbot-standard
  id="bot1"
  style="width: 100%; height: 600px; "
></zapbot-standard>
...
<zapbot-standard
  id="bot2"
  style="width: 100%; height: 600px; "
></zapbot-standard>

Popup

You can get the popup HTML and Javascript code by clicking on the "HTML & Javascript" button in the "Share" tab of your zapbot.

Here is an example:

<script type="module">
  import Zapbot from 'https://cdn.jsdelivr.net/npm/@edesy/zapbot-js@0/dist/web.js'

  Zapbot.initPopup({
    zapbot: 'my-zapbot',
    autoShowDelay: 3000,
  })
</script>

This code will automatically trigger the popup window after 3 seconds.

Popup Settings

type PopupProps = {
  id?: string;
  zapbot: string | any;
  isPreview?: boolean;
  resultId?: string;
  prefilledVariables?: Record<string, unknown>;
  apiHost?: string;
  wsHost?: string;
  font?:
    | string
    | {
        type: "Google";
        family?: string | undefined;
      }
    | {
        type: "Custom";
        url?: string | undefined;
        family?: string | undefined;
        css?: string | undefined;
      };
  progressBarRef?: HTMLDivElement;
  startFrom?:
    | {
        type: "group";
        groupId: string;
      }
    | {
        type: "event";
        eventId: string;
      };
  sessionId?: string;
  theme?: {
    chatWindow?: {
      backgroundColor?: string;
      maxWidth?: string;
      maxHeight?: string;
    };
    button?: {
      size?: "medium" | "large" | `${number}px`;
      backgroundColor?: string;
      iconColor?: string;
      customIconSrc?: string;
      customCloseIconSrc?: string;
    };
    previewMessage?: {
      backgroundColor?: string;
      textColor?: string;
      closeButtonBackgroundColor?: string;
      closeButtonIconColor?: string;
    };
    placement?: "left" | "right";
  };
  previewMessage?: {
    avatarUrl?: string;
    message: string;
    autoShowDelay?: number;
  };
  autoShowDelay?: number;
  onNewInputBlock?: (inputBlock: any) => void;
  onAnswer?: (answer: { message: string; blockId: string }) => void;
  onInit?: () => void;
  onEnd?: () => void;
  onNewLogs?: (
    logs: {
      status: string;
      description: string;
      details?: unknown;
    }[],
  ) => void;
  onChatStatePersisted?: (isEnabled: boolean) => void;
  onScriptExecutionSuccess?: (message: string) => void;
  autoShowDelay?: number;
  theme?: {
    width?: string;
    backgroundColor?: string;
    zIndex?: number;
  };
  defaultOpen?: boolean;
  isOpen?: boolean;
  onOpen?: () => void;
  onClose?: () => void;
};

Bubble

You can get the bubble HTML and Javascript code by clicking on the "HTML & Javascript" button in the "Share" tab of your zapbot.

Here is an example:

<script type="module">
  import Zapbot from 'https://cdn.jsdelivr.net/npm/@edesy/zapbot-js@0/dist/web.js'

  Zapbot.initBubble({
    zapbot: 'my-zapbot',
    previewMessage: {
      message: 'I have a question for you!',
      autoShowDelay: 5000,
      avatarUrl: 'https://avatars.githubusercontent.com/u/16015833?v=4',
    }, // Defaults to undefined
    theme: {
      button: { backgroundColor: '#0042DA', iconColor: '#FFFFFF' },
      previewMessage: { backgroundColor: '#ffffff', textColor: 'black' },
      chatWindow: { backgroundColor: '#ffffff', maxWidth: '100%' },
    },
  })
</script>

This code will show the bubble and let a preview message appear after 5 seconds.

Bubble Settings

type BubbleProps = {
  id?: string;
  zapbot: string | any;
  isPreview?: boolean;
  resultId?: string;
  prefilledVariables?: Record<string, unknown>;
  apiHost?: string;
  wsHost?: string;
  font?:
    | string
    | {
        type: "Google";
        family?: string | undefined;
      }
    | {
        type: "Custom";
        url?: string | undefined;
        family?: string | undefined;
        css?: string | undefined;
      };
  progressBarRef?: HTMLDivElement;
  startFrom?:
    | {
        type: "group";
        groupId: string;
      }
    | {
        type: "event";
        eventId: string;
      };
  sessionId?: string;
  theme?: {
    chatWindow?: {
      backgroundColor?: string;
      maxWidth?: string;
      maxHeight?: string;
    };
    button?: {
      isHidden?: boolean;
      size?: "medium" | "large" | `${number}px`;
      backgroundColor?: string;
      iconColor?: string;
      customIconSrc?: string;
      customCloseIconSrc?: string;
    };
    previewMessage?: {
      backgroundColor?: string;
      textColor?: string;
      closeButtonBackgroundColor?: string;
      closeButtonIconColor?: string;
    };
    placement?: "left" | "right";
  };
  previewMessage?: {
    avatarUrl?: string;
    message: string;
    autoShowDelay?: number;
  };
  autoShowDelay?: number;
  isOpen?: boolean;
  onNewInputBlock?: (inputBlock: any) => void;
  onAnswer?: (answer: { message: string; blockId: string }) => void;
  onInit?: () => void;
  onEnd?: () => void;
  onNewLogs?: (
    logs: {
      status: string;
      description: string;
      details?: unknown;
    }[],
  ) => void;
  onChatStatePersisted?: (isEnabled: boolean) => void;
  onScriptExecutionSuccess?: (message: string) => void;
  onOpen?: () => void;
  onClose?: () => void;
  onPreviewMessageClick?: () => void;
  onPreviewMessageDismissed?: () => void;
};

Custom button position

You can move the button with some custom CSS on your website. For example, you can place the bubble button higher with the following CSS:

zapbot-bubble::part(button) {
  bottom: 60px;
}

zapbot-bubble::part(bot) {
  bottom: 140px;
  height: calc(100% - 140px)
}

If you have a preview message, you'll also have to manually position it:

zapbot-bubble::part(preview-message) {
  bottom: 140px;
}

Commands

Here are the commands you can use to trigger your embedded zapbot:

  • Zapbot.open(): Open popup or bubble

  • Zapbot.close(): Close popup or bubble

  • Zapbot.toggle(): Toggle the bubble or popup open/close state,

  • Zapbot.showPreviewMessage(): Show preview message from the bubble,

  • Zapbot.hidePreviewMessage(): Hide preview message from the bubble,

  • Zapbot.setPrefilledVariables(...): Set prefilled variables. Example:

    Zapbot.setPrefilledVariables({
      Name: 'Jhon',
      Email: '[email protected]',
    })
    

    For more information, check out Additional configuration.

  • Zapbot.setInputValue(...): Set the value in the currently displayed input.

  • Zapbot.sendCommand(...): Send a command to the bot.

  • Zapbot.reload(): Reload the bot.

You can bind these commands on a button element, for example:

<button onclick="Zapbot.open()">Contact us</button>

For each command you can pass an optional id prop to target a specific zapbot. I.e. Zapbot.open({ id: 'my-bubble' })

Callbacks

If you need to trigger events on your parent website when the user interact with the bot, you can use the following callbacks:

Zapbot.initStandard({
  zapbot: 'my-zapbot',
  onNewInputBlock: (inputBlock) => {
    console.log('New input block displayed', inputBlock.id)
  },
  onAnswer: (answer) => {
    console.log('Answer received', answer.message, answer.blockId)
  },
  onInit: () => {
    console.log('Bot initialized')
  },
  onEnd: () => {
    console.log('Bot ended')
  },
})

Additional configuration

You can prefill the bot variable values in your embed code by adding the prefilledVariables option. Here is an example:

Zapbot.initStandard({
  zapbot: 'my-zapbot',
  prefilledVariables: {
    'Current URL': 'https://my-site/account',
    'User name': 'John Doe',
  },
})

It will prefill the Current URL variable with "https://my-site/account" and the User name variable with "John Doe". More info about variables: here.

Note that if your site URL contains query params (i.e. https://edesy.in/zapbot?User%20name=John%20Doe), the variables will automatically be injected to the zapbot. So you don't need to manually transfer query params to the bot embed configuration.

Previous
Overview
Next
React

On this page

  • Standard
  • All Available Settings
  • Multiple bots
  • Popup
  • Popup Settings
  • Bubble
  • Bubble Settings
  • Custom button position
  • Commands
  • Callbacks
  • Additional configuration

Stay Updated

Get the latest updates on AI voice technology, product releases, and exclusive resources.

Get Started

Try our products for free
AI Voice Agent
Build voice AI for calls
WhatsApp AI Bot
Automate WhatsApp chats
Website Chatbot
AI chat for websites
Edesy CRM
Manage leads & customers
Book a DemoCall UsEmail Us
Eedesy

Your all-in-one platform for digital innovation. We build AI-powered solutions that transform how businesses operate.

[email protected]+91 95475 31359

Products

  • AI Voice Assistant
  • WhatsApp Voice AI
  • WhatsApp Bot Builder
  • AI Website Chatbot
  • AI-SDR
  • Number Masking
  • Shopify Apps
  • View All Products

Solutions

  • For E-commerce
  • For Healthcare
  • For Real Estate
  • For Restaurants
  • For Appointments
  • View All Use Cases

Services

  • AI Chatbot Development
  • Voice AI Development
  • Shopify Development
  • SaaS Development
  • WhatsApp API Integration
  • View All Services

Resources

  • Documentation
  • Voice Agent Docs
  • API Reference
  • Number Masking API Docs
  • Blog
  • Changelog
  • Book a Demo

Company

  • About Us
  • Contact
  • Careers
  • Privacy Policy
  • Terms of Service

Products

  • AI Voice Assistant
  • WhatsApp Voice AI
  • WhatsApp Bot Builder
  • AI Website Chatbot
  • AI-SDR
  • Number Masking
  • Shopify Apps
  • View All Products

Solutions

  • For E-commerce
  • For Healthcare
  • For Real Estate
  • For Restaurants
  • For Appointments
  • View All Use Cases

Services

  • AI Chatbot Development
  • Voice AI Development
  • Shopify Development
  • SaaS Development
  • WhatsApp API Integration
  • View All Services

Resources

  • Documentation
  • Voice Agent Docs
  • API Reference
  • Number Masking API Docs
  • Blog
  • Changelog
  • Book a Demo

Company

  • About Us
  • Contact
  • Careers
  • Privacy Policy
  • Terms of Service
  • AI Voice Assistant
  • WhatsApp Voice AI
  • WhatsApp Bot Builder
  • AI Website Chatbot
  • AI-SDR
  • Number Masking
  • Shopify Apps
  • View All Products
  • For E-commerce
  • For Healthcare
  • For Real Estate
  • For Restaurants
  • For Appointments
  • View All Use Cases
  • AI Chatbot Development
  • Voice AI Development
  • Shopify Development
  • SaaS Development
  • WhatsApp API Integration
  • View All Services
  • Documentation
  • Voice Agent Docs
  • API Reference
  • Number Masking API Docs
  • Blog
  • Changelog
  • Book a Demo
  • About Us
  • Contact
  • Careers
  • Privacy Policy
  • Terms of Service

Popular Free Tools

Compress PDFMerge PDFPDF to WordGST CalculatorEMI CalculatorSIP CalculatorJSON FormatterBase64 EncoderImage CompressorQR Code GeneratorVoice AI ROI CalculatorAmazon FBA CalculatorAI Email WriterVideo to GIFPrivacy Policy GeneratorCRM ROI CalculatorMeeting Cost Calculator
Categories:PDF ToolsDeveloper ToolsFinance CalculatorsImage ToolsVideo ToolsAI Writing ToolsAudio ToolsWhatsApp ToolsDocument GeneratorsVoice AI ToolsE-commerce ToolsView All Tools

© 2026 Edesy Technology Labs Pvt Ltd

SSL Secured
99.9% Uptime