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

# Exotel Integration

> Configure Exotel as your Ringg telephony provider for inbound and outbound calls

## Overview

Use this guide to connect an Exotel account to Ringg for BYOT voice calling. Exotel requires separate applet setup for outbound and inbound calls:

* **Outbound calls** use a **Ringg Outbound** Voicebot applet. This applet ID is added to the Ringg Exotel provider configuration.
* **Inbound calls** use a **Ringg Inbound** Voicebot applet. Each inbound number must be attached to this applet in Exotel before you import or assign the number in Ringg.

## Prerequisites

Before you start, make sure you have:

* An active Exotel account with API access
* Exotel account SID, API key, API token, and subdomain
* At least one Exotel phone number, also called an ExoPhone
* A Ringg workspace with admin access
* A Ringg assistant ready to receive calls

## Step 1: Prepare Exotel

### Create or verify your Exotel account

1. Sign in to the [Exotel Dashboard](https://my.exotel.com).
2. Complete KYC verification if it is required for your account.
3. Add enough credits for number rental and calling.

### Get API credentials

In the Exotel dashboard, go to **Settings** → **API Settings** and copy these values:

<CodeGroup>
  ```bash Credentials theme={null}
  ACCOUNT_SID=example1234
  API_KEY=a1b2*********ci9j0
  API_TOKEN=z9y************t3s2r1q0
  SUB_DOMAIN=api.exotel.com
  ```
</CodeGroup>

You will enter these values in Ringg when you add Exotel as a telephony provider.

## Outbound setup

Use this section when you want Ringg to place outbound calls or campaigns through Exotel.

### Step 2: Create the Ringg Outbound applet

Create a custom Exotel Voicebot applet for outbound calls.

<Steps>
  <Step title="Open App Bazaar">
    In the Exotel console, open **App Bazaar** and create a custom app.

    <img src="https://mintcdn.com/ringgai-0da73d20/NBLu_wbRuI7Dt5RA/images/exotel_dashboard.png?fit=max&auto=format&n=NBLu_wbRuI7Dt5RA&q=85&s=442fff8e7fe6ac8af3aa217f7545c4f5" alt="Exotel App Bazaar" width="1924" height="871" data-path="images/exotel_dashboard.png" />
  </Step>

  <Step title="Name the app">
    Name the applet `Ringg Outbound`.

    <img src="https://mintcdn.com/ringgai-0da73d20/NBLu_wbRuI7Dt5RA/images/exotel_new_app_name.png?fit=max&auto=format&n=NBLu_wbRuI7Dt5RA&q=85&s=b2fffdbd74126989e6c0c8db48e25979" alt="Name Exotel app" width="1925" height="873" data-path="images/exotel_new_app_name.png" />
  </Step>

  <Step title="Add Voicebot">
    Drag the **Voicebot** component into the applet flow.

    <img src="https://mintcdn.com/ringgai-0da73d20/NBLu_wbRuI7Dt5RA/images/exotel_applet.png?fit=max&auto=format&n=NBLu_wbRuI7Dt5RA&q=85&s=bf6fe249496f492dc48414fb80ad5f97" alt="Exotel applet builder" width="1919" height="874" data-path="images/exotel_applet.png" />
  </Step>

  <Step title="Set the outbound WebSocket URL">
    Configure the Voicebot component with the Ringg outbound WebSocket URL:

    ```text theme={null}
    wss://use1-api.ringg.ai/pc/v1/exotel/ws
    ```

    <img src="https://mintcdn.com/ringgai-0da73d20/NBLu_wbRuI7Dt5RA/images/exotel_voicebot.png?fit=max&auto=format&n=NBLu_wbRuI7Dt5RA&q=85&s=3e3ca2dbd95a89163b2cc2f98eb79538" alt="Exotel Voicebot URL" width="1925" height="874" data-path="images/exotel_voicebot.png" />
  </Step>

  <Step title="Save and copy the app ID">
    Save the applet and copy its app ID. You will enter this value as `APP_ID` in Ringg.
  </Step>
</Steps>

<Note>
  The outbound applet ID is different from the API key and API token. Keep it with the other Exotel credentials so you can complete the provider setup in Ringg.
</Note>

### Step 3: Connect Exotel to Ringg for outbound

<Steps>
  <Step title="Open Telephony Integration">
    In the Ringg dashboard, go to **Integrations** → **Telephony Integration**.
  </Step>

  <Step title="Select Exotel">
    Click **Add Telephony Provider** and select **Exotel**.

    <img src="https://mintcdn.com/ringgai-0da73d20/uOzfdAllDv6qy_dj/images/numbers_page.png?fit=max&auto=format&n=uOzfdAllDv6qy_dj&q=85&s=536faa4e29bac4c2476e09e80a2ef91a" alt="BYOT Provider Selection" width="3456" height="1858" data-path="images/numbers_page.png" />
  </Step>

  <Step title="Enter Exotel credentials">
    Fill in the Exotel provider form.

    <img src="https://mintcdn.com/ringgai-0da73d20/uOzfdAllDv6qy_dj/images/exotel_setup.png?fit=max&auto=format&n=uOzfdAllDv6qy_dj&q=85&s=0ec156488ee42d893f3afaeb61801e23" alt="Provider Credentials Form" width="3454" height="1812" data-path="images/exotel_setup.png" />

    | Field         | Value                                                   |
    | ------------- | ------------------------------------------------------- |
    | `ACCOUNT_SID` | Your Exotel account SID                                 |
    | `API_KEY`     | Your Exotel API key                                     |
    | `API_TOKEN`   | Your Exotel API token                                   |
    | `SUB_DOMAIN`  | Your Exotel API subdomain, for example `api.exotel.com` |
    | `APP_ID`      | The `Ringg Outbound` applet ID from Exotel              |
  </Step>

  <Step title="Test and save">
    Click **Test Connection**. After the connection succeeds, save the provider.
  </Step>
</Steps>

After the provider is saved, Exotel appears in your Ringg workspace and can be used for outbound calls.

### Step 4: Use Exotel numbers for outbound calls

After Exotel is connected, manage outbound caller numbers from the Ringg dashboard:

* Buy numbers from the provider, if supported for your workspace
* Import existing Exotel numbers
* Use Exotel numbers as caller IDs for outbound calling

See [Number Management](/telephony/number-management) for the full number workflow.

For API-driven individual outbound calls, provide exactly one caller-number option: `from_number_id` or `from_number`.

## Inbound setup

Use this section when you want inbound calls to an Exotel number to reach a Ringg assistant.

### Step 5: Prepare the number for inbound import

To import and use an inbound Exotel number in Ringg, complete these three steps in order:

<Steps>
  <Step title="Create the Ringg Inbound applet">
    In the Exotel console, create a custom Voicebot applet and name it `Ringg Inbound`.
  </Step>

  <Step title="Attach the inbound HTTP URL">
    Add the Ringg inbound HTTP URL to the Voicebot component.

    ```text theme={null}
    https://use1-api.ringg.ai/pc/v1/exotel/inbound
    ```
  </Step>

  <Step title="Attach the number and import it in Ringg">
    Attach the Exotel number to the `Ringg Inbound` applet in Exotel. Then import that number in the Ringg dashboard.
  </Step>
</Steps>

<Warning>
  Every time you attach an Exotel number to an assistant in Ringg, attach that same number to the `Ringg Inbound` applet in Exotel. If the number is not attached to the inbound applet, inbound calls may not reach Ringg.
</Warning>

### Step 6: Assign the imported number to an assistant

After the number is attached to the inbound applet and imported in Ringg, assign it to the assistant that should answer calls.

<Steps>
  <Step title="Open Number Management">
    In the Ringg dashboard, go to **Numbers** → **Manage Numbers**.
  </Step>

  <Step title="Select the Exotel number">
    Choose the imported Exotel number you want to configure.
  </Step>

  <Step title="Assign an assistant">
    Select the Ringg assistant that should answer inbound calls to this number.
  </Step>

  <Step title="Review call settings">
    Confirm recording, transcription, and webhook settings for the assistant or workspace.
  </Step>

  <Step title="Save the assignment">
    Save the number configuration.
  </Step>
</Steps>

<img src="https://mintcdn.com/ringgai-0da73d20/NBLu_wbRuI7Dt5RA/images/attach_inbound_number.png?fit=max&auto=format&n=NBLu_wbRuI7Dt5RA&q=85&s=eeb6571d8db45f63876763fd645b1c72" alt="Attach Inbound Number" width="1926" height="940" data-path="images/attach_inbound_number.png" />

## Test the integration

### Test outbound calls

1. Start a small test call or campaign from Ringg.
2. Use an Exotel number that is imported and available in Ringg.
3. Confirm the recipient receives the call.
4. Verify call status and call logs in Ringg.

### Test inbound calls

1. Confirm the number is attached to the `Ringg Inbound` applet in Exotel.
2. Confirm the number is imported in Ringg and assigned to the correct assistant.
3. Call the Exotel number from a real phone.
4. Confirm the assigned Ringg assistant answers the call.
5. Check Ringg call history for the call record, transcript, recording, and analysis.
6. Check Exotel logs if the call does not reach Ringg.

## Troubleshooting

<AccordionGroup>
  <Accordion title="Connection test fails">
    * Confirm `ACCOUNT_SID`, `API_KEY`, `API_TOKEN`, and `SUB_DOMAIN` were copied from Exotel without extra spaces.
    * Confirm the `APP_ID` belongs to the `Ringg Outbound` applet.
    * Confirm the Exotel account has API access and is not suspended.
    * Confirm the account has enough credits for calling.
    * Recreate the API token in Exotel if you suspect it was rotated or copied incorrectly.
  </Accordion>

  <Accordion title="Outbound calls fail">
    * Confirm the `Ringg Outbound` Voicebot applet is saved and uses `wss://use1-api.ringg.ai/pc/v1/exotel/ws`.
    * Confirm the `APP_ID` in Ringg matches the `Ringg Outbound` applet ID.
    * Confirm the caller number is active, voice-enabled, and available in Ringg.
    * Check Ringg call history and Exotel logs for the failed call.
  </Accordion>

  <Accordion title="Inbound calls do not reach Ringg">
    * Confirm the Exotel number is attached to the `Ringg Inbound` applet in Exotel.
    * Confirm the `Ringg Inbound` applet uses the inbound HTTP URL provided by Ringg.
    * Confirm the number is imported into Ringg and assigned to the correct assistant.
    * Confirm the Exotel number is active and voice-enabled.
  </Accordion>

  <Accordion title="Assistant does not answer">
    * Confirm the assistant is active and assigned to the Exotel number.
    * Check Ringg call history for failed call records or error states.
    * Review the assistant's configuration, knowledge base status, and webhook settings.
    * Test with another Exotel number if only one number is failing.
  </Accordion>

  <Accordion title="Poor audio quality or dropped calls">
    * Test from a stable phone network and retry with a second device.
    * Check Exotel service status and call logs for regional issues.
    * Confirm each Voicebot applet contains only the required call flow for Ringg.
    * Contact Ringg support with the Ringg call ID and Exotel call SID.
  </Accordion>
</AccordionGroup>

## Support

<CardGroup cols={2}>
  <Card title="Exotel Documentation" icon="book" href="https://developer.exotel.com/">
    Review Exotel API and Voicebot documentation
  </Card>

  <Card title="Exotel Support" icon="headset" href="https://support.exotel.com/">
    Contact Exotel for account, number, and provider-side issues
  </Card>

  <Card title="Ringg Community" icon="users" href="https://discord.com/invite/nWXREVz2vy">
    Join our Discord community for tips and support
  </Card>

  <Card title="Contact Support" icon="envelope" href="mailto:admin@ringg.ai">
    Reach out to Ringg for integration assistance
  </Card>
</CardGroup>
