UltyMailer
Documentation & Guides

Everything you need to deliver high-converting emails

Learn how to configure audiences with our built-in spreadsheet editor, run automated background campaigns, track live email opens, and scale sending with SendBoost at $0.45 / 1,000.

1

Audience Sheet Table Editor

UltyMailer comes with an interactive, Google Sheets-inspired spreadsheet table editor. Instead of plain text email lists, you can manage structured CSV contact data directly in your browser.

Key Sheet Capabilities

  • ✓CSV & TXT Uploads: Auto-detects columns, headers, and separators.
  • ✓Inline Cell Editing: Click any cell to update emails, names, companies, or custom metadata.
  • ✓Dynamic Columns: Add or delete custom columns (e.g. Role, City, DiscountCode).
  • ✓Automatic Deduplication: Cleans up duplicate email entries and validates formatting.
2

Smart Variable Personalization

Write your email template once and personalize it for thousands of leads. UltyMailer automatically normalizes any tag format and matches it against your audience table columns.

Supported Tag Formats (All formats map dynamically)
Standard Tags:[-first_name-]   [-company-]   [-website-]
Mustache / Jinja:{{first_name}}   {{company}}   {{title}}
Single Brackets:{first_name}   {company}
Square Brackets:[first_name]   [company]
Engine Note: Variables are case-insensitive and ignore underscores or dashes. For example, [-First Name-], {{firstname}}, and {first_name} all resolve to the same CSV column header.
3

Background Auto Send Engine

The Auto Send engine is engineered for large recipient lists. Instead of requiring you to keep your browser tab open, Auto Send dispatches emails safely in staggered background batches that preserve domain reputation.

Runs Fully Offline

Queue 5,000 or 50,000 recipients, click start, and shut down your computer. Our cloud worker dispatches each batch on time.

Plan Limit Enforcement

Batch sizes and intervals automatically match your tier (Growth, Pro, Agency) to prevent sender rate-limiting.

Pause & Resume Control

Monitor live campaign progress and pause, cancel, or re-adjust settings mid-flight without dropping deliverability.

4

Scheduled Dispatches

Set your target date, time, and timezone. The scheduler locks in your campaign draft and triggers delivery automatically at the peak open-rate hour for your target audience. Background cron workers process queues autonomously without needing your browser tab open.

5

Real-Time Open Tracking & Analytics

Gain clear visibility into your campaign performance with automated read receipts. Know the instant your emails are opened, track recipient interactions, and view engagement rates live in your dashboard.

Live Engagement KPIs

Track Unique Opens, Total Reads, and Open Percentages across every campaign and verified sender identity.

High Deliverability

Built to protect domain reputation and ensure high inbox placement across Gmail, Outlook, Yahoo, and business inboxes.

6

Verified Senders & Custom Domain Routing

Connect and verify multiple sender identities with custom display names (e.g. Alex <alex@yourdomain.com>). UltyMailer automatically handles email routing, sender reputation isolation, and bounce suppression without requiring manual SMTP server setup.

Zero DNS Hassle: On supported plans, UltyMailer manages reverse DNS, outbound IP pools, and envelope headers out of the box so you can start delivering campaigns immediately.

7

Numbered Campaigns & Reusable Library

Keep your outbound efforts structured with automatic sequential naming (Campaign #1, Campaign #2...). Save successful HTML and text copy directly to your template library for quick reuse across one-off sends and Auto-Send background queues.

8

Plan Limits, Safe Batching & Run Cooldowns

To safeguard outbound IP reputation and guarantee high inbox placement across major providers (Gmail, Microsoft, Yahoo), each plan includes clear volume parameters:

Run Recipient Caps

The maximum number of contacts in a single instant dispatch (e.g. 10 on Free, 1,000 on Growth, unlimited on Pro & Agency).

Run Cooldown

A 3-minute cooldown between instant dispatches that prevents spam-filter tripwires and warms outbound pipelines safely.

Consumer Domain Gate

Sending to free domains (Gmail, Outlook, Yahoo, GMX) is reserved for Pro and Agency tiers to protect shared IP pools.

9

SendBoost On-Demand Sending ($0.45 / 1,000)

Exceeded your plan quota or launching a high-volume seasonal campaign? You don't have to upgrade your monthly tier. Purchase extra email credits anytime with SendBoost at an industry-leading rate of just $0.45 per 1,000 emails ($0.00045/email).

$0.45 per 1,000 sends

Works on All Plans — Never Expire

SendBoost credits stack directly on top of your plan and roll over indefinitely. Available on Free, Growth, Pro, and Agency.

View SendBoost Calculator
10

REST API Quickstart (cURL, Node.js, Python, Go)

Integrate UltyMailer into your backend services and SaaS products using clean JSON over standard HTTPS.

Authentication

Pass your API secret key in the Authorization: Bearer sk_live_... header on every request.

cURL

curl -X POST https://api.ultymailer.com/v1/send \
  -H "Authorization: Bearer sk_live_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "Alex <alex@yourdomain.com>",
    "to": ["user1@company.com", "user2@company.com"],
    "subject": "Welcome to [-company-]!",
    "html": "<p>Hi [-first_name-], your account is ready.</p>",
    "track_opens": true
  }'

Node.js (Fetch)

const response = await fetch('https://api.ultymailer.com/v1/send', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer sk_live_your_key_here',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    from: 'Alex <alex@yourdomain.com>',
    to: ['user1@company.com'],
    subject: 'Welcome aboard!',
    html: '<p>Hi there, welcome to our service.</p>',
    track_opens: true,
  }),
});
const data = await response.json();
console.log('Delivered:', data);

Python (Requests)

import requests

url = "https://api.ultymailer.com/v1/send"
headers = {
    "Authorization": "Bearer sk_live_your_key_here",
    "Content-Type": "application/json"
}
payload = {
    "from": "Alex <alex@yourdomain.com>",
    "to": ["lead@company.com"],
    "subject": "Quick follow-up",
    "html": "<p>Hello, following up on our chat.</p>",
    "track_opens": True
}

res = requests.post(url, json=payload, headers=headers)
print(res.status_code, res.json())

Go (net/http)

package main

import (
    "bytes"
    "encoding/json"
    "net/http"
)

func main() {
    body, _ := json.Marshal(map[string]interface{}{
        "from": "Alex <alex@yourdomain.com>",
        "to": []string{"user@company.com"},
        "subject": "Account verified",
        "html": "<p>Welcome!</p>",
        "track_opens": true,
    })

    req, _ := http.NewRequest("POST", "https://api.ultymailer.com/v1/send", bytes.NewBuffer(body))
    req.Header.Set("Authorization", "Bearer sk_live_your_key_here")
    req.Header.Set("Content-Type", "application/json")

    client := &http.Client{}
    resp, err := client.Do(req)
    if err == nil {
        defer resp.Body.Close()
    }
}