---
title: "Resend acquires Mergent"
slug: resend-acquires-mergent
description: "A major step in becoming the best communication platform for developers."
created_at: "2025-04-23"
updated_at: "2025-04-23"
image: https://cdn.resend.com/posts/resend-acquires-mergent.jpg
humans: ["zeno-rocha", "james-martinez"]
category: "company"
featured: true
---

Today, we are thrilled to announce that Resend has acquired [Mergent](https://mergent.co), the serverless background job service.

Mergent made it easy for developers to schedule and manage tasks like data processing, third-party integrations, and email sending.

Now, we are excited to welcome the Mergent team, and invest even more in three pillars:

1. **Uptime**
2. **Scalability**
3. **Developer Experience**

## The story of Mergent

Four years ago, <Human id="james-martinez"/> joined the [Y Combinator S21 batch](https://www.ycombinator.com/companies/mergent) to fix the problem of scheduling background tasks.

James' obsession with durability, scalability, and developer experience drove him to build a platform that was super **easy to use, and extremely reliable**.

> Fun fact: Mergent was the first scheduling service our team at Resend used to power domain verifications.

In their first year, [Mergent's 99.997% uptime](https://blog.mergent.co/how-mergent-stacked-up-against-amazon-sqs-sla-in-2022) **raised the bar for an entire industry** by beating AWS SQS's SLA of 99.9% uptime.

In 2023, [Mergent surpassed 99.995% uptime](https://blog.mergent.co/mergents-apis-surpass-99995-uptime-for-the-second-year). And, in the following year, they surpassed AWS SQS's SLA once again.

![Mergent uptime graph](https://cdn.resend.com/posts/resend-acquires-mergent-1.jpg)

By the end of 2024, Mergent continued to grow, and they added [support for 100 billion invocations per month](https://blog.mergent.co/mergent-now-supports-100b-invocations-per-month) to help large customers.

In total, Mergent has processed more than **370.35 billion tasks**.

## What will happen to Mergent

Now, the Mergent team is joining Resend to continue to improve reliability at scale.

We will continue to support Mergent for existing customers during the **next 90 days**.

Mergent will be sunset on **July 28th, 2025**.

## How to transition from Mergent

If you're using Mergent to schedule emails like this:

```ts
{
  "scheduled_for": "2025-04-24T19:55:08.623Z",
  "request": {
    "url": "https://api.resend.com/emails",
    "headers": {
      "Authorization": "Bearer re_xxxxxxxxx"
    },
    "body": {
      "from": "Acme <onboarding@resend.dev>",
      "to": ["delivered@resend.dev"],
      "subject": "hello world",
      "html": "<p>it works!</p>",
      "scheduledAt": "in 1 min"
    }
  }
}
```

You can now use one of the Resend SDKs to schedule emails using natural language:

<CodeTabs>
```nodejs
import { Resend } from 'resend';

const resend = new Resend('re_xxxxxxxxx');

await resend.emails.send({
  from: 'Acme <onboarding@resend.dev>',
  to: ['delivered@resend.dev'],
  subject: 'hello world',
  html: '<p>it works!</p>',
  scheduledAt: 'in 1 min',
});
```

```php
$resend = Resend::client('re_xxxxxxxxx');

$resend->emails->send([
  'from' => 'Acme <onboarding@resend.dev>',
  'to' => ['delivered@resend.dev'],
  'subject' => 'hello world',
  'html' => '<p>it works!</p>',
  'scheduled_at' => 'in 1 min'
]);
```

```python
import resend
resend.api_key = "re_xxxxxxxxx"

params: resend.Emails.SendParams = {
  "from": "Acme <onboarding@resend.dev>",
  "to": ["delivered@resend.dev"],
  "subject": "hello world",
  "html": "<p>it works!</p>",
  "scheduled_at": "in 1 min"
}

resend.Emails.send(params)
```

```ruby
require "resend"

Resend.api_key = "re_xxxxxxxxx"

params = {
  "from": "Acme <onboarding@resend.dev>",
  "to": ["delivered@resend.dev"],
  "subject": "hello world",
  "html": "<p>it works!</p>",
  "scheduled_at": "in 1 min"
}

Resend::Emails.send(params)
```

```go
import (
	"fmt"

	"github.com/resend/resend-go/v2"
)

func main() {
  ctx := context.TODO()
  client := resend.NewClient("re_xxxxxxxxx")

  params := &resend.SendEmailRequest{
    From:        "Acme <onboarding@resend.dev>",
    To:          []string{"delivered@resend.dev"},
    Subject:     "hello world",
    Html:        "<p>it works!</p>",
    ScheduledAt: "in 1 min"
  }

  sent, err := client.Emails.SendWithContext(ctx, params)

  if err != nil {
    panic(err)
  }
  fmt.Println(sent.Id)
}
```

```rust
use resend_rs::types::CreateEmailBaseOptions;
use resend_rs::{Resend, Result};

#[tokio::main]
async fn main() -> Result<()> {
  let resend = Resend::new("re_xxxxxxxxx");

  let from = "Acme <onboarding@resend.dev>";
  let to = ["delivered@resend.dev"];
  let subject = "hello world";

  let email = CreateEmailBaseOptions::new(from, to, subject)
    .with_html("<p>it works!</p>")
    .with_scheduled_at("in 1 min");

  let _email = resend.emails.send(email).await?;

  Ok(())
}
```

```java
import com.resend.*;

public class Main {
    public static void main(String[] args) {
        Resend resend = new Resend("re_xxxxxxxxx");

        CreateEmailOptions params = CreateEmailOptions.builder()
                .from("Acme <onboarding@resend.dev>")
                .to("delivered@resend.dev")
                .subject("hello world")
                .html("<p>it works!</p>")
                .scheduledAt("in 1 min")
                .build();

        CreateEmailResponse data = resend.emails().send(params);
    }
}
```

```dotnet
using Resend;

IResend resend = ResendClient.Create( "re_xxxxxxxxx" );

var resp = await resend.EmailSendAsync( new EmailMessage()
{
    From = "Acme <onboarding@resend.dev>",
    To = "delivered@resend.dev",
    Subject = "hello world",
    HtmlBody = "<p>it works!</p>",
    MomentSchedule = "in 1 min",
} );
Console.WriteLine( "Email Id={0}", resp.Content );
```

```curl
curl -X POST 'https://api.resend.com/emails' \
 -H 'Authorization: Bearer re_xxxxxxxxx' \
 -H 'Content-Type: application/json' \
 -d $'{
  "from": "Acme <onboarding@resend.dev>",
  "to": ["delivered@resend.dev"],
  "subject": "hello world",
  "html": "<p>it works!</p>",
  "scheduled_at": "in 1 min"
}'
```
</CodeTabs>

If you're using Mergent for non-email tasks, there are a few options you can consider:

1. [Inngest](https://www.inngest.com)
2. [Google Cloud Tasks](https://cloud.google.com/tasks/docs)
3. [AWS Simple Queue Service](https://aws.amazon.com/sqs/)

Each of one these options will come with its pros and cons, but we believe Inngest is the best drop-in replacement to Mergent.

Here's a guide on [how to migrate from Mergent to Inngest](https://innge.st/mergent-migration).

## What does this mean for Resend

Resend is growing fast, extremely fast.

There is a ton of demand, and we're now sending millions of emails every single day.

Infrastructure is one of our top priorities, and we're incredibly excited to join forces with Mergent to invest even more in it.

We're just getting started.