Skip to content

Linking Between Boards

Connect boards with Markdown links or chart link: fields. Dataface rewrites both at render time so the same YAML works in both dft serve and Cloud.

Drill down from charts and tables

Charts and tables support a link: field that turns each data element into a clickable link — navigating to another board or updating a variable in-place. Board-root paths are resolved the same way as Markdown links.

charts:
  tickets_by_status:
    type: bar
    query: tickets
    x: status
    y: count
    link: "/zendesk/tickets/list?status={{ x }}"   # {{ x }} = clicked bar's status

For tables, link: can be set at the chart root (applied to every cell) or overridden per column in style.columns:

charts:
  tickets_table:
    type: table
    query: open_tickets
    link: "/zendesk/tickets/detail?id={{ ticket_id }}"   # default for all cells
    style:
      columns:
        status:
          link: "/zendesk/backlog/?status={{ status }}"  # overrides root for this column

See Chart Interactions for the full link: reference.

Root-relative paths

Paths start with / and are relative to the dashboard namespace root — not the file system. You never type a storage prefix like faces/.

text: |
  [Open tickets](/zendesk/tickets/list?status=open)
  [Ticket detail](/zendesk/tickets/detail?id={{ ticket_id }})

/zendesk/tickets/list resolves to the board stored at faces/zendesk/tickets/list.yml (same path in Cloud — both use faces/).

Relative paths

../ and ./ resolve against the current board's directory.

If you are on zendesk/tickets/list:

Link Resolves to
./detail zendesk/tickets/detail
../overview zendesk/overview
text: |
  [Detail view](./detail?id={{ ticket_id }})
  [Back to overview](../overview)

Query parameters and variables

Query strings on links map directly to dashboard variables. This is how you pass context between boards:

text: |
  [See ticket](/zendesk/tickets/detail?id={{ ticket_id }}&status={{ status }})

Suffix stripping

You can optionally include .md, .yml, or .yaml suffixes — Dataface strips them automatically:

text: |
  [Tickets](/zendesk/tickets/list.md)

resolves identically to /zendesk/tickets/list.

Links starting with http://, https://, mailto:, or # are never rewritten — they pass through unchanged.

Branch propagation (Cloud)

In Cloud, if the current request includes a branch query parameter, outbound board links automatically inherit it (unless the link already specifies its own branch).

List / detail convention

Teams can standardize recognizable path segments for common board roles:

  • …/list — filtered overview or table
  • …/detail — single-entity board (variables in query, e.g. ?id=)

This is a naming convention, not enforced by Dataface.