Dashral Pro is on the wayGet 30% off at launch

Dashral

CTA with ROI calculatorPro

Team size, report hours, an hour's cost and the tools you'd retire in; the yearly saving, the return and the payback out, adding up line by line.

When to use

  • A calculator that works out the yearly saving and return from the visitor's own team and costs.
  • B2B pricing and sales pages, where the case is made in money.

When not to use

  • Self-serve products with a low price: the maths gets in the way of signing up; CTA banner.
  • Savings you can't stand behind: it estimates from the visitor's own numbers, so its assumptions must be honest.

Usage

CTA with ROI calculator with your own data: every prop has the sample as its default, so pass only what you have.

example.tsx
import { CtaRoi } from "@/components/dashral/blocks/cta-roi"

<CtaRoi
  product="Acme"
  tools={replacedTools}
  currency="EUR"
  cta={{ label: "Book a demo", href: "/demo" }}
/>

API reference

CtaRoi

A call to action that makes the case in numbers: the team size, the hours each person spends on reports, what an hour costs and the tools you'd retire go in; out comes the yearly saving (counting to its new value), how it adds up line by line, the return and how many days it takes to pay for itself, and today against with the product. Copy estimate puts the summary on the clipboard. The assumptions are written under it. Every part comes from props: your product, its price and what it saves, the tools it replaces, and where the call to action goes.

PropTypeDefault
eyebrowReact.ReactNode"Return on investment"
titleReact.ReactNodesample
descriptionReact.ReactNodesample
productstring

Your product's name, in the breakdown, the bars and the copied summary.

"Acme"
assumptions{ timeSaved: number; weeks: number; pricePerSeat: number; plan: string }

The assumptions behind the estimate, written under it: the share of report hours that comes back, working weeks a year, and the price a person a month on plan.

sample
toolsRoiTool[]

The tools it could retire, at what a month, and teams like the visitor's to fill everything in at once.

sample
presetsRoiPreset[]sample
initial{ people: number; hours: number; rate: number; tools: string[] }

Where the inputs start.

sample
currencystring

The money format.

"USD"
localestring"en-US"
cta{ label: string; href?: string; onClick?: (estimate: RoiEstimate) => void }

The call to action: a link, or your own handler with the estimate as it stands.

sample

type RoiTool

PropTypeDefault
idstring—
namestring—
monthlynumber—

type RoiPreset

PropTypeDefault
namestring—
peoplenumber—
hoursnumber—
ratenumber—
toolsstring[]—

type RoiEstimate

The estimate as it stands, for your call to action.

PropTypeDefault
peoplenumber—
hoursSavednumber—
timeValuenumber—
toolSavingsnumber—
costnumber—
savingnumber—
roinumber—
paybackDaysnumber | null—