trigger.dev Open in urlscan Pro
2a06:98c1:3121::c  Public Scan

Submitted URL: http://trigger.dev/
Effective URL: https://trigger.dev/
Submission: On December 29 via api from US — Scanned from NL

Form analysis 0 forms found in the DOM

Text Content

Pricing

Join the waitlist


AUTOMATE
COMPLEX WORKFLOWS
WITH CODE

Trigger workflows from APIs, on a schedule, or on demand. API calls are easy
with authentication handled for you. Add durable delays that survive server
restarts.

Join the waitlist→
*


We are open source, now and forever.


BACKED BY




DEVELOPER-FIRST FEATURES


IN YOUR CODEBASE

Trigger.dev is code-first so you can create workflows where they belong: in your
codebase. Version control, localhost, test, review, and deploy like you're used
to.


SECURE BY DESIGN

Your workflows run on your servers, not ours. We only receive the data you
choose to send to us.


HUNDREDS OF INTEGRATIONS

Subscribe to API changes and make requests, we’ll handle authentication for you.




EXAMPLE WORKFLOWS


SYNC GITHUB ISSUES TO LINEAR

Triggered when a GitHub issue is created or updated. Query your database to map
GitHub user ids to Linear user ids. Then create or update Linear issues.


SEND EMAILS TO NEW USERS

Triggered on demand by your other code when a user is created. We wait for 3
hours then send a follow-up email if the user hasn’t completed onboarding yet.


ESCALATE CRITICAL INCIDENTS

Triggered when an Intercom incident happens. We create a Linear issue, send a
Slack message and, if it’s an urgent incident, we alert whoever is on call.

Triggered when a GitHub issue is created or updated. Query your database to map
GitHub user ids to Linear user ids. Then create or update Linear issues.


SYNC GITHUB ISSUES TO LINEAR

import { Trigger, github, linear } from "@trigger.dev/sdk";

new Trigger({
  name: "Sync Github issues to Linear",
  on: github.issueEvent({
    repo: "acme/website",
  }),
  run: async (event, ctx) => {
    const { issue, action } = event;

    // Find the user in our local database
    const assignee = await findUserByGithubId(issue.assignee?.id);

    if (action === "opened") {
      await linear.issueCreate({
        id: issue.id,
        title: issue.title,
        description: issue.body,
        assigneeId: assignee?.linearId,
        teamId: ctx.env.LINEAR_TEAM_ID,
      });
    } else {
      await linear.issueUpdate(issue.id, {
        assigneeId: assignee?.linearId,
        stateId:
          action === "closed"
            ? ctx.env.LINEAR_CLOSED_STATE_ID
            : ctx.env.LINEAR_OPEN_STATE_ID,
      });
    }
  },
}).listen();

Triggered on demand by your other code when a user is created. We wait for 3
hours then send a follow-up email if the user hasn’t completed onboarding yet.


SEND EMAIL TO NEW USERS

import { Trigger, customEvent, slack, mailgun } from "@trigger.dev/sdk";

new Trigger({
  name: "Send Email to New Users",
  on: customEvent<UserEvent>({ name: "user.created" }),
  run: async (event, ctx) => {
    // Wait for 3 hours before continuing
    await ctx.waitFor({ hours: 3 });

    // Lookup user in the database
    const user = await findUserById(event.id);

    // only send email if user has not onboarded
    if (!user.hasOnboarded) {
      await mailgun.send({
        to: user.email,
        subject: "Welcome to our app!",
        body: `Welcome to our app ${user.name}!}`,
      });

      await slack.sendMessage({
        text: `Welcome email sent to ${user.email}`,
      });
    } else {
      await slack.sendMessage({
        text: `User ${user.email} has already onboarded`,
      });
    }
  },
}).listen();

Triggered when an Intercom incident happens. We create a Linear issue, send a
Slack message and, if it’s an urgent incident, we alert whoever is on call.


ESCALATE CRITICAL INCIDENTS

