Communicate with the Intercom API from your Node JS backend. This package is built on top of the offical intercom-node package. It gives you TypeScript type definitions for all exported functions and will validate the incoming data so it complies with the rules of the Intercom API.
yarn add intercom-service-js
Basic usage involves adding the IntercomService
to your setup. IMPORTANT You need to fetch your own access token and feed it to IntercomService
(as seen below). Read more here Create an Access Token.
import { IntercomService } from 'intercom-service-js'
// Initialize the IntercomService
const intercom = new IntercomService({ token: process.env.INTERCOM_AUTH_TOKEN })
// ways down in your code ...
intercom.createOrUpdateUser({
user_id: `${data.user_id}`,
name: data.user_name,
email: data.user_email,
signed_up_at: data.user_created_date,
companies: [
{
company_id: `${data.company_id}`,
},
],
custom_attributes: {
timezone: data.user_timezone,
city: data.user_city,
},
})
.then(intercomUpdate => {
if (intercomUpdate && intercomUpdate.success) {
resolve({
success: true,
})
} else {
resolve({
success: false,
error: intercomUpdate.error,
})
}
})
.catch(error => {
resolve({
success: false,
error: error,
})
})
All functions will return a Promise
with the following structure (?
suffix indicates it's optional). Note: this syntax is a TypeScript interface.
{
success: boolean
data?: {
internal_id: string
intercom_id: string
result: {
// This contains the body of the response from the API
[propName: string]: any
}
}
error?: {
code: string
message: string
errors: string[]
data?: {
internal_id: string
}
originalError?: any
}
}
Please note we're using await
(of async/await) in the examples below. We're using TypeScript to allow that but there are lot's of other ways so pick your favourite.
Example
const tagResult = await intercom.tagCompany({
company_id: '1234',
tag: 'test tag',
})
Accepts
- company_id (
string
) - tag (
object
)
Mandatory
company_id
tag
Example
const tagResult = await intercom.tagCompany({
name: 'test tag',
companies: [
{
company_id: '1234'
}
],
users: [
{
user_id: '5678'
}
]
})
Accepts
- An
object
with the following fields (see type for more information)- name (
string
) - companies (
Array<object>
) - users (
Array<object>
)
- name (
Mandatory
name
companies
users
Example
const result = await intercom.createOrUpdateCompany({ company_id: '233' })
Accepts
- company_id (
string
) - remote_created_at (
string
) - name (
string
) - monthly_spend (
number
) - plan (
string
) - size (
number
) - website (
string
) - industry (
string
) - custom_attributes (
object
)
Mandatory
company_id
Example
const userDataData = {
user_id: user.id,
email: user.email,
name: user.name,
companies: [
{
company_id: company.id,
},
],
}
const result = await intercom.createOrUpdateUser(userDataData)
Accepts
- user_id (
string
) - email (
string
) - name (
string
) - phone (
string
) - website (
string
) - signed_up_at (
string
) - last_request_at (
string
) - last_seen_ip (
string
) - last_seen_user_agent (
string
) - update_last_request_at (
string
) - unsubscribed_from_emails (
boolean
) - new_session (
boolean
) - companies (
Array<object>
) - custom_attributes (
object
)
Mandatory
user_id
email
Example
const result = await intercom.deleteUser({
user_id: user.id,
})
Accepts
- userId (
string
)
Mandatory
userId