---
title: "Send a newsletter"
description: "Design the email once, send it from your own code, and see what was opened."
url: "https://openemail.uk/features/marketing-email"
---

Sending

# Send a newsletter to your whole list

Design the email once, send it from your own code, and see what was opened.

[Open mail](https://openemail.uk/mail/inbox) [Get Started](https://openemail.uk/signup.md)[Every walkthrough](https://openemail.uk/features/in-practice.md)

news@acme.com

Monthly update v3 Published

Hi {{firstName}} Omar

Read the update

POST /emails/batch

dana@northwind.co Clicked

omar@lumen.io Sent

mia@pinefield.dev Queued

130 Sent 42 Opened 9 Clicked

Opens are a guide. Some mail apps block images, so the real number is higher.

How it works

## Running in three steps.

1. 01
   
   Build the email
   
   Start from a template in the gallery and edit every block visually.
2. 02
   
   Publish a version
   
   The published version freezes, so later edits cannot change what is going out.
3. 03
   
   Send it from code
   
   Post up to a hundred messages a call, naming the template and its values.

What it runs on

## The parts doing the work.

Nothing here is a separate product. Each one is a piece of the mailbox you already have.

Templates

A body written once, versioned, and sent many times: from the composer, from your own code, or by an agent.

Intro Invoice Follow-up

Hi Sarah, good to meet you at

See when mail you sent was opened

Whether a message you sent has been opened, when, how many times and which of its links were followed. On unless you turn it off, and plain about the readings it cannot get.

REST API

A documented HTTP API with issuable, scopable, revocable keys.

/threads?query=invoice

{ "threads": 12 }

Same mailbox, whether a person or a program is holding it.

Typed SDKs

A TypeScript client first, then the rest.

/threads?query=invoice

{ "threads": 12 }

Same mailbox, whether a person or a program is holding it.

Recipient suggestions

The people you already write to, offered as you type.

SR

AK

NM

JD

PL

+1,240

sarahreyes@acme.com

Webhooks

Tell your endpoint when mail arrives, instead of making you poll.

/threads?query=invoice

{ "threads": 12 }

Same mailbox, whether a person or a program is holding it.

Nearby

## Other jobs for the same inbox.

Mail from your app

Send receipts, codes and resets from your own code, and hear back when they land.

to buyer@northwind.co

template order-receipt

202 msg\_9f2c7a14

email.sent msg\_9f2c7a14

email.delivered msg\_9f2c7a14

email.opened msg\_9f2c7a14

Watch what happens after send

See what happened to every send, and keep dead addresses out of the next one.

omar@lumen.io Skipped

Delivered 129

Bounced 3

Blocked omar@lumen.io Held back

Email inside your product

Send, read and organise mail from your own code with a typed client.

await openemail.emails.send({

from: 'receipts@acme.com',

})

id msg\_3e91c7

queued sent delivered

email.opened email.clicked

[Every walkthrough](https://openemail.uk/features/in-practice.md)
