---
url: /concepts/relations.md
description: >-
  What task relations are (blocks, relates to, duplicates, mentions), how #
  mentions create them, and how the Relations view draws them as a graph.
---

# Task relations and the relations graph

A **relation** is a typed link between two tasks, such as **Blocks**, and the **Relations**
[view](/concepts/views) draws all of them as a graph, so you can see how your work connects
across [lists and folders](/concepts/hierarchy).

> **The tree says where a task lives; relations say what it has to do with other tasks.**

Folders put each task in one place. Real work does not stay in one place: a bug holds up a
launch in another list, a research note feeds three projects. Relations record those connections,
and the graph shows them across the whole [workspace](/concepts/hule-model).

## Relations across lists: a product launch

```mermaid
flowchart LR
  subgraph Marketing
    LP["Launch the landing page"]
    CP["Write the copy"]
  end
  subgraph Design
    HD["Design the hero image"]
  end
  subgraph Bugs
    SB["Fix the sign-up bug"]
    DUP["Sign-up form fails on Safari"]
  end
  subgraph Research
    RN["Research: competitor pricing"]
    PR["Set the launch price"]
  end

  CP -- "blocks" --> LP
  HD -- "blocks" --> LP
  SB -- "relates to" --- LP
  DUP -- "duplicates" --> SB
  RN -- "mentions" --> PR
  PR -- "relates to" --- LP
```

These tasks live in four lists, yet the relations show them as one piece of work:

* what the launch waits for;
* which bug report is a duplicate;
* where the pricing decision came from.

## Relation types: two readings of one relation

Every relation type reads one way from each end. On "Write the copy" the relation reads
**Blocks** "Launch the landing page"; on the launch it reads **Is blocked by** "Write the copy".
Hule comes with these types:

| From this task | From the linked task |
|---|---|
| Blocks | Is blocked by |
| Relates to | Relates to |
| Duplicates | Is duplicated by |
| Mentions | Is mentioned in |

Hule sets **Mentions** for you from a [`#` mention](/guides/comment-and-mention); you cannot pick
it in [**Add relation**](/guides/link-related-tasks#link-two-tasks). The four built-in types
cannot be edited or deleted. Types you add can be edited, and deleted once no relation uses them.

::: info No separate dependencies
Hule has no separate dependency feature: a **Blocks** relation is how you record that one task
waits for another.
:::

A workspace can add its own types in its settings, under
[**Relation Templates**](/guides/link-related-tasks#relation-types) — for example **Implements** /
**Is implemented by** — each drawn in its own style on the graph.

::: warning Who can add relation types
Adding, editing and deleting types takes the **Relation templates** permissions. Of the
built-in [permission sets](/reference/permissions-and-access), **Admin** and **Super Admin**
have them; **Worker** and **List/Folder manager** do not.
:::

## Adding a relation: by hand or by mention

You add a relation by hand with **Add relation** in the task's **Relations** section: pick the
type, then the other task ([Link related tasks](/guides/link-related-tasks)).

::: warning You need access to both tasks
You can relate two tasks when you can see both of them and edit at least one. See
[Sharing along the hierarchy](/concepts/sharing).
:::

Or type `#` and a task's name in a [description](/guides/write-a-task-description) or a [comment](/guides/comment-and-mention), and Hule links the two tasks with
**Mentions** for you. When no description or comment mentions the task any more, the relation
goes with it. This way your notes build the graph as you write them.

## Relations record, they do not enforce

A relation is information, not a rule: a task with an **Is blocked by** relation can
still be completed. Hule shows the relation on both tasks and in the graph and leaves the decision to you.
[Automations](/concepts/automations) do not read relations either: no automation can wait for a
blocking task.

## Relation reach: one workspace

Relations connect tasks anywhere in one workspace, across lists and folders, but not between
workspaces.

## Relations view: the whole graph

**Relations** is one of the [eleven view types](/reference/views-compared). It draws every task in the view's sources as a
node, and every relation between two of those tasks as a line. When the view shows subtasks, the
graph also draws a **Sub-task** line from each parent to its subtasks. Tasks without relations
show too, so you can spot what is not connected yet. In **Graph settings** (the gear button
**Configure graph** in the view header) you choose which relation types the graph shows and how
it is drawn. The view's
[filter](/guides/filter-sort-and-group-a-view) applies, so a graph can cover one project or a
whole workspace.

A single task also has [**Show graph**](/guides/link-related-tasks#relations-graph-see-the-connections)
in its **Relations** section, for its own neighborhood.

## Turning relations off in a list

A list can turn relations off in **Configure List** → **Features** → **Relations**. The
**Relations** section leaves the task card, and existing relations keep their data. See
[Set up a list](/guides/set-up-a-list).

## Relation guides and recipes

* Link tasks: [Link related tasks](/guides/link-related-tasks).
* Build a knowledge map: [Build a second brain with relations](/recipes/second-brain-with-relations).
