Skip to main content
Three kinds of files make the blog match your website, which are your own header, your own footer and slots that fill fixed places on every page.
When you create a site from a repository without blog.json, Notra offers Open starter PR (optional), which reads your Brand Identity and website and opens a pull request with blog.json, header.mdx, footer.mdx and a first post that already use your logo, colors and links.
Add header.mdx or footer.mdx next to blog.json, and each replaces the theme’s own. Write plain markup with Tailwind classes. You can paste HTML from your landing page if you change class to className, close empty tags like <img /> and remove <!-- --> comments, because these files are MDX.
header.mdx
Two built-in components cover what the theme’s header did: Interactive parts like a mobile menu go in a component in snippets/ that you import as usual. See Your own components. Wrap your content in site-container to give it the same width as the posts below (it follows layout.width). Theme colors are available as these Tailwind classes: bg-background, text-foreground, bg-muted, text-muted-foreground, border-border, bg-card, bg-primary and text-primary. The header and footer get no data, so write your site name and links into them directly. With your own header, the navbar IDs like #topbar-cta-button don’t exist, so use your own class names. When Notra branding is on, Notra adds a small “Powered by Notra” line under your footer.

Slots

Slots add your own content at fixed places, and each one is a file in slots/:
slots/after-post.mdx
A call to action under every post, a newsletter form or a product card in the sidebar each fit in a slot, while a file in slots/ with any other name stops the build with Unknown slot and the list of valid names.

Your own CSS

For anything the settings and files don’t cover, add style.css, which loads after the theme so it can override any style. See Design and CSS.

What isn’t allowed

Header, footer and slots follow the same rules as posts, so imports only come from your repository and Notra doesn’t allow <script> tags. Put JavaScript in script.js instead. See Analytics and scripts.
Last modified on October 8, 2026