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

# CallRail

## What's supported

### Supported actions

This connector supports:

* [Read Actions](/read-actions), including full historic backfill. Please note that incremental read is not supported, a full read of the CallRail instance will be done for each scheduled read.
* [Write Actions](/write-actions).
* [Proxy Actions](/proxy-actions), using the base URL `https://api.callrail.com`.
* Subscribe Actions are not currently supported.

### Supported objects

export const rows = [{
  label: "caller_ids",
  read: "no",
  write: true,
  href: "https://apidocs.callrail.com/#outbound-caller-ids"
}, {
  label: "calls",
  read: true,
  write: true,
  href: "https://apidocs.callrail.com/#calls"
}, {
  label: "companies",
  read: true,
  write: true,
  href: "https://apidocs.callrail.com/#companies"
}, {
  label: "form_submissions",
  read: true,
  write: true,
  href: "https://apidocs.callrail.com/#form-submissions"
}, {
  label: "integration_triggers",
  read: "no",
  write: true,
  href: "https://apidocs.callrail.com/#integration-filters"
}, {
  label: "integrations",
  read: "no",
  write: true,
  href: "https://apidocs.callrail.com/#integrations"
}, {
  label: "leads",
  read: true,
  write: "no",
  href: "https://apidocs.callrail.com/#leads"
}, {
  label: "message-flows",
  read: true,
  write: true,
  href: "https://apidocs.callrail.com/#message-flows"
}, {
  label: "notifications",
  read: true,
  write: true,
  href: "https://apidocs.callrail.com/#notifications"
}, {
  label: "sms-threads",
  read: true,
  write: true,
  href: "https://apidocs.callrail.com/#sms-threads"
}, {
  label: "summary_emails",
  read: true,
  write: true,
  href: "https://apidocs.callrail.com/#summary-emails"
}, {
  label: "tags",
  read: true,
  write: true,
  href: "https://apidocs.callrail.com/#tags"
}, {
  label: "text-messages",
  read: true,
  write: true,
  href: "https://apidocs.callrail.com/#text-messages"
}, {
  label: "trackers",
  read: true,
  write: true,
  href: "https://apidocs.callrail.com/#trackers"
}, {
  label: "users",
  read: true,
  write: true,
  href: "https://apidocs.callrail.com/#users"
}];

export const Check = () => <span>✅</span>;
export const Cross = () => <span>🚫</span>;

export function renderCellValue(value) {
  if (value === true) {
    return <Check />;
  }
  return <Cross />;
}

<div style={{ width: '100%', overflowX: 'auto', display: 'block' }}>
  <table
    style={{
width: '100%',
minWidth: '100%',
tableLayout: 'fixed',
textAlign: 'center',
borderCollapse: 'collapse',
display: 'table',
}}
  >
    <thead style={{ display: 'table-header-group', width: '100%' }}>
      <tr style={{ display: 'table-row', width: '100%' }}>
        <th style={{ textAlign: 'left', width: '60%' }}>Object</th>
        <th style={{ width: '20%' }}>Read</th>
        <th style={{ width: '20%' }}>Write</th>
      </tr>
    </thead>

    <tbody style={{ display: 'table-row-group', width: '100%' }}>
      {[...rows]
                  .sort((a, b) => a.label.localeCompare(b.label))
                  .map((row) => (
                    <tr key={row.label}>
                      <td style={{ textAlign: 'left' }}>
                        <a href={row.href}>{row.label}</a>
                      </td>
                      <td>{renderCellValue(row.read)}</td>
                      <td>{renderCellValue(row.write)}</td>
                    </tr>
                  ))}
    </tbody>
  </table>
</div>

### Example integration

For an example manifest file of a CallRail integration, visit our [samples repo on GitHub](https://github.com/amp-labs/samples/blob/main/callrail/amp.yaml).

## Before you get started

To connect CallRail with Ampersand, you will need a [CallRail account](https://www.callrail.com/).

### Creating an API key for CallRail

1. Log in to your [CallRail account](https://app.callrail.com/).
2. Go to **Account Settings**, then select **API Keys** under **Data Access**.
3. Select **Create New API v3 Key** and give the key a name.
4. Copy the key and store it somewhere secure — CallRail displays it only once. See [CallRail's API](https://support.callrail.com/hc/en-us/articles/5711821845389-CallRail-s-API) for more detail.

Your customers enter this API key when they install the integration. Ampersand sends it as `Authorization: Token token=<API key>`, as described in [CallRail's Getting Started guide](https://apidocs.callrail.com/#getting-started).

You do not need to collect an account ID from your customer. After the connection is created, Ampersand calls `GET /v3/a.json` and stores the account's numeric ID, then uses it in every request path.

## Using the connector

This connector uses API Key auth, which means that you do not need to set up a Provider App before getting started. (Provider apps are only required for providers that use OAuth2 Authorization Code grant type.)

To start integrating with CallRail:

* Create a manifest file like the [example above](#example-integration).
* Deploy it using the [amp CLI](/cli/overview).
* If you are using Read Actions, create a [destination](/destinations).
* Embed the [InstallIntegration](/embeddable-ui-components#install-integration) UI component. The UI component will prompt the customer for their API key.
* Start using the connector!
  * If your integration has [Read Actions](/read-actions), you'll start getting webhook messages.
  * If your integration has [Write Actions](/write-actions), you can start making API calls to our Write API.
  * If your integration has [Proxy Actions](/proxy-actions), you can start making Proxy API calls. Note that CallRail paths include the account ID, for example `GET /v3/a/{account_id}/calls.json`.
