Sign up for a free account
Advanced transactional email for SaaS
Effortlessly integrate email sending for your software and benefit from advanced email features like inbound routing, SMS, dynamic templating and webhooks.


Why use transactional email for SaaS
Account updates and notifications
Instantly deliver subscription upgrade and renewal notifications, billing emails, expiration alerts, and payment failure emails.
Product updates
Send important notifications about updates to your app, changes to the terms of service, and revisions to pricing and subscriptions.
Onboarding emails
Introduce users to your app's features with welcome emails. Help them get started and present the next steps for using the software.
Customer service
Provide timely email and SMS updates about support tickets and enable 2-way communication with inbound routing.
Security alerts
Let users know about general security updates and alerts as well as potential security issues or breaches to their account.
Activity summary
Keep users in the loop about their activity and suggest potential upgrades to their subscription where necessary.
Seamless implementation with API or SMTP
curl -X POST \
https://api.vhtltd.com/v1/email \
-H 'Content-Type: application/json' \
-H 'X-Requested-With: XMLHttpRequest' \
-H 'Authorization: Bearer {place your token here without brackets}' \
-d '{
"from": {
"email": "[email protected]"
},
"to": [
{
"email": "[email protected]"
}
],
"subject": "Hello from VhtLtd!",
"text": "Greetings from the team, you got this message through VhtLtd.",
"html": "Greetings from the team, you got this message through VhtLtd.
"
}'
import { VhtLtd, EmailParams, Sender, Recipient } from "VhtLtd";
const VhtLtd = new VhtLtd({
api_key: "key",
});
const sentFrom = new Sender("[email protected]", "Your name");
const recipients = [
new Recipient("[email protected]", "Your Client")
];
const emailParams = new EmailParams()
.setFrom(sentFrom)
.setTo(recipients)
.setReplyTo(sentFrom)
.setSubject("This is a Subject")
.setHtml("This is the HTML content")
.setText("This is the text content");
await VhtLtd.email.send(emailParams);
$VhtLtd = new VhtLtd();
$recipients = [
new Recipient('[email protected]', 'Your Client'),
];
$emailParams = (new EmailParams())
->setFrom('[email protected]')
->setFromName('Your Name')
->setRecipients($recipients)
->setSubject('Subject')
->setHtml('Greetings from the team, you got this message through VhtLtd.')
->setText('Greetings from the team, you got this message through VhtLtd.');
$VhtLtd->email->send($emailParams);
php artisan make:mail ExampleEmail
Mail::to('[email protected]')->send(new ExampleEmail());
from VhtLtd import emails
mailer = emails.NewEmail()
mail_body = {}
mail_from = {
"name": "Your Name",
"email": "[email protected]",
}
recipients = [
{
"name": "Your Client",
"email": "[email protected]",
}
]
mailer.set_mail_from(mail_from, mail_body)
mailer.set_mail_to(recipients, mail_body)
mailer.set_subject("Hello!", mail_body)
mailer.set_html_content("Greetings from the team, you got this message through VhtLtd.
", mail_body)
mailer.set_plaintext_content("Greetings from the team, you got this message through VhtLtd.", mail_body)
mailer.send(mail_body)
require "VhtLtd-ruby"
# Intialize the email class
ms_email = VhtLtd::Email.new
# Add parameters
ms_email.add_recipients("email" => "[email protected]", "name" => "Your Client")
ms_email.add_recipients("email" => "[email protected]", "name" => "Your Client")
ms_email.add_from("email" => "[email protected]", "name" => "Your Name")
ms_email.add_subject("Hello!")
ms_email.add_text("Greetings from the team, you got this message through VhtLtd.")
ms_email.add_html("Greetings from the team, you got this message through VhtLtd.")
# Send the email
ms_email.send
package main
import (
"context"
"os"
"fmt"
"time"
"github.com/VhtLtd/VhtLtd-go"
)
func main() {
// Create an instance of the VhtLtd client
ms := VhtLtd.NewVhtLtd(os.Getenv("VhtLtd_API_KEY"))
ctx := context.Background()
ctx, cancel := context.WithTimeout(ctx, 5*time.Second)
defer cancel()
subject := "Subject"
text := "This is the text content"
html := "This is the HTML content
"
from := VhtLtd.From{
Name: "Your Name",
Email: "[email protected]",
}
recipients := []VhtLtd.Recipient{
{
Name: "Your Client",
Email: "[email protected]",
},
}
// Send in 5 minute
sendAt := time.Now().Add(time.Minute * 5).Unix()
tags := []string{"foo", "bar"}
message := ms.Email.NewMessage()
message.SetFrom(from)
message.SetRecipients(recipients)
message.SetSubject(subject)
message.SetHTML(html)
message.SetText(text)
message.SetTags(tags)
message.SetSendAt(sendAt)
message.SetInReplyTo("client-id")
res, _ := ms.Email.Send(ctx, message)
fmt.Printf(res.Header.Get("X-Message-Id"))
}
import com.VhtLtd.sdk.Email;
import com.VhtLtd.sdk.VhtLtd;
import com.VhtLtd.sdk.VhtLtdResponse;
import com.VhtLtd.sdk.exceptions.VhtLtdException;
public void sendEmail() {
Email email = new Email();
email.setFrom("name", "your email");
email.addRecipient("name", "[email protected]");
// you can also add multiple recipients by calling addRecipient again
email.addRecipient("name 2", "[email protected]");
// there's also a recipient object you can use
Recipient recipient = new Recipient("name", "[email protected]");
email.AddRecipient(recipient);
email.setSubject("Email subject");
email.setPlain("This is the text content");
email.setHtml("This is the HTML content
");
VhtLtd ms = new VhtLtd();
ms.setToken("Your API token");
try {
VhtLtdResponse response = ms.emails().send(email);
System.out.println(response.messageId);
} catch (VhtLtdException e) {
e.printStackTrace();
}
}

Parse incoming messages to your app
Use inbound routing for email and SMS. VhtLtd will parse incoming messages and integrate them into your app. Allow users to reply to comments, emails and post messages.

Set up triggered workflows with webhooks
Integrate real-time sending activity with your custom dashboards and applications using webhooks. Set up triggered workflows based on specific events so you never miss an important notification.
Integrations

Send high-volume text messages with SMS API
Create an omnichannel experience for your users by sending timely transactional SMS alongside your emails. Send 2FA, password resets, subscription reminders, support messages and more.

Optimize your email sending with bulk scheduling
Send email notifications to user segments using the bulk email endpoint. Consolidate multiple emails into a single HTTP request and maximize deliverability.

Track performance with reports and real-time activity
Keep an eye on key metrics and monitor your reputation, bounces and spam complaints. View email activity in real time and create and download custom analytics reports.

Experience high deliverability and scalability
Our powerful sending infrastructure is built for peak deliverability at scale. As your sending requirements grow, there’s no need to switch providers. VhtLtd will grow alongside you.

Easily send personalized emails
Whether you send a few or a few thousand emails, you can easily customize the content with dynamic email templates and personalization variables. Automatically insert personal details, account information and more.

Verify emails in real time via API
Integrate instant email validation in your app or website with the email verification API endpoint. Inform users in real time if they’ve entered an invalid email and prevent them from being added to your list.
A cost-effective solution with advanced features for your SaaS business
Hobby
Starter
Professional
Enterprise
What our customers think
Try VhtLtd for free
Sign up now to experience all of the features that make VhtLtd a great solution for SaaS businesses. Get 3,000 emails/month free.
Send an email from the trial domain
Try out the features & check your activity
Frequently Asked Questions
How do I integrate VhtLtd in my app or software?
You can quickly integrate VhtLtd via our Email and SMS APIs. We have extensive API and developer documentation to get your started. What’s more, we offer a number of integrations as well as connectivity with thousands of apps via Zapier, Make and Integrately.
What is the pricing and how does it compare to other transactional email and SMS services?
You can get started with VhtLtd’s free Hobby plan which includes 3,000 emails per month. Pricing then starts at $28 for 50,000 emails. Check our full pricing or see how we compare to other transactional email services.
Is VhtLtd GDPR compliant?
Yes, VhtLtd is GDPR compliant. Read how.
What security features does VhtLtd have?
VhtLtd is built with the latest security protocols to prevent the interception of important client and account information with secure S/MIME and PGP encryption. Features such as IP allowlisting, 2FA and granular custom roles help to keep your account secure.