https://trigger.dev []Trigger dev logoTrigger dev logo DocsExamplesPricing Login Sign upSign up Effortless automation built for developers 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. Get started for free-Request a workflow []Trigger.dev hero imageTrigger.dev hero image []Trigger.dev hero image We are open source, now and forever. Backed by Y CombinatorY Combinator 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. Powerful Integrations Subscribe to API changes and make requests, we'll handle authentication for you. []Support for 100+ APIsSupport for 100+ APIs Create an email drip feed campaign in under 2 minutes One of our most requested simple workflows. When a new user signs up, send a Slack message and start a welcome email drip campaign. Get started with this workflow- 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. Linear iconLinear icon Sync GitHub issues to Linear import { Trigger } from "@trigger.dev/sdk"; import { github, linear } from "@trigger.dev/integrations"; new Trigger({ id: "sync-github-issue-to-linear", name: "Sync Github issues to Linear", apiKey: "", on: github.events.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.createIssue({ id: issue.id, title: issue.title, description: issue.body, assigneeId: assignee?.linearId, teamId: ctx.env.LINEAR_TEAM_ID, }); } else { await linear.updateIssue(issue.id, { assigneeId: assignee?.linearId, stateId: action === "closed" ? ctx.env.LINEAR_CLOSED_STATE_ID : ctx.env.LINEAR_OPEN_STATE_ID, }); } return event; }, }).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. Slack iconSlack icon Send email to new users import { Trigger, customEvent } from "@trigger.dev/sdk"; import { slack, mailgun } from "@trigger.dev/integrations"; new Trigger({ id: "send-email-to-new-users", name: "Send Email to New Users", apiKey: "", on: customEvent({ 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. Intercom iconIntercom iconLinear iconLinear iconSlack iconSlack icon Pager Duty iconPager Duty icon Escalate critical incidents import { Trigger } from "@trigger.dev/sdk"; import { intercom, linear, slack, pagerduty } from "@trigger.dev/integrations"; new Trigger({ id: "intercom-incident", name: "Intercom Incident", apiKey: "", 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({ name: "your.event" }) HTTP Endpoint Expose a HTTP endpoint to trigger your workflows with the method and path of your choice. httpEvent({ 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: "[email protected]" }) AWS Event Bridge Integrate with AWS Event Bridge to trigger workflows on your own Event Bridge events. eventBridge({ bus: "customer-support" }) Batteries included Debugging and visibility We provide a full history of all runs, so you can see exactly what happened. []Runs diagramRuns diagram Survives downtime Workflows pick up where they left off when your server or external APIs go down. []Retries diagramRetries diagram 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. Join our community and star our repo to stay up to date. Join our community Star us on GitHub 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? How can I self-host Trigger.dev? If you have any other questions, drop us an email at [email protected], and we will get back to you. What are you waiting for? Start creating workflows in your codebase now. Get started for free- []Trigger dev logoTrigger dev logo PRODUCT DocsExamplesPricing COMPANY PrivacyTerms COMMUNITY GitHubDiscordTwitterLinkedIn CONTACT Get in touchSchedule a call Copyright (c) 2023 Trigger.dev. All rights reserved. From the makers of JSON Hero.