> For the complete documentation index, see [llms.txt](https://shoppad.gitbook.io/yedric/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://shoppad.gitbook.io/yedric/going-further/integrations.md).

# Integrations

Integrations connect Yedric to the systems your team already uses. You can pull your own data in beside a conversation, or push events out to your app as they happen.

Open **Organization** in the left sidebar and click **Integrations** to get there.

{% hint style="info" %}
Integrations moved in this release. The old `/integrations` page, which listed MCP servers you could connect, has been removed and now redirects to your Assistants list. To connect an MCP server, use **Add a connection** on an assistant's [Actions](/yedric/going-further/actions.md) tab instead.
{% endhint %}

***

## The directory

The Integrations page shows a card for each kind of app you can set up, with a count of how many you have configured.

* **Custom App**: Your own panel beside every conversation.
* **Webhooks**: Real-time notifications from your assistants.

Click a card to manage that kind of app.

Reading and changing integrations both require the Owner or Admin role. This is enforced on the API rather than by hiding the page, so a Member who opens Integrations sees an error and a count of zero rather than a read-only view.

***

## Custom Apps

A custom app renders your own content in a panel alongside a conversation. When a teammate opens a conversation, Yedric sends the visitor's context to a URL you host and renders the HTML you return.

This is the "customer record beside the ticket" pattern. Use it to show a subscription status, recent orders, an account health score, or a link into your own admin, without your team leaving Yedric.

The panel appears next to AI conversations and, if you have [live chat](/yedric/going-further/live-chat.md), next to live chats too.

Click **New Custom App** to create one. The editor has these fields:

**Name** A label for your own reference, shown in the list and as the panel's heading.

**URL** The endpoint Yedric calls. As the field says, "We POST visitor context here and render the HTML you return." It must be reachable from the public internet.

**Secret** Used to sign requests with HMAC-SHA256 so your endpoint can verify the call came from Yedric. The value is masked after saving, so to change it you type a new one rather than revealing the old one.

**Enabled** Turn this off to park the app without losing its URL, secret, or assistants. The panel stops appearing for everyone right away, which makes it safe to set an app up before it goes live.

**Assistants** The assistants this panel shows up on.

{% hint style="danger" %}
The editor's help text says leaving **Secret** blank disables signing. It does not. Yedric always sends the signature header, and a blank secret only means it is computed with an empty key, which anyone can reproduce. Set a real secret before you point an app at anything private.
{% endhint %}

{% hint style="warning" %}
Custom apps and webhooks scope to assistants in opposite ways. A custom app with **no assistants selected appears nowhere**. A webhook with none selected fires for **all** assistants. Check the box for at least one assistant, or your custom app will never render.
{% endhint %}

Your developer will need the request and response contract to build the endpoint. See [Custom Apps](/yedric/developers/custom-apps.md) in the Developers section.

***

## Webhooks

A webhook posts an event to a URL you control the moment something happens in Yedric. Use them to open a ticket in your own system when a conversation is escalated, log conversation summaries into your warehouse, or trigger a follow-up email.

Click **New Webhook** to create one.

**Label** An optional name so you can tell your webhooks apart.

**Secret Key** Used to sign every request with HMAC-SHA256 so you can verify it came from Yedric. Leave it blank and one is generated for you.

**Callback URL** Where Yedric posts the event. It must be reachable from the public internet, and in production it must use `https`.

**Active** Whether the webhook is delivering. Turn it off to pause without deleting.

**Assistants** Which assistants fire this webhook. Leave every box unchecked and events from all of them fire it. Check some and only those assistants fire it.

**Events** The events you want delivered, grouped into Live chat and Conversations. You must pick at least one before you can save.

### Save your signing secret

When you create a webhook, Yedric shows the signing secret once, with a Copy button and the note "Save this signing secret now, it is not shown again."

There is no way to reveal it later. If you lose it, use **Rotate secret** from the row menu to generate a new one. Rotating takes effect immediately, so update your receiver first.

### Testing a webhook

**Send test event** from the row menu posts a sample event to your URL and opens the delivery log so you can see the result. Test events never count against the failure limit described below, so you can safely probe a URL you have not finished building.

### The delivery log

**View deliveries** shows every attempt Yedric has made, newest first. Each row shows the event, the time, how many attempts it took, and a status of Delivered, Failed, Sending, or Queued.

Filter by status, by event, or by date range. Expand a row to see the callback URL and one line per attempt with the response code, how long it took, and the first part of the response body. That is usually enough to tell a timeout from a rejected signature.

**Redeliver** queues a fresh copy of the same event. It goes out under a new delivery id, and reads the current callback URL, so fixing a typo in the URL and redelivering works as you would expect.

Deliveries are kept for 14 days. Failed deliveries are kept for 30. A delivery that is still queued counts from when it was created, not when it finishes.

### When a webhook turns itself off

If a webhook fails repeatedly, Yedric stops sending to it and the row reads "Auto-disabled after repeated failures." This happens after 20 consecutive deliveries have exhausted all their retries, so it takes sustained failure rather than a brief outage. A single successful delivery resets the count.

To recover, fix your endpoint, then edit the webhook and switch **Active** back on. That clears the failure count, so the next failure starts a fresh streak.

### Live chat events

The Live chat event group covers [live chat](/yedric/going-further/live-chat.md). Until an assistant has the **Built-in** provider turned on and a visitor has asked for a person, those events have nothing to report, so you can subscribe to them ahead of time and nothing will be delivered. The Conversations events fire regardless.

***

## For developers

The full technical reference lives in the Developers section:

* [Webhooks](/yedric/developers/webhooks.md): the event catalog, payload schema, signature verification, retry behavior, and URL requirements.
* [Custom Apps](/yedric/developers/custom-apps.md): the request and response contract for the panel endpoint.
