Skip to content

Linking Between Boards

Use standard Markdown links to connect boards. Dataface rewrites them at render time so the same YAML works in both dft serve and Cloud.

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 (or dashboards/… in Cloud).

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.