Official
transactional
Magic Link Login
Passwordless sign-in email with a single magic-link CTA, expiry note, and ignore-if-not-you copy.
magic-link.html
<div class="mx-auto max-w-[480px] overflow-hidden rounded-xl bg-white text-zinc-900" data-tm-id="tm_magic_frame" data-tm-type="frame" data-tm-label="Email">
<div class="p-8" data-tm-id="tm_magic_hero" data-tm-type="section" data-tm-label="Hero">
<img
class="mb-6 w-[145px]"
src="https://cdn.tailwindmail.dev/users/01a0abc6-35f3-70f6-9612-923d6d1aef8f/7bdc30b4-eb7a-46d3-9773-9fbb3f71d838.png"
alt="TailwindMail"
data-tm-id="tm_magic_logo"
data-tm-type="image"
data-tm-label="Logo"
>
<p class="m-0 text-[11px] font-semibold uppercase tracking-[0.16em] text-[#0896FB]" data-tm-id="tm_magic_eyebrow" data-tm-type="text" data-tm-label="Eyebrow">
Sign in
</p>
<h1 class="mt-2 m-0 text-[28px] font-semibold leading-tight text-zinc-900" data-tm-id="tm_magic_title" data-tm-type="text" data-tm-label="Title">
Your login link is ready
</h1>
<p class="mt-3 m-0 text-sm leading-relaxed text-zinc-500" data-tm-id="tm_magic_intro" data-tm-type="text" data-tm-label="Intro">
Click the button below to sign in to TailwindMail. No password needed — this link is just for you.
</p>
<div class="mt-6 mb-2" data-tm-id="tm_magic_cta_wrap" data-tm-type="section" data-tm-label="CTA">
<a
href="https://tailwindmail.dev"
class="inline-block rounded-md bg-[#0896FB] px-5 py-3 text-[13px] font-semibold text-white no-underline"
data-tm-id="tm_magic_cta"
data-tm-type="link"
data-tm-label="Sign in to TailwindMail"
>
Sign in to TailwindMail
</a>
</div>
</div>
<div class="px-8 pb-8" data-tm-id="tm_magic_notes" data-tm-type="section" data-tm-label="Notes">
<p class="m-0 mb-4 text-[11px] font-semibold uppercase tracking-[0.16em] text-zinc-400" data-tm-id="tm_magic_notes_label" data-tm-type="text" data-tm-label="Good to know">
Good to know
</p>
<div class="mb-4 border-l-2 border-[#0896FB] pl-4" data-tm-id="tm_magic_note_1" data-tm-type="section" data-tm-label="Note 1">
<p class="m-0 text-sm font-semibold text-zinc-900" data-tm-id="tm_magic_note_1_title" data-tm-type="text" data-tm-label="How it works">
How it works
</p>
<p class="mt-1 m-0 text-[13px] leading-relaxed text-zinc-500" data-tm-id="tm_magic_note_1_copy" data-tm-type="text" data-tm-label="How it works copy">
The button opens a one-time login. Don't forward this email — anyone with the link can sign in as you.
</p>
</div>
<div class="mb-4 border-l-2 border-zinc-200 pl-4" data-tm-id="tm_magic_note_2" data-tm-type="section" data-tm-label="Note 2">
<p class="m-0 text-sm font-semibold text-zinc-900" data-tm-id="tm_magic_note_2_title" data-tm-type="text" data-tm-label="Link expiry">
This link expires
</p>
<p class="mt-1 m-0 text-[13px] leading-relaxed text-zinc-500" data-tm-id="tm_magic_note_2_copy" data-tm-type="text" data-tm-label="Link expiry copy">
For security, the login link is valid for 15 minutes. Request a new one if it runs out.
</p>
</div>
<div class="border-l-2 border-zinc-200 pl-4" data-tm-id="tm_magic_note_3" data-tm-type="section" data-tm-label="Note 3">
<p class="m-0 text-sm font-semibold text-zinc-900" data-tm-id="tm_magic_note_3_title" data-tm-type="text" data-tm-label="Didn't request">
Didn't request this?
</p>
<p class="mt-1 m-0 text-[13px] leading-relaxed text-zinc-500" data-tm-id="tm_magic_note_3_copy" data-tm-type="text" data-tm-label="Didn't request copy">
You can ignore this email. No one can sign in unless they open the link.
</p>
</div>
</div>
<div class="border-t border-zinc-100 bg-zinc-50 px-8 py-5" data-tm-id="tm_magic_footer" data-tm-type="section" data-tm-label="Footer">
<p class="m-0 text-xs leading-relaxed text-zinc-400" data-tm-id="tm_magic_footer_copy" data-tm-type="text" data-tm-label="Footer">
Built with
<a href="https://tailwindmail.dev" class="text-zinc-500 no-underline">TailwindMail</a>.
Need a hand? Just reply to this email.
</p>
</div>
</div>
Format
Compiled HTML + Tailwind source
License
Free to fork and adapt
Built for
TailwindMail editor
Ready to ship email-safe HTML?
Start with Tailwind markup, compile to clean HTML, and always preview or send a test before campaigns.