---
title: "Magic link email template"
description: "Passwordless sign-in with one button and the link printed as text."
url: "https://openemail.uk/templates/magic-link"
---

[Templates](https://openemail.uk/templates.md)[Accounts and access](https://openemail.uk/templates.md#account)

# Magic link email template

Passwordless sign-in with one button and the link printed as text.

[Use this template](https://openemail.uk/mail/templates?starter=magic-link) [Use this template](https://openemail.uk/signup.md?next=%2Fmail%2Ftemplates%3Fstarter%3Dmagic-link)[All templates](https://openemail.uk/templates.md) 4 values to fill Plain-text part included

- **From**
  Northwind <hello@example.com>
- **Subject**
  Your sign-in link for Northwind
- **Preview text**
  Your sign-in link for Northwind

![Preview of the Magic link template](https://openemail.uk/email-templates/previews/magic-link-desktop.webp?v=349060a0f7ee)

magic-link.txt

```
Your sign-in link for {{productName}}

Sign in to {{productName}}

Use the button below to sign in. The link works once and expires in {{expiryMinutes}} minutes.

Sign in [{{actionUrl}}]

Or paste this into your browser: {{actionUrl}}

If you did not ask to sign in, you can ignore this. Nobody can use the link but you.

{{footerNote}}
```

Shown with sample values. The HTML and plain-text tabs keep the placeholders.

About

## When to send it

Send it when someone signs in without a password. The link works once and its expiry is stated up front, and printing it as text as well as on the button means it still works when the button does not.

Values

## What each send fills in

Required values have to come with every send. The rest fall back to the default shown here.

| Placeholder | Kind | Required | Default |
| --- | --- | --- | --- |
| `{{productName}}` | Text | Required | None |
| `{{actionUrl}}` | Link | Required | None |
| `{{expiryMinutes}}` | Text | Optional | 15 |
| `{{footerNote}}` | Text | Optional | You are receiving this because somebody asked to sign in. |

API

## Send it from your code

Create a template from this design once, then send it with the values for each message.

send-magic-link.ts

```
import { init, openemail } from '@openemail/sdk' init({ apiKey: process.env.OPENEMAIL_API_KEY }) const template = await openemail.templates.create({  name: 'Magic link',  starter: 'magic-link',  publish: true,}) const sent = await openemail.templates.send(template.slug, {  from: 'Northwind <hello@example.com>',  to: 'maya@example.com',  props: {    productName: 'Northwind',    actionUrl: 'https://example.com/sign-in/7d1f3a',  },}) console.log(sent.id, sent.status)
```

Accounts and access

## More templates like this

![Preview of the Welcome template](https://openemail.uk/email-templates/previews/welcome-card.webp?v=d019166ec823)

### Welcome

A sign-up welcome with a short greeting, one button to get started and the link written out underneath.

![Preview of the Welcome card template](https://openemail.uk/email-templates/previews/welcome-card-card.webp?v=c0e1333fb3f4)

### Welcome card

A compact welcome in a card, with one button back into the product.

![Preview of the Verification code template](https://openemail.uk/email-templates/previews/verify-code-card.webp?v=b83bbba1232b)

### Verification code

A one-time code set large enough to read from another screen.

![Preview of the Password reset template](https://openemail.uk/email-templates/previews/password-reset-card.webp?v=b79c43c60f5e)

### Password reset

A reset email with one button, a link to paste and a clear expiry.

![Preview of the Password reset card template](https://openemail.uk/email-templates/previews/reset-password-card.webp?v=94296577c23b)

### Password reset card

A reset email that names the account and says plainly that nothing has changed yet.

![Preview of the Team invitation template](https://openemail.uk/email-templates/previews/invite-teammate-card.webp?v=858c4d99fba0)

### Team invitation

An invitation that names the person inviting, the workspace and the role on offer.

![Preview of the New sign-in alert template](https://openemail.uk/email-templates/previews/security-alert-card.webp?v=0902bb0e63a7)

### New sign-in alert

A sign-in notice with the time, device and place, so people can recognise themselves.

Start from one

## Pick a design, change anything, and send it from your code.

Every template opens in the editor as blocks you can move, restyle or delete, and sends through the API with the values filled in.

[Open mail](https://openemail.uk/mail/inbox) [Get Started](https://openemail.uk/signup.md)[How templates work](https://openemail.uk/features/templates.md)
