Expertise Knowledge Base

Zapier Integration

Zapier Overview

Last updated on September 7, 2025

Base URL

The base URL we are using for the current version of our Zapier endpoints is https://api.expertise.ai/v0/users this will be referred to as {{BASE_URL}}.
 

Authentication

This is the endpoint that Zapier calls when a user is attempting to log into Chatsimple.
It lives at {{BASE_URL}}/zapier.
Request:
const options = { url: '{{BASE_URL}/zapier', method: 'GET', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', 'X-HTML-SNIPPET': html_snippet, 'X-API-KEY': api_key, }, }; return z.request(options) .then((response) => { response.throwForStatus(); const results = response.json; return results; })
 
html_snippet contains the user_id and chatbot_id.
api_key is the api_key given by Chartsimple.
 

Response:

A successful call will authorize the user:
return {'status': 'success', 'user_id': user_id, 'chatbot_id': chatbot_id}, 200
user_id and chatbot_id are returned to make a connection label in Zapier.
 

Subscribe

This is the endpoint Zapier calls to subscribe to a webhook.
It lives at {{BASE_URL}}/zapier/subscribe.
Request:
const options = { url: ' {{BASE_URL}}/zapier/subscribe', method: 'POST', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', 'X-API-KEY': api_key, 'X-USER-ID': user_id, 'X-CHATBOT-ID': chatbot_id, 'X-HOOKURL': bundle.targetUrl } }; return z.request(options) .then((response) => { response.throwForStatus(); const results = response.json; return results; });
 
html_snippet can be parsed for the user_id and chatbot_id.
api_key is the api_key given by Chartsimple.
bundle.targetUrl is the hook URL given by Zapier.
Response:
A successful call will subscribe the user:
const leads_list = leads.map(lead => ({ created_on: lead.created_on, name: lead.name, email: lead.email, phone_number: lead.phone_number, questions: lead.questions })); return leads_list, 200
 
 
leads is the object that holds all the leads of a user.
 

Unsubscribe

This is the endpoint Zapier calls to unsubscribe to a webhook.
It lives at {{BASE_URL}}/zapier/unsubscribe.
 

Request:

const options = { url: '{{BASE_URL}}/zapier/unsubscribe', method: 'DELETE', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', 'X-API-KEY': api_key, 'X-USER-ID': user_id, 'X-CHATBOT-ID': chatbot_id, } }; return z.request(options) .then((response) => { response.throwForStatus(); const results = response.json; return results; });
html_snippet can be parsed for the user_id and chatbot_id.
api_key is the api_key given by Chatsimple.
 

Response:

A successful call will unsubscribe the user:
const integration = { user_id = user_id, chatbot_id = chatbot_id, integration_id = integration_id, integration_type = 'ZAPIER', api_key = api_key, target_url = bundle.targetUrl, } return integration, 200
 

Get Leads

This is the endpoint Zapier calls to when the webhook is triggered.
It lives at {{BASE_URL}}/zapier/get_leads.

Request:

const options = { url: '{{BASE_URL}}/zapier/get_leads', method: 'GET', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', 'X-API-KEY': api_key, 'X-USER-ID': user_id, 'X-CHATBOT-ID': chatbot_id, } }; return z.request(options) .then((response) => { response.throwForStatus(); const results = response.json; return results; });
html_snippet can be parsed for the user_id and chatbot_id.
api_key is the api_key given by Chartsimple.
 

Response:

A successful call will return the most recent lead:
const lead = { 'created_on': leads.created_on, 'name': leads.name, 'email': leads.email, 'phone_number': leads.phone_number, 'questions': leads.questions, } return lead, 200
leads is the object the most recent lead of a user.