In-chart milestones vs symbol columns: when vs what state
They look like the same object — a little shape on a schedule — so planners reach for whichever is nearest. But a diamond on the timeline and a stoplight in a column answer two completely different questions. Put the wrong one in the wrong place and your one-pager either buries a key date or clutters the timeline with traffic-light confetti. Here's the rule, and how to run both on one clean row.
A board opens your programme summary and their eyes do two things at once. They scan left-to-right to read time — when does this land, when's the gate, when do we hand over. And they scan top-to-bottom down the row labels to read health — what's green, what's slipping, who's in trouble. Two axes, two questions. Your symbols need to respect that geometry.
The mistake is treating "milestone" as one thing. There are two, and they belong on different axes:
- An in-chart milestone — a diamond, star or flag sitting on the timeline at a date — answers WHEN. Its position is the information.
- A symbol in a column — a RAG dot, a %-complete pie, a status shape beside the row name — answers WHAT STATE. Its shape and colour are the information; its horizontal position means nothing.
Get that distinction straight and every placement decision downstream becomes obvious.
When each one wins
Use an in-chart milestone when the reader's question is temporal and comparative: is the gate before or after the freeze? does delivery land inside the window? which handover is first? Because the eye reads distance along the axis, a diamond lets someone judge sequence and slack without reading a single date label. That's its superpower — and it's wasted the moment you use it for anything that isn't fundamentally about position in time.
Use a column symbol when the question is categorical and per-row: what's the status? how far along? is this one healthy? A RAG stoplight, a %-complete pie or a status shape sits in a fixed column so the eye can run straight down and compare rows against each other. You're not asking "when" — you're asking "which of these needs attention," and a tidy vertical stack of dots answers that in half a second.
| The reader is really asking… | Use | Why |
|---|---|---|
| When does this land? Is it before the gate? | In-chart milestone (◆/★/▮) | Position on the time axis carries the answer |
| Which phases are slipping right now? | RAG dot in a status column | Fixed column lets the eye compare rows top-to-bottom |
| How far through is this activity? | %-complete pie in a column | Fill fraction reads as progress, independent of dates |
| Is this a gate, a payment, a handover? | Milestone shape on the timeline | Shape encodes type; position encodes the date |
| Approved / at-risk / on-hold? | Status shape or icon in a column | Categorical state belongs beside the name, not on time |
Size them independently — because they compete for different attention
A milestone and a column symbol are not sized by the same logic, and coupling them is a common beginner error. The two live in different visual budgets.
A timeline milestone has to read against bars and gridlines, so it wants to be the boldest thing at its date — a crisp filled diamond, sized to stand a touch proud of the bar height so it punctuates rather than blends. If it's too small it disappears into the Gantt; too large and it smears across neighbouring dates and you lose the very precision you put it there for. Aim for a shape roughly the bar's height, filled, high-contrast.
A column symbol is sized to the row, not the chart. It should sit comfortably inside the row band with air around it, consistent from row to row so the vertical scan feels even. RAG dots want to be small and uniform; a %-pie wants to be legible but calm; nothing in the column should shout louder than the milestones on the timeline, because the column's job is quiet reference, not headline. In Sketchedule both are independent style properties — milestone glyph size on the timeline, symbol size within the column — so you tune each to its own axis instead of one dial fighting the other.
The best summaries use both on one row
This isn't an either/or. The strongest board line does both at once, and it's beautiful precisely because each symbol stays in its lane: a %-complete pie and a RAG dot in the left-hand columns tell you the health of the phase, while a milestone diamond on the bar tells you the date that phase is racing toward. One glance down the columns reads status; one glance across the timeline reads schedule. Nothing overlaps, because they were never asking the same thing.
Here's how to build a row that carries both cleanly.
- Put state in columns, on the left. Add a %-complete pie SmartColumn and a RAG stoplight column beside the activity name. These answer "what state" and belong where the eye starts the row.
- Put the date on the timeline. Promote the key date — a gate, delivery, handover — to an in-chart milestone on the bar. Its position is the answer, so it stays out on the axis where distance is meaningful.
- Pick shapes that don't collide in meaning. Use milestone shape for type (◆ gate, ★ contract, ▮ handover) and column colour for health. Don't also colour milestones for status here, or the two languages blur — one job per glyph.
- Size to axis, not to each other. Milestone bold and bar-height on the timeline; status symbols small and uniform in the column (Fig 2). Two dials, tuned apart.
- Let the data drive it, and it stays honest. Bind the pie and the stoplight to your % complete and status fields so they recompute on every import; the milestone tracks the underlying date. Nobody hand-recolours anything at 9pm.
Two ways it goes wrong
Cluttering the timeline with status
The tempting mistake is to colour milestones red/amber/green for status and dot the chart with them. Now the timeline is doing two jobs — position and health — and it does neither well. A row of coloured diamonds pulls the eye across the axis chasing colour instead of reading dates, and because status doesn't live at a specific time, you've smeared a categorical fact across a temporal axis where it has no natural home. Keep status in the column. Let the timeline mean when.
Hiding a key date in a column
The opposite error: stashing an important date as a text value in a narrow column — "Delivery: 30 Mar" — instead of a diamond on the bar. Now the single fact a director most wants (is delivery before or after the freeze?) requires reading tiny text and doing the arithmetic themselves, when a milestone would have shown the answer as pure distance. If a date matters, it goes on the timeline where the eye can judge it against everything else.
The corrective for both is the same one line: time on the timeline, state in the columns. Whenever a symbol feels wrong, check which question it's answering and move it to the matching axis.
Key takeaways
- A timeline milestone answers WHEN — its position is the meaning; a column symbol answers WHAT STATE — its colour/shape is the meaning.
- Use a milestone for temporal, comparative questions; use a RAG dot or %-pie for categorical, per-row questions.
- Size them independently: milestones bold and bar-height on the axis; column symbols small and uniform in the row.
- The best board rows do both at once — pie + stoplight in columns, milestone diamond on the bar — because each stays in its lane.
- Two pitfalls: don't colour the timeline for status, and don't bury a key date in a column. Time on the timeline, state in the columns.
Try it on your own programme
Open Sketchedule in a browser — free, no install, nothing uploaded. Add a %-pie, a RAG column and a milestone, and watch both drive off your data.
Primavera and P6 are trademarks of Oracle Corporation; Microsoft Project is a trademark of Microsoft Corporation. Sketchedule is an independent product and is not affiliated with, endorsed by or sponsored by Oracle or Microsoft. Figures are illustrative, drawn in Sketchedule.