Upshot: Motion-led marketing measurement SaaS landing page template for Next.js.
- Next.js 16
- Tailwind CSS v4
- TypeScript
- 12 sections
- Light
- No API keys
- Palette
- Updated Oct 14, 2026

01Overview
At a glance
A complete, motion-first site for a product that sells on proof. Upshot positions a measurement platform around one uncomfortable truth, that ad platforms take credit for sales they didn't cause, and every section shows it with dots: claimed in white, caused in yellow. Every figure and label that changes morphs instead of swapping.
Made for
- Analytics, attribution and marketing measurement products
- Data and finance SaaS that books demos and prices by usage
- Any B2B product whose pitch is a number it can prove
- Live scoreboard: forty dots per channel go from what the platform claims to what the holdout measured, with rolling figures
- Scroll-built chart of claims stacking past your actual revenue, and a product tour whose screens arrive through a halftone
- Stacking customer stories, a sixty-dot setup dial and a closing field of dots that light under the pointer
- Story, blog and legal pages included; every button goes to your booking link; loops hold under the pointer and respect reduced motion
02The look
Its own palette and type
The colours and type it ships with. Tap a colour to copy it.
- AaHost GroteskIncluded with the template
The quick brown fox jumps over the lazy dog
0123456789
- AaDotoIncluded with the template
The quick brown fox jumps over the lazy dog
0123456789
Host Grotesk for words, set tight and large, and Doto, a dot-matrix face whose weight is the size of its dots, for every figure, so numbers power on as they arrive. A white page with mist and ink panels inset from the edge, faint column lines, and a single LED yellow. Product screens are light WebP images; photographs of fictional brands carry the customer stories.
03Sections
12 sections, in page order
From the first screen to the footer.
- 01
Hero
A headline with a dot pill inside it that lights its dots and leaves two of them yellow, highlighted phrases, a photograph with a live-test tag, and a scoreboard that turns forty claimed sales into the ones the ads caused, channel by channel, with tabs and rolling figures. A brand strip runs under the panel.
- 02
Navigation
A sticky bar whose mist tray has a white thumb that glides to the link under the pointer and rests on the section you're reading; on phones the bar grows into the menu.
- 03
The problem
A chart built by scrolling: each platform's claim stacks past the line for your actual revenue, the excess is crosshatched as never having happened, then the measured bar fills in yellow far short of it.
- 04
Product
Four modules with a filling line that hands over to the next, and product screens that arrive through a halftone of growing dots. A yellow band of data sources sits under the dark panel.
- 05
Customers
Story cards that stick and stack, each a full photograph with a receipt of what the platform said, struck through, and what was measured, plus a page for every story.
- 06
Proof
Three tiles: a headline figure over a strip of a hundred dots, a test count over a year of weekly test dots, and a customer quote with time to first answer.
- 07
How it works
A team photograph beside a dial ringed by sixty dots that fill twenty at a time as each step takes the centre, with step tabs.
- 08
Comparison
Dashboards against Upshot, row by row: each dashboard answer is struck through as the Upshot answer lights, closing on a finance lead's quote.
- 09
Quotes
One large quote at a time; faces open into name pills with a ring that fills while each quote is up.
- 10
Pricing
Three plans priced by monthly ad spend with a monthly/yearly toggle whose prices roll; plan buttons go to your booking link.
- 11
FAQ and field notes
An accordion beside a sticky intro, then three notes from the blog with dot-art covers, each with its own article page.
- 12
Closing and footer
A dark panel of dots that light up yellow under the pointer, then a footer whose dot-type wordmark powers on as it scrolls in.
04Built with
Motion from our free library
Free components from our library, included so you can use them anywhere on your page.
- FAQ accordionIn FaqQuestions on hairlines that open like they mean it: the answer eases to its height, the plus folds into a minus.Yes, for any number of client projects.No. It runs as it is.
- Number rollIn Customers, How, Problem, Proof, ScoreboardNumbers that change like an odometer: every digit rolls in the direction the number moved.$39
- Text morphIn How, ScoreboardText that changes the way it should: shared letters slide over, new ones rise out of a blur, the width eases.Book a call
- Pricing toggleIn PricingMonthly or yearly: the thumb slides with a little give, and every price on the page rolls to its new amount.$39/mo
- Logo marqueeIn Engine, HeroA quiet strip of logos that notices you: it eases to a stop on hover and the logo you point at stays bright.
- Northwind
- Fernhill
- Halcyon
- Lumen
- Orbit
- Kestrel
05Make it yours
Where everything lives
Everything on the home page, and every destination, lives in site.config.ts; customer stories, notes and legal text live in content/. Set your booking link once and every demo button follows. The palette is a handful of CSS variables, and the screens are images you replace with your own at the same proportions.
| To change | Edit |
|---|---|
| Brand, copy, the scoreboard, chart shares, modules, steps, plans and questions | site.config.ts |
| Where the buttons go (booking page, sign-in, email) | site.config.ts → links |
| Customer stories, field notes and legal pages | content/ |
| Palette: LED yellow, ink, mist greys | app/globals.css |
| Fonts | app/layout.tsx |
| Product screens, photographs and covers (sizes in the README) | public/images/ and site.config.ts |
Run it
$ npm install$ npm run devNode.js 20.9 or newer. No environment variables.
Before you go live
Replace the fictional company, customers, quotes and figures. Set links.demo to your booking page (and links.signIn if you have an app) in site.config.ts, rewrite the stories and notes in content/, have the legal text reviewed, then swap the screens for your own product.
06Specifications
What’s under the hood
- sections
- 12
- source files
- 81
- lines of code
- ~4,900
- dependencies
- 4
- API keys needed
- 0
Stack
- Framework
- Next.js 16 (App Router), React 19
- Language
- TypeScript
- Styling
- Tailwind CSS v4 with design tokens and component styles
- Dependencies
nextreactreact-domlucide-react
Design
- Fonts
- Host Grotesk, Doto, self-hosted with next/font
- Images
- Nineteen WebP images made for Hairline UI templates: four product screens and three note covers rendered at 2×, six photographs (a runner, four fictional brands and a team) and six portraits, about 1.7 MB in all. The mark is SVG; client names are set in type.
- Colour scheme
- Light
- Responsive
- Desktop, tablet and phone
Quality
- Accessibility
- Skip link, visible focus, keyboard navigation, reduced motion
- API keys and environment variables
- None
- Node.js
- 20.9 or newer
Shipping
- Deploys to
- Vercel, Netlify, Cloudflare Pages or any Node host
- Codebase
- 81 source files, about 4,900 lines
- Last updated
- Oct 14, 2026
07License
One license, no tiers
The full text ships as LICENSE.md in the download and is on the license page.
You can
- Use it for your own products
- Use it for any number of client projects
- Change the code and design however you like
- Deploy the result commercially
You can’t
- Resell or share the files as a template, theme or UI kit
- Publish the source as a template in a public repository
08Questions
Before you buy
What do I get when I buy Upshot?
The complete Upshot project as a download: the Next.js app, its config file, a README with setup and customisation notes, and the license. It’s added to your account’s library the moment payment goes through.
Can I use Upshot for client projects?
Yes. One purchase covers your own products and any number of client projects, and you can change the code however you like. What you can’t do is resell or share the template files themselves as a template or UI kit.
Do I need API keys, a database or a backend?
No. It runs with npm install and npm run dev and deploys to Vercel, Netlify or Cloudflare Pages without any environment variables.
What should I change before I launch?
Replace the fictional company, customers, quotes and figures. Set links.demo to your booking page (and links.signIn if you have an app) in site.config.ts, rewrite the stories and notes in content/, have the legal text reviewed, then swap the screens for your own product.
Do I need to know Next.js?
Basic React helps, but most changes are text edits in site.config.ts. The README walks through colours, fonts and section order.
How do updates work?
Updates to Upshot are free. When a new version ships, download it again from your library.
Can I get a refund?
Yes. If Upshot isn’t right for you, email support@hairlineui.com within 14 days and you get your money back. No reason needed.
Should I buy all-access instead?
If you’ll use more than two templates, yes. All-access is $99 for all 39 templates, including Upshot and every template added later. Three single templates would cost $117.
09All-access
Every template, one price
All 39 templates for $99.
Every template in the library, including Upshot, and every one added later. Same license, free updates. Less than three single templates.





































