Byg dit eget plugin

6 min læsning · Opdateret 21. april 2026

Et Maili-plugin er en serverløs HTTP-endpoint, der eksporterer en httpHandler. Med @maili/plugin-sdk kan du skrive det i TypeScript på få minutter og deploye til Vercel, Supabase Edge Functions eller enhver anden HTTPS-vært. Pluginnet registreres i plugins-tabellen med et manifest og et entrypoint_url.

Minimal handler

Et plugin består af to filer: et manifest og en handler.

import type { PluginManifest } from "@maili/plugin-sdk";

export const manifest: PluginManifest = {
  slug: "mit-plugin",
  name: "Mit plugin",
  description: "Beskrivelse af hvad plugin'et gør.",
  auth: { type: "apiKey" },
  hooks: ["onDraft"],
};
import { createPluginHttpHandler, type PluginHandler } from "@maili/plugin-sdk";
import { manifest } from "./manifest.js";

const handler: PluginHandler = async (ctx) => {
  // ctx.email, ctx.inbox, ctx.config, ctx.secrets
  return { context: "### Min kontekst\nNoget nyttigt info." };
};

export const httpHandler = createPluginHttpHandler(handler);
export { manifest };

PluginContext

Handleren får en PluginContext med al information om den aktuelle mail:

  • ctx.user — brugerens id.
  • ctx.inbox — indbakkens email og provider (gmail/outlook).
  • ctx.email — from, subject, bodyPlain, receivedAt.
  • ctx.config — brugerens konfiguration fra plugin-formularen.
  • ctx.secrets — krypterede hemmeligheder (API-nøgler, OAuth-tokens).

Returnér kontekst eller label-forslag

return {
  context: "### Slack-kontekst\nBrugeren har 3 åbne tråde i #support",
  suggestedLabels: [{ name: "Kundeservice" }],
};

Plugins må ikke throwe. Returnér altid et objekt — tomt hvis pluginnet ikke har noget at bidrage med.

Deploy

  • Vercel: eksporter httpHandler som default fra en /api/handler.ts.
  • Supabase Edge Functions: serve ved at kalde httpHandler inde i Deno.serve.
  • Cloudflare Workers, AWS Lambda, osv. — alle understøttes.

Registrer plugin'et ved at indsætte en række i plugins-tabellen med manifest og entrypoint_url. Kontakt hej@maili.dk for at få det listet i Mailis officielle plugin-galleri.

Ydelseskrav

  • Plugins skal svare inden for 5 sekunder.
  • Plugins må ikke kaste uopfangede fejl — returnér {} i stedet.
  • Begræns output til ca. 1000 tokens markdown, så promptbudgettet ikke sprænges.

Manglede der noget?

Skal du have hjælp til opsætning, eller har du andre spørgsmål, kan du skrive på kontakt@emaili.dk eller ringe på +45 52 22 66 13.