---
title: "How Wallpapppers sends billing email with OpenEmail"
description: "Wallpapppers sends sign-in codes, welcome email and six billing emails through one OpenEmail SDK call, with idempotency keys that match its own event queue."
url: "https://openemail.uk/integrations/wallpapppers"
---

[All integrations](https://openemail.uk/integrations.md)

Wallpaper gallery

# Wallpapppers sends its account and billing emailthrough OpenEmail.

Wallpapppers offers free, reimagined wallpapers on the web and on phones. One SDK call carries every email it sends, and the key that stops a duplicate in its database also stops one at OpenEmail.

[Visit wallpapppers.com](https://wallpapppers.com)

services/emails/sendTransactionalEmail.ts

```
await getOpenEmail().emails.send(  {    from: fromEmail(),    to,    subject,    html,    text,  },  {    idempotencyKey,    signal: AbortSignal.timeout(EMAIL_SEND_TIMEOUT_MS),  },)
```

Each billing email reuses the key Wallpapppers stored with the event, and every send gives up after 15 seconds instead of holding a job open.

9

kinds of email in production

15

seconds before any send is cut off

Sep 2026

The month it started on OpenEmail

What runs through it

## What Wallpapppers runs on OpenEmail.

- Sign-in codes Sent the moment someone asks for one.
- Welcome Sent to new accounts during their first week.
- Download reset A note when a free download is available again, with the three newest wallpapers.
- Billing Six emails, from a plan starting to a refund, for web and App Store subscribers alike. Wallpapppers turned off its payment provider's own emails, so these are the only payment notices people get.

How it was built

## How Wallpapppers put it together.

1. 01
   
   One client, made once
   
   Wallpapppers creates the OpenEmail client on first use and reuses it for every send.
2. 02
   
   Queue every billing event
   
   Payment and App Store webhooks queue an email with a key that names the exact event, such as a subscription and the moment it was cancelled.
3. 03
   
   Send with the same key
   
   A job every ten minutes sends what is queued and passes that key to OpenEmail as the idempotency key, so a retry can never deliver a second copy.
4. 04
   
   Fail fast, then retry
   
   Each send is cut off after 15 seconds. A billing email gets up to three attempts, and one that is stuck or failed raises an alert.

Features in use

## The OpenEmail features Wallpapppers relies on.

Email API

Send one message or a hundred per call, now or later, and retry without sending twice.

Typed SDKs

TypeScript, Python and Ruby clients, one method for every operation.

/threads?query=invoice

{ "threads": 12 }

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

API keys

A key per job, limited to the scopes and senders it needs, with every call logged.

Multiple domains

Point several domains at one inbox, subdomains included.

acme.com acme.dev team.acme.com hey.acme.io

Questions

## Questions about Wallpapppers and OpenEmail.

More integrations

## Other teams building on OpenEmail.

- [Modulify AI website platform The fastest AI platform for websites and web apps.](https://openemail.uk/integrations/modulify.md)
- [Envless Secrets manager Keeps env variables encrypted, versioned and in sync across every environment.](https://openemail.uk/integrations/envless.md)
- [Ip2Geo IP geolocation API Turns IP addresses into location data with one API call.](https://openemail.uk/integrations/ip2geo.md)
- [Uebfaqe AI website builder Builds professional websites for businesses in Albania with AI.](https://openemail.uk/integrations/uebfaqe.md)

[All integrations](https://openemail.uk/integrations.md)

## Mint a key. Send something.

Full API, MCP and SDK access on every plan, the free one included.

[Open mail](https://openemail.uk/mail/inbox) [Get Started](https://openemail.uk/signup.md)[Read the API quickstart](https://openemail.uk/docs/api/quickstart.md)
