Good Webhooks

Database adapters

Which Better Auth adapters the plugin is verified against, what the tests cover, and what they do not.

The plugin stores endpoints through Better Auth's public adapter interface, so it works with the adapter you already use. Delivery never queries the plugin's table directly. The baseline is Better Auth 1.7.7 on Node.js 24.

Short version: SQLite, PostgreSQL, MySQL, MongoDB, SQL Server, libSQL, Cloudflare D1, Drizzle, and Prisma are all tested against real databases. SQL Server needs a UTF-8 collation.

Verified profiles

Each profile runs against a real database, generates and applies the schema, renames the model and fields, and exercises the repository. No in-memory fake adapter is used.

Database or adapterTest profileID modes
SQLiteNode.js DatabaseSyncDefault, serial, UUID
PostgreSQL 16Native Kysely adapterDefault, serial, UUID
MySQL 8.4Native Kysely adapterDefault, serial, UUID
MongoDB 8Native MongoDB adapter, transactions disabledDefault ObjectId, UUID
SQL Server 2022Native Kysely adapter, UTF8 collationDefault, serial, UUID
libSQLLocal libSQL client through KyselyDefault, serial, UUID
Cloudflare D1Local Miniflare/workerd bindingDefault, serial, UUID
DrizzlePostgreSQL, schema generation and drizzle-kit pushDefault, serial, UUID
PrismaPostgreSQL, schema generation and db pushDefault, serial, UUID

The matrix checks concurrent creates competing for the last endpoint slots, complete enumeration of 1,000 endpoints regardless of adapter page size, concurrent revision-guarded updates with one winner, atomic secret and expiry writes, deletion with slot reuse, 100 subscriptions of maximum-length names, and maximum-length Unicode scopes, URLs, and descriptions.

SQL Server needs a UTF8 collation

Better Auth generates varchar columns. A legacy non-UTF8 collation corrupts Unicode scope IDs, URLs, and descriptions. The matrix uses Latin1_General_100_CI_AS_SC_UTF8.

Not covered

Bun's SQLite, hosted D1, remote Turso, MongoDB replica-set transactions, and Drizzle or Prisma on databases other than PostgreSQL have not been exercised. Passing the matrix is not a deployment or performance certification. Apply schema changes with your usual migration workflow before serving requests.

How storage works

You only need this when reading the generated schema or debugging an adapter.

Run the matrix yourself

From the repository root:

pnpm --filter good-webhooks test:adapters libsql,d1
pnpm --filter good-webhooks test:adapters postgres,mysql,mongodb,mssql,drizzle,prisma

Server profiles read BA_MATRIX_POSTGRES_URL, BA_MATRIX_MYSQL_URL, BA_MATRIX_MONGODB_URL, and BA_MATRIX_MSSQL_URL, accept loopback hosts only, and create and drop a random database per run. See the contribution guide for the local service setup.

Upstream contracts

On this page