> ## Documentation Index
> Fetch the complete documentation index at: https://docs.equals.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Intercom

> You can use Import Scripts to import lead or user data from your Intercom account directly into an Equals workbook.

# Create an Intercom Access Token

Follow [the instructions here](https://developers.intercom.com/building-apps/docs/authentication-types#section-access-tokens) to create an Intercom access token.

# Add the key to a secret group

Copy the access token from the prior step. Then [create a new secret group](https://docs.equals.com/docs/secret-groups) and paste the key into a new secret named `intercom_api_key`.

# Example code

Once you've completed the prior steps, create a new workbook, add a new import script to a sheet and copy + paste the script below. Once pasted select your secret group in the toolbar (make sure the key in the secret group is called `intercom_api_key`). If you'd like to fetch users instead of leads, change `role` to `user`.

```
const equals = require("equals");
const axios = require("axios");
const luxon = require("luxon");

const apiKey = equals.getSecret("intercom_api_key");
const role = "lead";

const unixToDateTime = (unixTimestamp) =>
  luxon.DateTime.fromSeconds(unixTimestamp).toFormat('yyyy-LL-dd HH:mm:ss');

const getLeadsPage = async (starting_after = undefined) => {
  const response = await axios({
    method: "post",
    url: "https://api.intercom.io/contacts/search",
    data: {
      query: {
        field: "role",
        operator: "=",
        value: role
      },
      pagination: { per_page: 150, starting_after },
      sort: { field: "created_at", order: "descending" }, 
    },
    headers: {
      Authorization: `Bearer ${apiKey}`,
      Accept: "application/json"
    }
  });
  return response.data;
}

const getAllLeads = async () => {
  let leads = [];
  let response;
  let startingAfter;
  do {
    response = await getLeadsPage(startingAfter);
    leads = leads.concat(response.data);
    startingAfter = response.pages.next && response.pages.next.starting_after;
  } while(startingAfter);
  return leads;
}

const leads = await getAllLeads();

equals.addHeaders(["email", "created_at"])
leads.forEach((lead) => {
  lead["created_at"] = unixToDateTime(lead["created_at"]);
  equals.addRow(lead);
})
```

***

[Google Analytics](/docs/import-from-google-analytics)

[Typeform](/docs/typeform)
