How to Build Notion Relation for Issue-Epic-Sprint Hierarchy
🔍 WiseChecker

How to Build Notion Relation for Issue-Epic-Sprint Hierarchy

You want to link issues, epics, and sprints in Notion so your team can track work from high-level goals down to individual tasks. Notion uses Relation properties to connect database items, but building a three-level hierarchy requires careful planning to avoid broken links and circular references. This article explains how to create separate databases for Issues, Epics, and Sprints, then connect them with Relation and Rollup properties. You will learn the exact steps to set up the hierarchy and common mistakes to avoid.

Key Takeaways: Building a Three-Level Issue-Epic-Sprint Hierarchy in Notion

  • Create three separate databases: Issues, Epics, and Sprints to keep each level clean and manageable.
  • Use two Relation properties per database: One linking up (e.g., Issue to Epic) and one linking down (e.g., Epic to Issues) for full bidirectional navigation.
  • Apply Rollup properties for status and dates: Roll up status from Issues to Epics and from Epics to Sprints to see progress at a glance.

ADVERTISEMENT

Understanding the Issue-Epic-Sprint Hierarchy in Notion

A typical agile hierarchy places Sprints at the top, Epics in the middle, and Issues at the bottom. Each Sprint contains multiple Epics, and each Epic contains multiple Issues. In Notion, you represent this by creating three databases and connecting them with Relation properties. A Relation is a property that links one database item to one or more items in another database. You need two Relation properties for each database: one that points to the parent (e.g., Epic in the Issues database) and one that points to the child (e.g., Issues in the Epic database). This allows you to see both the parent from the child and the child from the parent.

Prerequisites

Before you begin, ensure you have a Notion workspace with full access to create databases and properties. You do not need any third-party integrations. All features used here are available on Notion Free, Plus, Business, and Enterprise plans. You should be comfortable creating new databases and adding properties.

Steps to Create the Relation Hierarchy Between Issues, Epics, and Sprints

  1. Create the three databases
    In your Notion workspace, create three new databases. Name them Issues, Epics, and Sprints. Use the Table view for each because it shows Relation properties most clearly. You can switch to other views later.
  2. Add basic properties to each database
    To the Issues database, add a Select property named Status with options like To Do, In Progress, Done. To the Epics database, add a Select property named Status with the same options. To the Sprints database, add a Date property named Dates and a Select property named Status.
  3. Create the Relation from Issues to Epics
    Open the Issues database. Click the + button in the last column header. Select Relation. In the Connect to field, choose the Epics database. Name the property Epic. Click Create Relation. A new column appears in the Issues database, and a corresponding Relation column appears in the Epics database.
  4. Rename the auto-created Relation in Epics
    Go to the Epics database. You will see a new Relation column named Issues (the name of the other database). Rename it to Issues List by clicking the column header and typing the new name. This column will show all Issues linked to each Epic.
  5. Create the Relation from Epics to Sprints
    In the Epics database, click the + button and add another Relation property. Connect it to the Sprints database. Name this property Sprint. A new column appears in Epics, and a corresponding Relation column appears in Sprints.
  6. Rename the auto-created Relation in Sprints
    Go to the Sprints database. Rename the auto-created column from Epics to Epics List.
  7. Add a Rollup from Issues to Epics for status
    In the Issues database, add a Rollup property. Name it Sprint Status. In the Rollup configuration, set Relation to Epic (the Relation you created). Set Property to Status. Set Calculate to Show Original. This will display the Epic’s status in each Issue.
  8. Add a Rollup from Epics to Sprints for dates
    In the Epics database, add a Rollup property. Name it Sprint Dates. Set Relation to Sprint. Set Property to Dates. Set Calculate to Show Original. This will show the Sprint’s date range in each Epic.
  9. Add a Rollup from Sprints for Epic status summary
    In the Sprints database, add a Rollup property. Name it Epic Status Count. Set Relation to Epics List. Set Property to Status. Set Calculate to Count All. This gives you a count of all Epics linked to the Sprint. For a more detailed summary, add another Rollup with Calculate set to Count Values and filter by a specific status.
  10. Populate the hierarchy with sample data
    Create a Sprint item called Sprint 1. Inside the Epics database, create an Epic called User Login and link it to Sprint 1. Inside the Issues database, create an Issue called Build login form and link it to the User Login Epic. Repeat for all items you need. The Rollup properties will automatically update.

ADVERTISEMENT

Common Mistakes and How to Avoid Them

Relation property shows no items after linking

This happens when you create the Relation only from one side. Notion automatically creates the reverse Relation when you set up a Relation, but if you delete the auto-created column, the link breaks. Always rename the reverse column instead of deleting it. If you already deleted it, create a new Relation from the other database and connect it to the same database. Notion will merge the two Relations.

Rollup shows nothing or incorrect value

A Rollup depends on a Relation. If the Relation property is empty for an item, the Rollup will show nothing. Ensure every Issue has an Epic selected, and every Epic has a Sprint selected. Also verify that the Rollup’s Calculate setting matches your goal. For example, Show Original works for text and dates, while Count All works for numbers.

Circular references cause performance slowdown

If you create a Relation from Issues to Sprints in addition to Issues to Epics and Epics to Sprints, you create a circular path. Notion will still work, but loading times may increase. Stick to a linear chain: Issues -> Epics -> Sprints. Do not add direct Relations between Issues and Sprints.

Notion Relation Setup: Issues-Epics-Sprints vs Issues-Sprints Only

Item Three-Level Hierarchy (Issues-Epics-Sprints) Two-Level Hierarchy (Issues-Sprints)
Number of databases 3 2
Relation properties needed 2 per database (6 total) 1 per database (2 total)
Granularity of tracking Epics group Issues under a common goal No grouping; Issues are directly assigned to Sprints
Rollup complexity Requires chained Rollups (Issue->Epic->Sprint) Single Rollup from Issue to Sprint
Best for Teams that plan in themes or features across multiple Sprints Teams that assign all work directly to a Sprint

The three-level hierarchy adds an Epic layer that helps you group Issues by feature or theme. This is useful when a feature spans several Sprints. The two-level hierarchy is simpler but loses the ability to see feature-level progress.

Now you can build a working Issue-Epic-Sprint hierarchy in Notion using Relation and Rollup properties. Start by creating the three databases and linking them in the correct order. Use Rollups to surface status and dates without manual updates. For advanced tracking, add a Formula property that flags overdue Epics based on Sprint end dates.

ADVERTISEMENT