Skip to content
Skip to content
Goodspeed

Connect Resend to your Goodspeed app

Transactional email delivered from Supabase Edge Functions: welcome sequences, password resets, and notification digests. Goodspeed wires Resend into every app that needs it at generation time, so you start with a working integration, not a blank config and a documentation tab.

WHAT GETS WIRED IN

Built into every Resend build

Every app Goodspeed generates with Resend includes these wired integrations from the first build. No manual setup required.

ItemDescriptionStrength
supabase/functions/send-email/handler.ts accepts a recipient, subject, and HTML body and calls the Resend API for deliverysupabase/functions/send-email/handler.ts accepts a recipient, subject, and HTML body and calls the Resend API for delivery01
RESEND_API_KEY stored as a Supabase secret so it is never bundled into the app or exposed to client codeRESEND_API_KEY stored as a Supabase secret so it is never bundled into the app or exposed to client code02
Email HTML generated inline per email type (welcome, reset, digest) using app name and branding from function environment variablesEmail HTML generated inline per email type (welcome, reset, digest) using app name and branding from function environment variables03
Supabase Auth email overrides route confirm-signup and reset-password flows through the send-email Edge FunctionSupabase Auth email overrides route confirm-signup and reset-password flows through the send-email Edge Function04

Source: gas-template repository · transactional-email

REAL GENERATED CODE

A snippet from a Resend integration the pipeline ships

This pattern comes directly from the gas-template codebase. The studio generates Resend integration code like this for every app that includes it, not a placeholder you have to fill in yourself.

  1. Edge Function email

    // supabase/functions/send-email/handler.ts
    import { Resend } from 'npm:resend';
    
    const resend = new Resend(Deno.env.get('RESEND_API_KEY'));
    
    Deno.serve(async (req) => {
      const { to, subject, html } = await req.json();
      const { error } = await resend.emails.send({
        from: 'Goodspeed <noreply@goodspeed.app>',
        to, subject, html,
      });
      if (error) return new Response(JSON.stringify(error), { status: 400 });
      return new Response(JSON.stringify({ ok: true }));
    });
GDaily Allergens

Today's log

Gluten
Tree nuts
Shellfish
Dairy
HomeScanLogProfile

START WITH RESEND

Your Resend integration, generated