The widget is inbound only. It handles the visitor calling or messaging in. There is no browser microphone and no outbound calling from the widget.
The one rule to understand
The design is chosen by the snippet, not saved to the number. Every phone number that has an agent can power a widget in any of the ready designs. Which design shows is decided by the attributes in the script tag - nothing is “installed” onto the number. This means one number can appear in Design 1 on one site and Design 7 on another. The number only tells the engine which agent answers. The look is chosen in the tag.Add it to a website
Paste this one line before the closing</body> tag:
Attributes
data-number (required)
The business phone number that has the agent. This decides which agent answers.
data-icon
The assistant icon from the preset set:
sparkle, robot, wave, mic, headset, chatbot, brain, bolt, chat.data-chips
The quick-reply buttons, separated by a pipe. Example:
data-chips="Book appointment|Opening hours|Prices". Set data-chips="" to remove them.Offer the widget to your own customers
If you build a product on top of Nixflex and want your own customers to use the widget, you do not rebuild the designs - they already live inbutton.js. You choose how much control to give your customers.
Pick one design for everyone
You decide, for example, that all your customers use Design 7 in your brand colour. For each customer you generate the same snippet, only changing
data-number. No picker needed.Let each customer choose
You show your customers a small design picker inside your own app (a few of the ten designs, or all of them). When a customer picks one, your app writes that design number into their snippet. You are only choosing which number goes into
data-design - not rebuilding anything.Build a fully custom widget
If the ready designs are not enough and you want a completely custom look, you do not usebutton.js at all. You build your own widget front-end (your own HTML, CSS, launcher) and call the chat endpoint for the AI replies. The engine fully supports this - it does not care what the widget looks like.
The endpoint is public - no API key is needed for the widget, so it works from any visitor’s browser. Hold the conversation history in the visitor’s browser and send it each time; the engine is stateless for chat. For calling, use a normal
tel: link to the business number.Cost
Thebutton.js file is static, so loading it and showing the widget costs nothing and adds no load to the engine. Only real chats cost anything - when a visitor sends a message, that is one AI reply, billed like any other usage. Showing the widget, the greeting bubble, and tapping to open are all free. Calls from the widget are normal inbound calls, billed the same as any call.