import { Trigger, intercom, linear, slack, pagerduty } from "@trigger.dev/sdk";

new Trigger({
  name: "Intercom Incident",
  on: intercom.newIncident(),
  run: async (event, ctx) => {
    // Find the customer in the database
    const customer = await db.query("SELECT * FROM users WHERE email = $1", [
      event.email,
    ]);

    // Create linear ticket
    const ticket = await linear.issueCreate({
      title: event.title,
      description: event.description,
      assigneeId: ctx.env.LINEAR_ASSIGNEE_ID,
      teamId: ctx.env.LINEAR_TEAM_ID,
    });

    // notify account manager
    await slack.sendMessage({
      text: `New incident for ${customer.name} in Linear: ${ticket.url}`,
    });

    if (event.severity === "urgent") {
      // Create a pagerduty incident
      await pagerduty.createIncident({
        title: event.title,
        description: event.description,
        severity: "critical",
        serviceId: ctx.env.PAGERDUTY_SERVICE_ID,
      });
    }
  },
}).listen();


TRIGGER HAPPY

Install our SDK and get instant access to an arsenal of triggers you can use in
your code.


WEBHOOKS

Subscribe to webhooks without creating API endpoints. Plus they work locally
without tunneling.

github.issueEvent({ repo: "acme/website" })


SCHEDULED (CRON)

Easily subscribe to a recurring schedule using human readable code or CRON
syntax.

scheduleEvent({ every: { minutes: 30 } })


CUSTOM EVENTS

Trigger workflows from any event in your app. Send us your events, and we'll do
the rest.

customEvent<YourType>({ name: "your.event" })


HTTP ENDPOINT

Expose a HTTP endpoint to trigger your workflows with the method and path of
your choice.

httpEvent<User>({ method: "POST", path: "/users/:id" })


RECEIVE EMAILS

Receive emails from your custom domain and trigger a workflow with the email
metadata and content.

emailEvent({ address: "support@help.customdomain.io" })


AWS EVENT BRIDGE

Integrate with AWS Event Bridge to trigger workflows on your own Event Bridge
events.

eventBridge<SupportRequest>({ bus: "customer-support" })


BATTERIES INCLUDED


DEBUGGING AND VISIBILITY

We provide a full history of all runs, so you can see exactly what happened.




SURVIVES DOWNTIME

Workflows pick up where they left off when your server or external APIs go down.




GO FROM IDEA TO PRODUCTION IN MINUTES


1

Code

Write workflows by creating triggers directly in your code. These can be
3rd-party integrations, custom events or on a schedule.


2

Connect

When your server runs, your workflow will be registered and you can authenticate
with any APIs you’re using.


3

Test

Test your workflow by triggering manually in your dashboard. Follow it as it
runs step-by-step.


4

Deploy

Deploy your new workflow as you would any other code commit and inspect each
workflow run in real time.


WE ❤️ OPEN SOURCE!

You’ll always be able to host and run Trigger.dev yourself.

Coming soon

We've also created JSON Hero, an open source JSON viewer used by around 55,000
developers per month.


FREQUENTLY ASKED QUESTIONS

Does my data get sent to your servers?
How is this different to Zapier, Pipedream etc?
How long does this take to set up?
Can I use version control or roll-backs?
How long does it take to code up a workflow?
Do you have all the integrations I need?
Can I build complex workflows?
Can I run Trigger.dev locally?
How does the pricing model work?
Is Trigger.dev open source?
Is Trigger.dev a no/low-code tool?
What languages / frameworks do you support?
Can I use an API which doesn’t have webhooks?
Can non-coders use this product?

If you have any other questions about Trigger.dev, drop us an email at
hello@trigger.dev, and one of the founders will get back to you.


SKIP THE LINE!

Sign up for early access to the private beta.

Join the waitlist→

PRODUCT

Pricing

CONTACT

Get in touchTwitterSchedule a call

Copyright © 2022 Trigger.dev. All rights reserved.

From the makers of JSON Hero.