- Where
- Sidebar: Insights / Sections
- App route
/newsletter-structure- Answers
- Which blocks appear, and in what order
- Needs
- 8 to 10 analysed sends per brand
- Updates
- Live, on every filter change
What this screen is
The sidebar calls it Sections. Open it and the page is headed Newsletter structure per brand, under a subtitle reading "Section consistency, occupancy, order stability, and structural metrics per brand." You come here to see a brand's template skeleton without opening thirty emails one at a time.
Newsletrix reads each analysed email as a stack of named blocks, with names like hero, product_grid, category_cta, blog_teaser and footer. Sections gives you two views of that stack. Occupancy tells you how often each block shows up across the editions inside your filter, and the consistency heatmap tells you where each block sat inside each edition, as a position number on a coloured cell.
Those names are Newsletrix's own reading of the email's visual structure. They are not labels the sender wrote. Nothing fixes the vocabulary, so each block gets whatever label suits it, and two similar emails can end up with different names for the same block. Most of the odd numbers on this screen trace back to that.
Opens and clicks are not here. Newsletrix receives these emails as an ordinary subscriber, so it can describe what a sender chose to build and nothing at all about how their audience reacted. Despite the word "stability" in the subtitle, no stability score appears anywhere on the screen either.
Use it one brand at a time. Leaving the Brand filter on "All brands" pools every sender you track into a single denominator, which flattens every occupancy percentage and mixes unrelated templates into one heatmap.
Open it when
- You are reverse-engineering a competitor's newsletter template before designing your own.
- A brand's emails feel inconsistent and you want proof of which blocks are permanent fixtures and which were one-off experiments.
- You are deciding where to place a new block, such as a product grid, blog teaser or referral module, and want to see where competitors put theirs.
- You need to show a client or a team the ordered anatomy of one brand's newsletter over the last quarter.
- You suspect a template redesign: a block that used to sit at position 2 now sits at position 6, or has stopped appearing entirely.
Screen anatomy
The page is a single column. Header at the top, then the filter card, four tiles, the occupancy chart, and the heatmap at the bottom. Numbers on the mock match the walk-through underneath it.
Newsletter structure per brand
Section consistency, occupancy, order stability, and structural metrics per brand.
| Section | Sep 3, 2026 | Aug 27, 2026 | Aug 20, 2026 | Aug 13, 2026 | Aug 6, 2026 |
|---|---|---|---|---|---|
| hero | 1 | 1 | 1 | 2 | 1 |
| product_grid | 2 | 2 | 3 | 3 | 2 |
| blog_teaser | 4 | 5 | 4 | ||
| footer | 6 | 6 | 7 | 7 | 6 |
- Filter card Three fields side by side. Brand is a dropdown that starts on the placeholder "All brands"; Date from and Date to are date pickers, both empty by default. There is no Apply button, so every change reloads the whole page immediately.
- Total editions The denominator for everything else on the screen. If it reads 128, a block at 100% occupancy appeared in all 128 of those emails.
- Avg links / section Total links in the emails divided by the total number of blocks listed. Two unrelated totals, one over the other. No link is ever attributed to a specific block anywhere in Newsletrix.
- Section occupancy across editions (top 10) Horizontal bars, one per block name, sorted by how many editions contain it and cut to the ten most frequent. The axis runs 0 to 100 and never goes past it.
- Section consistency heatmap (section × edition) Blocks as rows, edition dates as columns, newest edition on the left. The number in a cell is the block's position inside that edition, counting from 1. Darker means earlier.
- Short rows shift left A row only holds cells for the editions where that block appeared, so
blog_teaserhere has three cells against five date columns and they do not line up with the dates above them. Read each row as a sequence of appearances rather than a calendar. - Page header and help button The title, the subtitle, and a round question-mark button on the right. It opens a fixed explainer called "Structure That Drives Results".
- Avg sections / edition and Unique sections The other two tiles. The first is the mean number of blocks per email; the second is how many distinct block names exist in the filtered set. Compare them to each other rather than in isolation.
- Loading state While the screen is loading, everything below the filter card is replaced by a single spinner. With no Apply button, typing a date by hand can set off several of these one after another.
- Empty state With nothing matching, the four tiles read 0, the occupancy card keeps its heading and its 0 to 100 axis but draws no bars, and the heatmap card disappears completely. There is no illustrated empty screen.
Every panel explained
Total editions
How many newsletter editions fall inside the current brand and date filter.
How it is calculated. One count per distinct analysed email inside the filters. An email only counts once its analysis has finished, so newsletters that have arrived but not yet been analysed are invisible here. Editions that produced no blocks at all still count.
How to read it. Treat it as the denominator for every percentage on the page. Below roughly 8 to 10 editions, occupancy becomes coarse: over 3 editions the only possible values are 33.3, 66.7 and 100.
When the analysis finds no blocks in a send, that send still appears in Total editions and still sits in the denominator. It drags every occupancy percentage down without ever showing up as a bar or a heatmap row.
Avg sections / edition
The mean number of blocks in an email inside the current filter.
How it is calculated. Every block from every edition is counted, then divided by Total editions and rounded to one decimal. Repeats count. A block name that appears twice inside one email adds two.
How to read it. A rough measure of template length. Four to six is a compact email; twelve or more is a long newsletter assembled from many independent modules.
Avg links / section
A link-density figure for the average block.
How it is calculated. All links found in the emails inside the filters, divided by every block listed in those same emails, rounded to one decimal. No link is left out of the top of that fraction.
How to read it. High values point to product-grid-heavy templates. Low values point to editorial blocks with a single call to action. Compare brands with the same date range rather than reading the absolute number.
Links are never attributed to individual blocks anywhere in Newsletrix, so nothing here measures one block on its own. Every link counts, unsubscribe and preference centre and social icons included. An email where no links were found contributes nothing to the top of the fraction while still adding its blocks to the bottom, so the figure can read low for reasons that have nothing to do with design.
Unique sections
How many distinct block names exist across the filtered set.
How it is calculated. A count of distinct names, exactly as they appear. It is case-sensitive, and near-identical names are never merged.
How to read it. Always read it against Avg sections / edition. Close together means one fixed template. Several times larger means either the brand improvises every send, or the same block is picking up a different label from one email to the next. The occupancy chart separates the two. Genuine variety leaves a long tail of distinct names; naming drift leaves near-duplicates such as hero and hero_banner.
hero, Hero and hero_banner are three entries in this tile. There is no in-app way to merge or rename them, so the number inflates whenever the labelling is inconsistent.
Section occupancy across editions (top 10)
For each of the ten most frequent blocks, the share of editions that contain it.
How it is calculated. For every distinct block name, count how many editions contain it at least once, divide by Total editions, multiply by 100 and round to one decimal. Blocks are sorted by raw appearance count, descending, and the chart draws only the first ten. The axis runs from 0 and stops at 100.
How to read it. Split the bars into three bands. Anything at or near 100% is the brand's fixed furniture, usually the header, the hero and the footer. Between roughly 20% and 60% sit the situational blocks, tied to campaigns, seasons or whatever content existed that week. Under 10% you are looking at an experiment, or at naming noise from a single send. A block sliding out of the top band across two consecutive quarters is the clearest early signal of a template change you will get here.
The chart is capped at the ten most frequent blocks. A rare but strategically interesting module, a referral widget or a survey block, will simply not appear if ten other blocks beat it on raw count. Narrow the date range or the brand to bring it into view.
Section consistency heatmap (section × edition)
A matrix with blocks as rows and editions as columns, newest edition first. Each cell carries the position of that block inside that edition.
How it is calculated. Column headers are the send dates of the editions in scope, formatted like "Mar 14, 2026", each with a hover title showing the date and the subject line. A cell's number is the block's place in that edition, counting from the top. Colour follows that position in four fixed steps. Positions 1 to 3 take the darkest indigo, 4 to 5 mid, 6 to 7 light, 8 and beyond the palest. Hovering shows "Position: N". The grid scrolls horizontally, gains its own vertical scroll once the rows outgrow the card, and keeps the Section column and header row pinned.
How to read it. Scan one row at a time, left to right. A run of identical dark cells carrying the same number is a block that never moves. Scattered numbers mean it floats, and gaps mean the brand skipped it that week. Columns are far less trustworthy than rows, for the reason below.
The header prints one column per edition, but each row only contains cells for the editions where that block actually appeared. Rows for blocks that skip editions are therefore shorter than the header row and their cells shift left instead of lining up under the matching date. Use the "Position: N" tooltip and read each row as an ordered sequence of appearances. If a block name repeats inside one edition, every repeat shows the position of the first occurrence.
Help modal: "Structure That Drives Results"
The round question-mark button opens a short explainer beginning "Newsletter Structure Analysis reveals how your content organization impacts reader engagement." and listing Layout Patterns, Section Organization, Visual Hierarchy, Content Density, Navigation Elements and Template Consistency.
How it is calculated. It is not. The text is fixed, identical for every account, and it never touches your data.
How to read it. As positioning, not as a metric list. Visual hierarchy, content density and template consistency are not computed anywhere on this screen.
Empty and loading states
There is no illustrated empty state. With zero matching editions you get four zeroes, an occupancy card that still shows its heading and axis but has nothing to plot, and no heatmap card.
How it is calculated. The heatmap card appears only when there is at least one block to draw, so it vanishes rather than showing an empty grid. The four tiles behave differently again. They are hidden outright when the screen fails to load, so a failure shows no tiles at all rather than zeros, and nothing on screen announces it. The grey line "No data available" belongs to that failure, not to a genuinely empty result. It stands in for the chart while nothing has loaded.
How to read it. Four zeroes with an empty chart almost always mean the filter is too tight, or that the sends in that window have not been analysed yet. No tiles at all, with "No data available" where the chart should be, means the screen never finished loading. Reload the page.
Metric definitions
| Metric | What it means | How it is produced | Scale |
|---|---|---|---|
| Total editions | Analysed newsletters inside the current filters | One count per distinct analysed email inside the filters; not-yet-analysed emails excluded, block-less analyses included | Whole number, 0 and up |
| Avg sections / edition | Mean number of blocks per email | Every block listed inside the filters divided by Total editions, rounded to 1 decimal; repeated names counted twice | Decimal, 1 place |
| Avg links / section | Link density per average block | All links found in the emails divided by every block listed, rounded to 1 decimal; every link counts, unsubscribe and social links included | Decimal, 1 place |
| Unique sections | Distinct block names in scope | Count of distinct names, case-sensitive; never merged or renamed | Whole number, 0 and up |
| Occupancy % | Share of editions containing a block | Editions containing the block divided by Total editions, times 100, rounded to 1 decimal | 0 to 100, axis capped at 100 |
| Position | Where a block sat inside one edition | Its place in that edition, counting from the top; a repeated name reports the first occurrence | Whole number, 1 and up |
| Cell colour | Visual shorthand for position | Four fixed bands. Positions 1 to 3 darkest indigo, 4 to 5 mid, 6 to 7 light, 8 and beyond palest | 4 bands |
| Section name | The block label itself | The name Newsletrix gave the block, kept in the order the blocks appear in the email | Text |
Filters and controls
| Control | What it does | Default |
|---|---|---|
| Brand | Restricts every tile, the chart and the heatmap to one sender. The list holds every brand you track, ordered by how many newsletters you have from each | Empty, shown as "All brands" |
| Date from | Excludes editions sent before this date | Empty (no lower bound) |
| Date to | Excludes editions sent after this date | Empty (no upper bound) |
| Auto-refresh | There is no Apply or Refresh button. Any change to any of the three fields reloads the whole screen immediately | Always on |
| Workspace selector | The global dropdown in the sidebar. It narrows the screen to the newsletters delivered to tracking addresses carrying that group label | Empty, meaning all workspaces |
| Help button | Opens the fixed "Structure That Drives Results" explainer as a dialog; dismiss it with its own close control | Closed |
Some controls are deliberately absent, so you can stop hunting for them. Sections has no export of any kind, no sort control, no search box or section-name search, no date presets such as "Last 30 days", and no way to select more than one brand at once. For a downloadable version of the same underlying data, use the Newsletter section flows drill down table on the Structures screen, which has an Export CSV button.
Every figure on this screen updates the moment you change a filter, so nothing here goes stale. The Brand dropdown is the exception. A sender whose first newsletter has just been analysed can take up to ten minutes to become selectable.
How to use it
- Pick one brand, then a window with enough sends Set Brand to a single sender and set Date from and Date to so that Total editions reads at least 8, ideally 10 or more. Below that, occupancy percentages jump in coarse steps and tell you very little.
- Read the four tiles as one template profile Avg sections / edition gives template length. Compare it with Unique sections: close together means one fixed template, several times larger means variety or inconsistent naming. Keep Avg links / section as a cross-brand density figure, not a block-level fact.
- Sort the occupancy bars into three bands Near 100% is fixed furniture, 20% to 60% is situational, under 10% is experiment or noise. Write down the fixed set. That list is the brand's actual template, whatever their design system claims.
- Move to the heatmap and read rows, not columns For each block in your fixed set, check whether its position number is stable. A block that is always 1 or always 2 is anchored. A block whose number wanders between 3 and 8 is placed by whoever built that send.
- Re-run the same brand on the previous quarter Change only the two date fields. A block that moved bands, or a position number that shifted by three or more, is a template redesign you can date to within a few sends.
- Take the fixed set into your own template review Compare the blocks a competitor ships in every email with the ones you ship occasionally. Those gaps are the cheapest structural changes available to you.
Run two brands through the same date range back to back and screenshot each occupancy chart. Two charts side by side make a template comparison a client can read in five seconds, which is something neither chart does on its own.
Limits and caveats
- Block names and their order come from Newsletrix reading the email's visual structure, not from labels the sender wrote. Two similar emails can end up with different names for the same block.
- Avg links / section is a ratio of two separate totals. No link is attributed to a specific block anywhere in the product, and the link count includes unsubscribe, preference-centre and social links.
- The occupancy chart shows only the ten most frequent blocks. Everything else is invisible on this screen.
- Heatmap rows hold one cell per appearance, not one per edition, so rows with gaps shift left and stop aligning with the date headers above them.
- A block name repeated inside one email reports the position of its first occurrence for every repeat.
- Emails that have not been analysed are excluded entirely. Emails where no links were found still count their blocks, which pulls Avg links / section down.
- Nothing on this screen is a performance measurement. Newsletrix subscribes to these newsletters like any other reader and cannot see another sender's opens or clicks.
FAQ
Where do the section names come from, and can I edit them?
They come from Newsletrix's own AI reading of each email. Every send is named block by block, top to bottom, with labels like hero, product_grid, category_cta, blog_teaser and footer, and every tile, bar and heatmap cell on this screen comes from those names in that order. There is no in-app renaming, merging or editing of section names.
Why does Unique sections look so high?
Because nothing fixes the vocabulary and the tile is a plain case-sensitive count of distinct names that are never merged. Hero, hero and hero_banner count as three. A high number can mean genuinely varied templates, or simply inconsistent labelling across sends.
The heatmap cells do not line up under the dates. Is that a bug?
No. It is a known limitation of the grid. The header row prints one column per edition, but each section row only holds cells for the editions where that block actually appeared, so shorter rows shift left. Read every row as an ordered left to right sequence of appearances and rely on the Position tooltip on the cell, not on the date above it.
What does the number inside a heatmap cell mean?
It is the block's position inside that edition, counting from 1 at the top of the email. A 1 means it was the first block in the email. Colour encodes the same thing in four steps. Positions 1 to 3 are the darkest indigo, 4 to 5 mid, 6 to 7 light, and 8 and beyond the palest.
Why does a section show less than 100 percent occupancy when I know it is always in the email?
Occupancy is the count of editions containing the block divided by every analysed edition inside your filters. That denominator includes sends that produced no blocks at all, and, if Brand is left on All brands, every other sender too. Narrow to one brand and a tighter date range before trusting the percentage.
Can I export this screen?
Not from here. There is no export control on Sections. For a downloadable version of the same underlying data, open the Structures screen and use the Newsletter section flows drill down table, which has an Export CSV button.