> ## Documentation Index
> Fetch the complete documentation index at: https://docs.launchmystore.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Send Email

> Send a transactional email to a shopper as the merchant

# Send Email

Sends one transactional email on the merchant's behalf. The platform picks the
transport: the merchant's own SMTP when they have configured one, otherwise
the platform sender. Your app never sees the merchant's mail credentials.

Requires the `send_emails` scope. Use it for the emails your app owns —
ready-for-pickup, return approved, shipment delivered — not for marketing.

## Request

```bash cURL theme={null}
curl -X POST "https://api.launchmystore.io/api/v1/emails/send.json" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "shopper@example.com",
    "subject": "Your order #1001 has shipped",
    "htmlBody": "<p>Good news — your parcel is on its way.</p>",
    "replyTo": "support@acme-store.com"
  }'
```

```javascript Node.js theme={null}
await fetch('https://api.launchmystore.io/api/v1/emails/send.json', {
  method: 'POST',
  headers: { Authorization: 'Bearer YOUR_ACCESS_TOKEN', 'Content-Type': 'application/json' },
  body: JSON.stringify({ to: 'shopper@example.com', subject: 'Your order #1001 has shipped', htmlBody: '<p>Good news — your parcel is on its way.</p>' }),
});
```

## Body

**to** `string` *required*

One recipient address. Send one request per recipient — never a shared `To`.

**subject** `string` *required*

Subject line.

**htmlBody** `string` *required*

The HTML body. Inline your styles; there is no template wrapper applied.

**replyTo** `string`

Reply-To address (for example the merchant's support inbox). Defaults to
the store's business email, so shopper replies reach the merchant. An
invalid address is rejected with `400`.

The email is sent from the store's name: through the merchant's own SMTP
sender when configured, otherwise from the platform address with the store
name as the sender name.

## Response

```json theme={null}
{
  "status": 200,
  "message": "success",
  "data": {
    "sent": true,
    "transport": "merchant_smtp"
  }
}
```

`transport` is `merchant_smtp` when the merchant's own SMTP was used and
`platform` otherwise; suggest merchants configure their own sender for best
deliverability.

## Errors

| HTTP Status | Description |
| - | - |
| `400` | `to`, `subject` or `htmlBody` missing, or `to` is not an email address |
| `401` | Invalid or missing access token |
| `403` | App doesn't have `send_emails` scope |
| `404` | Store not found |
| `500` | The mail transport rejected the message (the merchant's SMTP is down or misconfigured) — surface it to the merchant rather than retrying blindly |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.