Triggering tasks from Supabase edge functions
This guide will show you how to trigger a task from a Supabase edge function, and then view the run in our dashboard.
Overview
Supabase edge functions allow you to trigger tasks either when an event is sent from a third party (e.g. when a new Stripe payment is processed, when a new user signs up to a service, etc), or when there are any changes or updates to your Supabase database.
This guide shows you how to set up and deploy a simple Supabase edge function example that triggers a task when an edge function URL is accessed.
Prerequisites
- Ensure you have the Supabase CLI installed
- Ensure TypeScript is installed
- Create a Trigger.dev account
- Create a new Trigger.dev project
Initial setup
Optional step 1: create a new Supabase project
You can create a new project by running the following command in your terminal using the Supabase CLI:
supabase init
If you are using VS Code, ensure to answer ‘y’ when asked to generate VS Code settings for Deno, and install any recommended extensions.
Optional step 2: create package.json and tsconfig.json files
If your project does not already have package.json
or/and tsconfig.json
files (e.g. if you are using Deno), create them manually and add them to your project root folder.
Both of these files are required for the Trigger.dev SDK to work correctly.
{
"devDependencies": {
// This should be the version of typescript you are using
"typescript": "^5.6.2"
}
}
{
"compilerOptions": {
"target": "esnext",
"module": "NodeNext",
"moduleResolution": "NodeNext",
"esModuleInterop": true,
"strict": true,
"outDir": "dist",
"skipLibCheck": true,
"lib": ["DOM", "DOM.Iterable"],
"noEmit": true
},
"include": ["./src/**/*.ts", "trigger.config.ts"]
}
Run the CLI `init` command
The easiest way to get started is to use the CLI. It will add Trigger.dev to your existing project, create a /trigger
folder and give you an example task.
Run this command in the root of your project to get started:
It will do a few things:
- Log you into the CLI if you’re not already logged in.
- Create a
trigger.config.ts
file in the root of your project. - Ask where you’d like to create the
/trigger
directory. - Create the
/trigger
directory with an example task,/trigger/example.[ts/js]
.
Install the “Hello World” example task when prompted. We’ll use this task to test the setup.
Run the CLI `dev` command
The CLI dev
command runs a server for your tasks. It watches for changes in your /trigger
directory and communicates with the Trigger.dev platform to register your tasks, perform runs, and send data back and forth.
It can also update your @trigger.dev/*
packages to prevent version mismatches and failed deploys. You will always be prompted first.
Perform a test run using the dashboard
The CLI dev
command spits out various useful URLs. Right now we want to visit the Test page
You should see our Example task in the list
, select it. Most tasks have a “payload” which you enter in the JSON editor , but our example task doesn’t need any input.Press the “Run test” button
.View your run
Congratulations, you should see the run page which will live reload showing you the current state of the run.
If you go back to your terminal you’ll see that the dev command also shows the task status and links to the run log.
Create a new Supabase edge function and deploy it
Create a new Supabase edge function
We’ll call this example edge-function-trigger
.
In your project, run the following command in the terminal using the Supabase CLI:
supabase functions new edge-function-trigger
Update the edge function code
Replace the placeholder code in your edge-function-trigger/index.ts
file with the following:
// Setup type definitions for built-in Supabase Runtime APIs
import "jsr:@supabase/functions-js/edge-runtime.d.ts";
// Import the Trigger.dev SDK - replace "<your-sdk-version>" with the version of the SDK you are using, e.g. "3.0.0". You can find this in your package.json file.
import { tasks } from "npm:@trigger.dev/[email protected]/v3";
// Import your task type from your /trigger folder
import type { helloWorldTask } from "../../../src/trigger/example.ts";
// 👆 **type-only** import
Deno.serve(async () => {
await tasks.trigger<typeof helloWorldTask>(
// Your task id
"hello-world",
// Your task payload
"Hello from a Supabase Edge Function!"
);
return new Response("OK");
});
type
from the task.Tasks in the trigger
folder use Node, so they must stay in there or they will not run,
especially if you are using a different runtime like Deno. Also do not add ”npm:
” to imports
inside your task files, for the same reason.
Deploy your edge function using the Supabase CLI
You can now deploy your edge function with the following command in your terminal:
supabase functions deploy edge-function-trigger --no-verify-jwt
--no-verify-jwt
removes the JSON Web Tokens requirement from the authorization header. By
default this should be on, but it is not required for this example. Learn more about JWTs
here.
Follow the CLI instructions and once complete you should now see your new edge function deployment in your Supabase edge functions dashboard.
There will be a link to the dashboard in your terminal output, or you can find it at this URL:
https://supabase.com/dashboard/project/<your-project-id>/functions
your-project-id
with your actual project ID.Set your Trigger.dev prod secret key in the Supabase dashboard
To trigger a task from your edge function, you need to set your Trigger.dev secret key in the Supabase dashboard.
To do this, first go to your Trigger.dev project dashboard and copy the prod
secret key from the API keys page.
Then, in Supabase, select your project, navigate to ‘Project settings’
, click ‘Edge functions’ in the configurations menu, and then click the ‘Add new secret’ button.Add TRIGGER_SECRET_KEY
prod
secret key.
Deploy your task and trigger it from your edge function
Deploy your 'Hello World' task
Next, deploy your hello-world
task to Trigger.dev cloud.
Trigger a prod run from your deployed edge function
To do this all you need to do is simply open the edge-function-trigger
URL.
https://supabase.com/dashboard/project/<your-project-id>/functions
your-project-id
with your actual project ID.In your Supabase project, go to your Edge function dashboard, find edge-function-trigger
, copy the URL, and paste it into a new window in your browser.
Once loaded you should see ‘OK’ on the new screen.
The task will be triggered when your edge function URL is accessed.
Check your cloud.trigger.dev dashboard and you should see a succesful hello-world
task.
Congratulations, you have run a simple Hello World task from a Supabase edge function!
Learn more about Supabase and Trigger.dev
Full walkthrough guides from development to deployment
Edge function hello world
Learn how to trigger a task from a Supabase edge function when a URL is visited.
Edge function database webhooks
Learn how to trigger a task from a Supabase edge function when an event occurs in your database.
Task examples with code you can copy and paste
Was this page helpful?