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

# Custom integrations

> Connect Sleekplan to your own systems with webhooks, an admin Canvas panel, and API access when no built-in integration fits.

A custom integration lets you wire Sleekplan into your own tools when none of the [built-in integrations](/help/integrations) (Slack, Jira, GitHub, Linear, and the rest) covers what you need. Instead of a prebuilt connection, you point Sleekplan at your own endpoint: it sends you real-time events as they happen and can render a panel from your service inside the admin.

Use a custom integration when you want to mirror feedback into an internal database, trigger your own automation when an item changes, or surface data from another system next to a feedback post. If a built-in integration already does the job, use that instead. A custom integration is only worth the effort when you need behavior the standard connectors don't offer.

<Info>
  Building a custom integration is a developer task. Someone on your team needs to host an endpoint that receives Sleekplan's requests. The setup in the admin is quick, but the endpoint behind it is code you write and run. The full technical reference lives in the [Developer Docs](https://sleekplan.com/docs/quickstart).
</Info>

## What a custom integration can do

A custom integration combines up to three building blocks, and you can use any one of them on its own:

* **Webhooks.** Sleekplan sends an HTTP POST to your URL whenever an event you subscribe to happens, such as a feedback item being created or updated. Your endpoint receives the payload and does whatever you need with it. See [Webhooks](https://sleekplan.com/docs/webhooks) in the Developer Docs for the event list and payload format.
* **Canvas.** Sleekplan renders a panel supplied by your service directly inside the admin, next to a feedback post. Your endpoint returns the panel contents, so you can show related records, links, or actions from your own system. See [Canvas](https://sleekplan.com/docs/canvas/overview) in the Developer Docs.
* **A shared secret.** Sleekplan adds a secret token you choose to the header of every webhook and Canvas request, so your endpoint can verify each request genuinely came from Sleekplan.

You provide at least one of a Webhook URL or a Canvas URL. An integration with neither cannot be activated.

## Before you start

<Info>
  Setting up integrations requires an **Admin** or **Owner** role on the workspace.
</Info>

Have these ready before you open the dialog:

* **A live endpoint.** Your webhook receiver, your Canvas service, or both, reachable over HTTPS.
* **The list of events you want.** You subscribe to webhook events by name, for example `item.create` and `item.update`. The complete list is in [Webhooks](https://sleekplan.com/docs/webhooks).
* **The Sleekplan egress IP whitelisted.** Sleekplan's requests reach your endpoint from a fixed IP address. If your endpoint sits behind a firewall or IP allowlist, add the address shown in the setup dialog so the requests get through.

## Set up a custom integration

<Steps>
  <Step title="Open the Integrations settings">
    Go to [**Settings → Integrations**](https://app.sleekplan.com/settings/integrations). Under **All integrations**, find **Custom**.

    <img src="https://mintcdn.com/sleekplangmbh/7sCFHm2Bm3uXI56F/images/integrations-custom-list.png?fit=max&auto=format&n=7sCFHm2Bm3uXI56F&q=85&s=b4207c26547733aa455357ce9fa5bcc6" alt="The Integrations settings screen with the Custom integration in the list" width="1440" height="900" data-path="images/integrations-custom-list.png" />
  </Step>

  <Step title="Start the connection">
    Select **Connect** on the **Custom** row. The setup dialog opens.

    <img src="https://mintcdn.com/sleekplangmbh/7sCFHm2Bm3uXI56F/images/integrations-custom-dialog.png?fit=max&auto=format&n=7sCFHm2Bm3uXI56F&q=85&s=9d2a47cf250dc987bba8fb7c151b542e" alt="The Set up Custom dialog with fields for Canvas URL, Canvas section, Webhook URL, webhook events, and a secret token" width="1440" height="900" data-path="images/integrations-custom-dialog.png" />
  </Step>

  <Step title="Fill in your endpoint details">
    Complete the fields that apply to you. You need at least a **Webhook URL** or a **Canvas URL**:

    * **Canvas URL**: the address of the service that renders your admin panel, for example `https://your-app.com/sleekplan/canvas`.
    * **Canvas section**: where the panel appears. Use `admin_post` to show it next to a feedback post. This is the only supported section today.
    * **Webhook URL**: the address that receives event POSTs, for example `https://your-app.com/sleekplan/webhook`.
    * **Webhook events**: a comma-separated list of the events you want, for example `item.create, item.update`.
    * **Secret token**: a value you choose. Sleekplan sends it in the header of every request so your endpoint can confirm the request came from Sleekplan. Keep it private.
  </Step>

  <Step title="Whitelist the Sleekplan IP if needed">
    The dialog shows a **Whitelist IP** address. Copy it with the copy button and add it to your endpoint's firewall or allowlist if you restrict inbound traffic. Skip this if your endpoint is open.
  </Step>

  <Step title="Connect">
    Select **Connect**. Sleekplan validates your URLs, saves the configuration, and starts sending events to your webhook and requesting your Canvas panel. The integration now appears under **Connected**.
  </Step>
</Steps>

## Build the integration behind it

The admin dialog only points Sleekplan at your service. The integration itself, the code that receives webhook events and returns Canvas panels, is yours to build. The Developer Docs cover everything you need:

<CardGroup cols={2}>
  <Card title="Webhooks" icon="webhook" href="https://sleekplan.com/docs/webhooks">
    Every event Sleekplan can send, the payload shape, and how to verify the shared secret.
  </Card>

  <Card title="Canvas" icon="table-cells" href="https://sleekplan.com/docs/canvas/overview">
    Render your own panel inside the admin next to a feedback post.
  </Card>

  <Card title="REST API" icon="code" href="https://sleekplan.com/docs/api/overview">
    Read and write feedback, votes, comments, changelog, and users from your service.
  </Card>

  <Card title="JavaScript SDK" icon="js" href="https://sleekplan.com/docs/sdk/overview">
    Control the widget, identify users, and open specific screens from your app.
  </Card>
</CardGroup>

The [MCP server](https://sleekplan.com/docs/mcp-server) is another option when you want an AI assistant, rather than your own code, to act on your workspace.

## Manage or remove a custom integration

Once connected, the **Custom** integration moves to the **Connected** section on the [Integrations](https://app.sleekplan.com/settings/integrations) screen. Select **Manage** to review it, or to disconnect it and stop sending events.

## Related

<CardGroup cols={2}>
  <Card title="Integrations overview" icon="puzzle-piece" href="/help/integrations">
    Browse the built-in integrations before building your own.
  </Card>

  <Card title="Import feedback" icon="file-import" href="/help/integrations/import/from-other-tools">
    Bring existing feedback into Sleekplan from another tool.
  </Card>

  <Card title="Developer quickstart" icon="rocket" href="https://sleekplan.com/docs/quickstart">
    Start building against Sleekplan's APIs, webhooks, and SDK.
  </Card>

  <Card title="MCP server" icon="robot" href="https://sleekplan.com/docs/mcp-server">
    Give an AI client direct access to your workspace.
  </Card>
</CardGroup>
