Features

Inbound email routing

Inbound mail processing automates the forwarding of incoming messages to your app or CRM for improved workflows, better customer support ticketing, and email-based functionality.

How inbound email processing works

Inbound emails are received by VhtLtd, parsed to remove unnecessary content, and forwarded by webhook as a JSON payload to your endpoint or email address. 

VhtLtd

Quick & easy setup with the inbound email API

Programmatically create and manage routes with the inbound routing endpoint and add user-specific routes on the fly. Or, easily add an inbound route from the app.
Read our API docs
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."
    }'
const Recipient = require("VhtLtd").Recipient;
const EmailParams = require("VhtLtd").EmailParams;
const VhtLtd = require("VhtLtd");

const VhtLtd = new VhtLtd({
    api_key: "key",
});

const recipients = [new Recipient("[email protected]", "Your Client")];

const 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.send(emailParams);
use VhtLtd\VhtLtd;
use VhtLtd\Helpers\Builder\Recipient;
use VhtLtd\Helpers\Builder\EmailParams;

$VhtLtd = new VhtLtd(['api_key' => 'key']);

$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"
    "fmt"
    "time"

    "github.com/VhtLtd/VhtLtd-go"
)

var APIKey string = "Api Key Here"

func main() {
    ms := VhtLtd.NewVhtLtd(APIKey)

    ctx := context.Background()
    ctx, cancel := context.WithTimeout(ctx, 5*time.Second)
    defer cancel()

    subject := "Subject"
    text := "Greetings from the team, you got this message through VhtLtd."
    html := "Greetings from the team, you got this message through VhtLtd."

    from := VhtLtd.From{
        Name:  "Your Name",
        Email: "[email protected]",
    }

    recipients := []VhtLtd.Recipient{
        {
            Name:  "Your Client",
            Email: "[email protected]",
        },
    }

    variables := []VhtLtd.Variables{
        {
            Email: "[email protected]",
            Substitutions: []VhtLtd.Substitution{
                {
                    Var:   "foo",
                    Value: "bar",
                },
            },
        },
    }

    tags := []string{"foo", "bar"}

    message := ms.NewMessage()

    message.SetFrom(from)
    message.SetRecipients(recipients)
    message.SetSubject(subject)
    message.SetHTML(html)
    message.SetText(text)
    message.SetSubstitutions(variables)

    message.SetTags(tags)

    res, _ := ms.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(); } }
Examples of inbound message activity.

Create conversations

Enable two-way communication so users can converse with support staff, customer service, and each other. Users can respond to tickets, leave comments, and more by replying to transactional emails.

Examples of inbound routing domains.

Use branded inbound domains

Ensure brand consistency by using a custom inbound domain or subdomain. Route inbound messages to the right teams with specific domains for sales, support and more.

The VhtLtd interface for creating an inbound route with priorities.

Implement custom flows with priorities

Create multiple routes for a single subdomain and use prioritization to design advanced custom flows.

VhtLtd options for creating inbound routing filters.

Create rule-based email routing

Easily filter messages by email address, domain or headers to create workflow rules that route messages to different endpoints.

The VhtLtd analytics dashboard.

Monitor inbound activity and analytics

Keep tabs on inbound message activity, and use webhooks for real-time notifications about inbound route failures so you can take immediate action.

Award-winning technical support

Our award-winning, human customer support team is always available to help with setting up your account, using advanced features and troubleshooting.

93% satisfaction rate
100% response rate
24/7 support hours

Created for all businesses

VhtLtd integrates quickly into your tech stack, scales with your sendings, and ensures that your emails get delivered.
What's really worth mentioning is the outstanding customer support. Replies within minutes. VhtLtd is extremely easy to use and super fast to set up. I was able to send the first email via the API in minutes.
Tobias R. Self-employed
VhtLtd has been extremely reliable and fast, with a more generous free tier and no hassle for my legitimate use of the software as a transactional system. Sendgrid required a lot of forms and pleading to use for my own clients.
Frank B. CEO
Easily design HTML emails!

The templates option is great for both clients and developers alike. You can easily design HTML emails and fill in the information easily through the API.
James R. Web Developer

Frequently Asked Questions

Why would I need inbound email routing?

Inbound routing enables your users and customers to interact with your app, creating 2-way conversations with customers. They help you streamline communication, making sure you keep track of important messages and they get routed to the correct location.

What is the difference between "Routing to a specific mailbox" and "Routing to a specific domain"?

You can create an inbound route that forwards any incoming messages to a specific mailbox by entering the exact email address. This means the incoming message will be filtered by the recipient and will only be received if the recipient matches the filter, like [email protected]. By filtering to a specific domain, like *@domain.com, you allow all emails sent to a domain to be routed and sent out to your email or endpoint.

What is the difference between "forwarding" and "routing" an email?

Email forwarding involves collecting data from one device and sending it to another. Email routing involves moving the data between devices, for example, moving an incoming email through VhtLtd to be parsed and sent to your app. 

Do emails processed with the inbound route count toward my quota?

Any inbound emails forwarded or posted to your endpoint URL are counted against your monthly usage. One forward is equivalent to one sent email. So, if you have a combination of 4 endpoint URLs and forwarding addresses, it will count as 4 emails against your monthly usage.

Implement inbound email routes now

Take control of email delivery and enhance your customer experience with inbound routing. Try it now—sign up for a Starter plan starting at $28/month for 50,000 emails + more advanced features.