App email that arrives while the user is still waiting.
Login codes, receipts, password resets and alerts. Send them with one API call or plain SMTP, from your own verified domain, and get a webhook for what happens next.
One request per email.
Pass the sender, the recipient and the content, or a template key with merge data. Each recipient gets their own message unless you add cc or bcc.
- Up to 50 recipients and 10 attachments per request
- Inline images with
cid:references - Tags you can filter logs and webhooks by
- Optional quick verification that drops dead addresses before sending
curl https://wisesender.com/v1/email/send \ -H "Authorization: Bearer ws_send_YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{ "from": "Acme <[email protected]>", "to": "[email protected]", "subject": "Your login code", "html": "<p>Your code is <b>{{code}}</b></p>", "merge_data": { "code": "482913" }, "tags": { "type": "otp" } }'
await fetch('https://wisesender.com/v1/email/send', { method: 'POST', headers: { Authorization: `Bearer ${process.env.WISESENDER_SEND_KEY}`, 'Content-Type': 'application/json', }, body: JSON.stringify({ from: 'Acme <[email protected]>', to: user.email, template_key: 'tpl_3f9a1c2b7d4e', merge_data: { name: user.name, code }, }), });
$payload = json_encode([ 'from' => 'Acme <[email protected]>', 'to' => $user['email'], 'subject' => 'Receipt #10482', 'html' => $html, ]); $ch = curl_init('https://wisesender.com/v1/email/send'); curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_POSTFIELDS => $payload, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('WISESENDER_SEND_KEY'), 'Content-Type: application/json'], ]); $response = json_decode(curl_exec($ch), true);
Everything a sending service needs, already wired up.
Verified domains
Add your domain and copy three DKIM records, a bounce subdomain and a DMARC record. Mail is only accepted from verified domains.
SMTP relay
Point WordPress, Laravel, Django or any mail library at our SMTP server. STARTTLS on 587, TLS on 465.
Templates
Write the email once with {{name}} placeholders and send it by key. Preview with sample data.
Mail streams
Keep OTPs, invoices and alerts apart, each with its own keys and seven-day stats.
Signed webhooks
Sent, delivered, bounced, complained, delayed, failed, opened and clicked, each signed with HMAC-SHA256.
Team access
Invite teammates as admin, developer or viewer. Credits always come from the owner.
Your first 1,000 emails are on us.
Verify a domain, create a key, send. Packs start at $3 for 10,000 emails after that.