14 SaaS Product Emails — Sonar / Onboarding
Free React Email Connect Data Template
The day-two nudge when no events have arrived, with the install snippet in the email. Customize it in the free React Email playground and export production-ready TSX — no sign-up.
- Sample subject
- Your workspace is empty (that’s fixable in 4 minutes)
- Format
- React Email TSX · Free

Template details
What this connect data template includes
The day-two nudge when no events have arrived, with the install snippet in the email. Customize it in the free React Email playground and export production-ready TSX — no sign-up. The source is standard TypeScript and React Email, so it can be sent with Resend or rendered to HTML for another email provider.
- Production-ready onboarding email structure
- Editable in the visual React Email playground
- Free TSX source for personal and commercial projects
How to use it
- 1. Customize the copy and styles in the playground above.
- 2. Export or copy the typed TSX source.
- 3. Pass dynamic props and send it from a server route with your email provider.
React Email TSX source
Free for personal, commercial, and client projects under the site license.
View full source code
import * as React from 'react';
import {
Band,
Brand,
CenteredNote,
CodeBlock,
CodeComment,
CTAButton,
Display,
EmailLayout,
InlineLink,
Kicker,
Lead,
Note,
} from './components';
export interface ConnectDataEmailProps {
brand?: Brand;
subject?: string;
preview?: string;
label?: string;
kicker?: string;
headline?: React.ReactNode;
lead?: React.ReactNode;
snippet?: React.ReactNode;
cta?: { label: string; href: string };
note?: React.ReactNode;
/** The offer of a human, on the deep ground. */
help?: React.ReactNode;
}
/**
* Connect data — the nudge two days after signup when nothing has arrived. The
* snippet is in the email so nobody has to go looking for it.
*/
export function ConnectDataEmail({
brand,
subject = 'Your workspace is empty (that’s fixable in 4 minutes)',
preview = 'No events yet — here’s the shortest path to your first chart.',
label = 'Getting started · Day 2',
kicker = 'Step 1 of 3 · not done yet',
headline = (
<>
NO DATA,
<br />
NO SIGNAL.
</>
),
lead = 'Northwind has been live for two days and Sonar hasn’t seen a single event. One snippet fixes that — most teams are done in under four minutes.',
snippet = (
<>
npm i @sonar/node
<br />
<CodeComment>{'// then'}</CodeComment>
<br />
{"sonar.track('signup_completed', { plan: 'pro' })"}
</>
),
cta = {
label: 'Install the SDK',
href: 'https://sonar.example.com/docs/install',
},
note = (
<>
{'Prefer no code? Connect '}
<InlineLink href="https://sonar.example.com/integrations">
Segment, Stripe, or Postgres
</InlineLink>
{' instead — same result, zero engineering time.'}
</>
),
help = (
<>
{'Stuck? '}
<InlineLink
href="https://sonar.example.com/office-hours"
color="mint"
underline
>
Book 15 minutes
</InlineLink>
{' with an engineer. Free, no pitch.'}
</>
),
}: ConnectDataEmailProps = {}) {
return (
<EmailLayout
brand={brand}
subject={subject}
preview={preview}
label={label}
accent="orange"
>
<Band padding="48px 32px 0 32px">
<Kicker color="orange">{kicker}</Kicker>
<Display size={50}>{headline}</Display>
<Lead>{lead}</Lead>
</Band>
<Band padding="26px 32px 40px 32px">
<CodeBlock>{snippet}</CodeBlock>
<CTAButton href={cta.href} background="orange" color="ink">
{cta.label}
</CTAButton>
<Note>{note}</Note>
</Band>
<Band tone="ink" padding="32px">
<CenteredNote>{help}</CenteredNote>
</Band>
</EmailLayout>
);
}
export default ConnectDataEmail;
Related templates
More from 14 SaaS Product Emails — Sonar.


