This quick start guide will get you setup with and Supabase inside a new Next.js project.

Preparing Supabase & Next.js

Create an account with Supabase or login if you have one already:

Once on the dashboard, click the ‘New project’ button to create a new project in Supabase.

create a new project

From inside your new project, click the ‘SQL Editor’ button in the side menu and then click the “User Management Starter” from the Quickstarts menu:

Feel free to choose another starter or use hand-crafted tables, anything will work for purposes of this quick start

management starter

Over in a terminal window, create a new Next.js app with Supabase support:

npx create-next-app@latest -e with-supabase my-supabase-app
cd my-supabase-app

Next, rename the .env.local.example file to .env.local and add your Supabase URL and public key:


You can find your API keys in Supabase by clicking the cog (⚙️) icon in the left menu and selecting ‘API’ from the Project Settings menu:

find your api keys

Finally, in the terminal, go ahead and Generate the Typescript types now as we’ll be using them shortly:

You may need to login to the supabase CLI first. For more info see the supabase login docs

npx supabase gen types typescript --project-id <your project id> --schema public --schema auth > supabase-types.ts


Now it’s time to create a account. You can either:

Once you’ve created an account, follow the steps in the app to:

  1. Complete your account details.
  2. Create your first Organization and Project.

Next, initialize in the project by running this command:

npx init

Edit the middleware.ts file and add the following code to exclude the endpoint from the Supabase auth middleware:

// Match all routes other than /api/trigger
export const config = {
  matcher: ["/((?!api/trigger).*)"],

Add the Supabase Integration

Add the Supabase package to your project by running this command:

npm add

Edit the jobs/examples.ts file and replace with the following code:

import { client } from "@/trigger";
import { Database } from "@/supabase-types";
import { SupabaseManagement } from "";

// Use OAuth to authenticate with Supabase Management API
const supabaseManagement = new SupabaseManagement({
  id: "supabase-management",

// Use the types we generated earlier
const db = supabaseManagement.db<Database>(process.env.NEXT_PUBLIC_SUPABASE_URL!);

  id: "supabase-test-job",
  name: "My Supabase Test Job",
  version: "1.0.0",
  trigger: db.onInserted({
    schema: "auth",
    table: "users",
  run: async (payload, io, ctx) => {},

Authenticate to the Supabase Management API

The Supabase Triggers use the Supabase Management API to register the triggers in your Supabase projects.

You can authenticate using a Personal Access Token or via the new Supabase Management API OAuth implementation, which we are using in this example.

Login to and navigate to the project “Integrations” page. Select the “Supabase Management” integration and configure it like so:


Authorize access to your Supabase project and then you’ll be ready to run the Job.


Run and test the Job

Now you are ready to run the Next.js app and test the Job. Run the following command to start the Next.js app:

npm run dev

And then in a separate terminal, run the following command to start the agent:

npx dev

Head back to your Supabase Dashboard -> Auth, and create a new user (keep “Auto Confirm User?” checked)

create user

Then navigate over to your project dashboard and you should see the job running.

job running

What’s next?

Checkout our fully-functioning Supabase Onboarding Email example to learn how to build an email drip campaign in 62 lines of code.