Background tasks, without the queues or workers

Build reliable serverless background tasks without setting up any queues or infrastructure.

Easily move critical work from your API to a background task in just a few lines of code. Use the Inngest SDK right in your existing codebase.

Hero image for Background tasks, without the queues or workers
Graphic of Use in your existing codebase

Use in your existing codebase

Define your background jobs in your existing TypeScript or JavaScript codebase and deploy to your existing hosting platform. Inngest invokes your functions via HTTP.

Graphic of Works with serverless functions

Works with serverless functions

Inngest calls your function as events are received. There is no need to set up a worker that polls a queue. Works with your favorite JavaScript framework or any Node.js backend.

Graphic of Automatic retries

Automatic retries

Failures happen. Inngest retries your functions automatically. The dead letter queue is a thing of the past.

Define background jobs in just a few lines of code

1 Create your function

2 Declare the event that triggers your function

3 Define your function steps

4 Trigger your function with an event

Sending events to Inngest automatically triggers background jobs which subscribe to that event.

1import { inngest } from "./client";
2
3// Instead of sending a welcome email or adding a user to your CRM
4// within your signup API endpoint, you can offload to the background:
5inngest.createFunction(
6  { id: "post-signup-flow" },
7  { event: "user.signup" },
8  async ({ event, step }) => {
9    await step.run("send-welcome-email", async () => {
10      await sendWelcomeEmail({ email: event.data.email });
11    });
12
13    await step.run("add-user-to-crm", async () => {
14      await addUserToHubspot({
15        id: event.data.userId,
16        email: event.data.email,
17      });
18    });
19  }
20);
21
22// Elsewhere in your code, send an event to trigger the function
23await inngest.send({
24  name: "user.signup",
25  data: {
26    userId: "6f47ebaa",
27    email: "user@example.com",
28  },
29});

The nice thing about writing step functions for Inngest vs regular "async worker queues" is that we can express logic, e.g. "if X than wait for event Y", with a layer of caching/retries on top.

Image of Alex Kotliarskyi
Alex Kotliarskyi
Co-founder @ Secta AI Labs

Everything you need to build

Amazing local DX

Our open source dev server runs on your machine giving you a local sandbox environment with a UI for easy debugging.

Full observability and logs

Check the status of a given job with ease. View your complete event history and function logs anytime.

Fan-out Jobs

Use a single scheduled function to trigger multiple functions to fan-out logic and run work in parallel.

Scheduled Jobs

Create jobs that sleep or pause for hours, days or weeks to create durable workflows faster than ever before.

Retries for max reliability

Create jobs that sleep or pause for hours, days or weeks to create durable workflows faster than ever before.

TypeScript support

Define your event payload as TypeScript types to have end-to-end type safety for all your jobs.

Ready to start building?

Ship background functions & workflows like never before

$ npx inngest-cli devGet started for free