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

# Facebook & Instagram

> Connect Facebook Messenger and Instagram direct messages to Callivox, with the Facebook login route or your own Meta app.

Facebook Messenger and Instagram direct messages both run on Meta's platform, so they connect in much the same way: log in with Facebook, pick the account, done. Instagram has two extra prerequisites that trip people up, and they are covered below.

Both are connected from **Settings → Channels → + Connect channel**.

## Facebook Messenger

Connecting a Facebook Page brings its Messenger conversations into the inbox. It takes about 10 minutes end to end, most of which is Facebook's login flow.

<Frame caption="The Facebook Messenger connect dialog: log in with Facebook, then pick the Page.">
  <img src="https://mintcdn.com/haconsultancy/8jQZZfLAZM_xjJe7/images/channels/facebook-connect.png?fit=max&auto=format&n=8jQZZfLAZM_xjJe7&q=85&s=0b315137c6b0fc9b7a2eb9bf3b8e8ae2" alt="The Connect channel dialog with Facebook Messenger selected, showing the Continue with Facebook button" width="2880" height="1800" data-path="images/channels/facebook-connect.png" />
</Frame>

### Before you start

* You must be an admin of the Facebook Page you want to connect.
* The Page must exist already — Callivox cannot create one.

### Connect with Facebook

<Steps>
  <Step title="Open the dialog">
    Click **+ Connect channel**, pick **Facebook Messenger**, and enter a **Display name**.
  </Step>

  <Step title="Click Continue with Facebook">
    "Log in with Facebook and pick your Page — no tokens or webhook setup needed." A Facebook popup opens. The dialog shows **Waiting for Facebook…** while you work through it.
  </Step>

  <Step title="Grant your Pages">
    Facebook asks which Pages Callivox may access. Select the Page you want to connect. If you grant nothing, Callivox tells you: "No Facebook Pages were granted. Pick at least one Page in the Facebook popup."
  </Step>

  <Step title="Choose the Page">
    Back in Callivox the dialog reads **Loading your Pages…**, then shows **Choose the Page to connect**. Select it and click **Connect**. **Back** returns you to the previous step if you picked the wrong one.
  </Step>

  <Step title="Confirm">
    You will see the toast "Facebook Messenger connected" and the channel appears in your list. Send a message to the Page from another account to check it lands in the inbox.
  </Step>
</Steps>

### Advanced: use your own Meta app

If your business already runs a Meta developer app, open **▸ Advanced: use my own Meta app credentials** and fill in three fields:

| Field            | Where it comes from                    |
| ---------------- | -------------------------------------- |
| **Page ID**      | Your Facebook Page's ID.               |
| **Access token** | A Page access token from your app.     |
| **App secret**   | App settings → Basic in your Meta app. |

After connecting, Callivox shows an **Almost done!** panel with a **Callback URL** and a **Verify Token**. Paste both into your Meta app under **Messenger → Webhooks**, subscribe to the `messages` and `messaging_postbacks` fields, and make sure the app has the `pages_messaging` and `pages_show_list` permissions.

<Warning>
  While your Meta app is in development mode, its tokens only work for people listed as admins, developers or testers of the app. Real customers' messages will not arrive until you switch the app to Live mode.
</Warning>

## Instagram

Instagram direct messages reach Callivox through the Facebook Page that your Instagram account is linked to. That is why the login flow is a Facebook one, and why the prerequisites matter more here than anywhere else. Budget about 15 minutes.

<Frame caption="The Instagram connect dialog, with the account picker showing each Instagram handle and the Page it comes through.">
  <img src="https://mintcdn.com/haconsultancy/8RjuZKhX-P1FqHZb/images/channels/instagram-connect.png?fit=max&auto=format&n=8RjuZKhX-P1FqHZb&q=85&s=2cd36022a4e18b83d0306aba2629f738" alt="The Instagram connect dialog listing an Instagram account with the Facebook Page it is linked to" width="2880" height="1800" data-path="images/channels/instagram-connect.png" />
</Frame>

### Before you start

<AccordionGroup>
  <Accordion title="1. Your Instagram account must be a professional account">
    Instagram messaging is only available to **professional** accounts — Business or Creator. A personal account cannot be connected. You can switch in the Instagram app under **Settings → Account type and tools**.
  </Accordion>

  <Accordion title="2. It must be linked to a Facebook Page">
    The Instagram account has to be linked to a Facebook Page that you administer. Without the link, the account will not appear in the picker no matter what you grant.
  </Accordion>

  <Accordion title="3. Allow access to messages must be turned on">
    This is the step that most often goes wrong. In the **Instagram app**, go to **Settings → Messages and story replies → Message controls** and turn on **Allow access to messages** (connected tools).

    <Warning>
      If this setting is off, Meta will not deliver your direct messages to Callivox at all. The channel will connect and look healthy, but no conversations will arrive.
    </Warning>
  </Accordion>
</AccordionGroup>

### Connect with Facebook

<Steps>
  <Step title="Open the dialog">
    Click **+ Connect channel**, pick **Instagram**, and enter a **Display name**.
  </Step>

  <Step title="Log in with Facebook">
    "Log in with Facebook. When Facebook asks what to allow, grant BOTH the Facebook Page and its linked Instagram account — not just Instagram — then pick it here. No tokens or IDs to paste."
  </Step>

  <Step title="Grant the Page and the Instagram account">
    In the Facebook popup, tick the Instagram account **and** the Facebook Page it is linked to. Granting only the Instagram account is the single most common failure — Callivox reaches Instagram messages through the Page, so it needs both.
  </Step>

  <Step title="Choose the account">
    Under **Choose the Instagram account to connect**, each row shows the handle and, underneath, the Page it comes through. Select the right one and click **Connect**.
  </Step>

  <Step title="Confirm">
    You will see the toast "Instagram connected". Send a DM to the account from another Instagram profile to confirm messages arrive.
  </Step>
</Steps>

### If no accounts are listed

If the picker comes back empty you will see:

> We couldn't find an Instagram account on the Pages you granted. In the Facebook popup, allow the Facebook Page too (not just Instagram) — and make sure that Page has your Instagram professional account linked. Then try again.

Work through it in this order:

1. Re-run the login and tick the Facebook Page as well as the Instagram account.
2. Check the Instagram account is a professional account.
3. Check the Instagram account is actually linked to that Page.

### Advanced: use your own Meta app

Open the advanced disclosure to enter credentials yourself:

| Field                      | Where it comes from                       |
| -------------------------- | ----------------------------------------- |
| **Page ID**                | The linked Facebook Page's ID.            |
| **IG Business Account ID** | Your Instagram professional account's ID. |
| **Access token**           | A Page access token from your app.        |
| **App secret**             | App settings → Basic in your Meta app.    |

Then take the **Callback URL** and **Verify Token** from the **Almost done!** panel into your Meta app under **Instagram → Webhooks**, subscribe to the `messages` and `messaging_postbacks` fields, and make sure the app has the `instagram_basic`, `instagram_manage_messages`, `pages_manage_metadata` and `pages_messaging` permissions.

## Next steps

<CardGroup cols={2}>
  <Card title="WhatsApp" icon="whatsapp" href="/channels/whatsapp">
    Connect a WhatsApp Business number.
  </Card>

  <Card title="Managing channels" icon="sliders" href="/channels/managing-channels">
    Reconnect a channel whose permissions have lapsed.
  </Card>
</CardGroup>
