# Support

> The shared inbox, tasks named as tickets, SLAs and a knowledge base, installed as one block.

Source: https://bettersupabase.com/docs/blocks/support

Covers a help desk. It sets the task names to ticket and issue until the app sets its own.

```bash
better-supabase add support
```

```ts title="better-supabase.config.ts"
export default defineConfig({ blocks: { support: {} } });
```

`add` lists `support` in `blocks`, writes the modules of every part and wires the client in `lib/blocks.ts`. Import the manifest from `better-supabase/blocks/support` when you build the set with [`createBlocks`](/docs/blocks/create-blocks).

```ts
import { supportBlock } from "better-supabase/blocks/support";
```

## Parts [#parts]

Installing `support` installs these blocks. Each stays an ordinary block in the config and keeps its own client.

- [`inbox`](/docs/blocks/inbox)
- [`tasks`](/docs/blocks/tasks)
- [`sla`](/docs/blocks/sla)
- [`knowledge`](/docs/blocks/knowledge)

## Defaults [#defaults]

Tasks are named `ticket` and `issue`. Set `blocks.tasks.names` in the config to change them; your keys win over the default.

The app's own `blocks.<part>` settings win key by key ([Composite blocks](/docs/extending/composite-blocks)).

## Helpers [#helpers]

`openTicket`: Create a ticket as a task and start its SLA clocks. If the SLA step fails the ticket stays open; call `blocks.sla.start` again for it.

```ts
await blocks.support.openTicket({
  organizationId,
  ticket: { title: "Cannot sign in" },
  priority: "high",
});
```

`escalate`: Hand a ticket to new assignees and restart its SLA clocks at a higher priority. It calls `tasks.assign`, which replaces the assignees and notifies the new ones, then `sla.start` with the new priority. If the SLA step fails the new assignees stay; call `blocks.sla.start` again for the ticket.

```ts
await blocks.support.escalate({
  ticketId,
  assigneeIds: [leadId],
  priority: "urgent",
});
```

The Next.js example calls it from the `escalateTicket` server action in `composite-actions.ts`.

The helper returns a `Result`; each step is idempotent, so retrying after a partial failure is safe.

## Remove [#remove]

```bash
better-supabase remove support
better-supabase remove support --with-parts
```

The first command replaces `support` in `blocks` with its parts. The second removes the parts too, except any part another block still needs ([`remove`](/docs/cli/init#remove)).