— Capture Leads, Schedule Appointments & Receive Payments



Webhook Overview

Webhooks allow you to create applications that subscribe to events. When an event is triggered, a payload is delivered to the webhook's configured URL.

For example, you could create an application utilizing an webhook that posts to a Slack channel whenever a new lead is added to

Read More About Webhooks↗

What are Events?

When configuring a webhook, you can select which events will deliever a payload to your server. After creating a webhook, you may edit the webhook to change the event subscriptions. Every event corresponds to a set of actions that can happen with


Getting Started

Setup in

After you're signed in and have created an ArtiBot, find Webhooks under the Settings tab.

Select the Webhooks submenu and choose Add Webhook.

Setup your webhook and choose Save to subscribe to your checked events.

How to Run the Sample Application:

For some sample project files, check out our Webhook Github.

  • From the command line:
    • Change directory (cd) to artibot-samples/webhooks/csharp/WebhookSample/WebhookSample
    • dotnet run

  • From Visual Studio:
    • Open the solution file
    • Press f5 to run the application

How to Test:

Use Postman or a similar tool to compose a request as follows:

  • HTTP method: POST
  • URL: http://localhost:5000/api/webhooks
  • Body: "{}" (without the quotes)
  • Headers
    • Key: Content-Type, Value: application/json
    • Key: x-artibot-signature, Value: D3817110D46EBB2678A3752F4912C74B2A3E736E

Execute the request. The request should return a 200 OK.

Changing the x-artibot-signature, the URL (for example by adding query string parameters), or the body should return a 401 Unauthorized.

Example Request:


  "x-artibot-signature": [


  "lead": {
    "id": "703dbb36-5799-4157-80b3-ba861a59f335",
    "create_date": "2019-03-27T16:20:41.476425",
    "modify_date": "2019-03-27T16:21:06.6601282Z",
    "bot_id": "78b2ec4f-9751-4cba-902e-00000000000a",
    "bot_version_id": "c3c90e2f-8e00-4f54-8c5d-000000000000",
    "account_id": "9a2f8878-289a-4f99-8677-000000000000",
    "contact_id": "331d98a4-3819-464b-b10f-000000000000",
    "status": 0,
    "version": 5,
    "data": {
      "DOB": {
        "input": "next year",
        "type": "dateTime",
        "display_value": "2020",
        "value": "2020-01-01T07:00:00Z",
        "grain": "year",
        "time_zone_offset": -7
      "Pet Count": {
        "input": "1",
        "type": "number",
        "display_value": "1",
        "value": 1
      "Question 1": {
        "input": "Chad",
        "type": "text",
        "display_value": "Chad",
        "value": "Chad"
      "Question 2": {
        "input": "",
        "type": "email",
        "display_value": "",
        "value": ""
      "Appointment": {
        "input": "28/03/2019 9:00 AM - 28/03/2019 9:30 AM",
        "type": "appointmentScheduler",
        "display_value": "28/03/2019 9:00 AM - 9:30 AM",
        "value": {
          "start": "2019-03-28T16:00:00Z",
          "end": "2019-03-28T16:30:00Z"
        "time_zone_offset": -7
    "meta": {
      "chat_start_page": "",
      "ip_address": "",
      "location": {
        "country_abbreviation": "FR",
        "country": "France",
        "state": "Paris",
        "city": "Paris",
        "latitude": "48.8331",
        "longitude": "2.3264"
      "browser": {
        "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36",
        "name": "Chrome",
        "version": "72",
        "major": null,
        "is_mobile": false
  "resource": "lead",
  "action": "updated",
  "resource_id": "703dbb36-5799-4157-80b3-000000000000",
  "time_stamp": "2019-03-27T16:21:06.8798068Z",
  "version": 5

ArtiBot JavaScript API


Getting Started features a number of ways for advanced users to customize their ArtiBot's behavior with the following JavaScript API.

All interaction with the ArtiBot Javascript API is handled through an API object that is written to the window when your ArtiBot snippet has loaded. This object will persist on your page, unless it is manually deleted.


ArtiBot Events

When your ArtiBot has loaded and is ready for use:

window.artibotApi.on('bot:ready', function () { console.log('bot ready'); });

Expand (opening) or collapse (closing) of ArtiBot occurs:

window.artibotApi.on('bot:expanded', function () { console.log('bot expanded'); });
window.artibotApi.on('bot:collapsed', function () { console.log('bot collapsed'); });

When your ArtiBot has started a chat:

window.artibotApi.on('chat:started', function () { console.log('chat started'); });

When a visitor sends a message:

window.artibotApi.on('chat:message-sent', function () { console.log('message sent'); });

When ArtiBot sends a message:

window.artibotApi.on('chat:message-received', function () { console.log('message received'); });

When the chat with ArtiBot has ended:

window.artibotApi.on('chat:ended', function () { console.log('chat ended'); });

ArtiBot Triggers

Expand (open) or collapse (close):


Show or hide the entire widget:


ArtiBot Properties

Get ArtiBot properties:


Set ArtiBot properties:

window.artibotApi.set('bot.bubbleMessage', 'My new message');


ArtiBot HTML

Custom ArtiBot Button:

<button class="artibot-button-expand">Chat Now!</button>