Skip to content

feat(providers): add Pulsenote - #13487

Open
gpabijan88 wants to merge 1 commit into
nextauthjs:mainfrom
gpabijan88:feat/pulsenote-provider
Open

feat(providers): add Pulsenote#13487
gpabijan88 wants to merge 1 commit into
nextauthjs:mainfrom
gpabijan88:feat/pulsenote-provider

Conversation

@gpabijan88

Copy link
Copy Markdown

☕️ Reasoning

Adds Pulsenote as a built-in email provider. It is an email API with EU data residency, and magic links are its primary use case — so the built-in list is where people would look for it.

The implementation follows the existing HTTP email providers (resend.ts, forwardemail.ts) rather than the Nodemailer one: a single fetch, no new dependency.

One addition worth flagging. Pulsenote sends only from a domain the account has verified. Until one is verified, the API accepts and renders a message but does not deliver it, returning sandbox: true. Left unchecked, sendVerificationRequest would resolve, Auth.js would report success, and the user would wait indefinitely for a link that was never sent — with nothing in any log to explain it. The provider throws instead, with an actionable message.

🧢 Checklist

  • Documentation
  • Tests
  • Ready to be merged

Documented with JSDoc in the same file, per the contributing guide, rather than the @todo Document this the neighbouring email providers currently carry. Kept to what an email provider needs — no OAuth boilerplate.

No tests: the existing email providers (resend, forwardemail, postmark, sendgrid) have none, so this follows the established pattern. Happy to add them if you would prefer.

Following the contributing guide

  • Config at packages/core/src/providers/pulsenote.ts, named default export
  • JSDoc documentation in the same file
  • Logo at docs/public/img/providers/pulsenote.svg
  • Added to the drop-down in .github/ISSUE_TEMPLATE/2_bug_provider.yml, in alphabetical position

provider-types.ts is generated and gitignored, so it is not committed — pnpm providers picks the new file up on its own; verified locally.

Verification

Built and type-checked inside this monorepo: pnpm css && pnpm providers followed by tsc --noEmit -p packages/core/tsconfig.json reports no errors, and the generated provider-types.ts contains pulsenote.

Disclosure: I maintain Pulsenote. Happy to adjust anything to fit your conventions, or to close this if built-in providers are not being expanded right now.

Pulsenote is an email API with EU data residency. Magic links are its main use
case, so a built-in provider makes it discoverable where people actually look.

Follows the shape of the other HTTP email providers (Resend, Forward Email), with
one addition: Pulsenote accepts and renders a message without delivering it when
the account has no verified sending domain, so the provider throws in that case.
Left unchecked, sign-in would report success while the user waits for a link that
was never sent.

Documented with JSDoc rather than @todo, per the contributing guide.
@vercel

vercel Bot commented Aug 25, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
auth-docs Ready Ready Preview Aug 25, 2026 8:39pm
1 Skipped Deployment
Project Deployment Actions Updated (UTC)
next-auth-docs Ignored Ignored Preview Aug 25, 2026 8:39pm

Request Review

@vercel

vercel Bot commented Aug 25, 2026

Copy link
Copy Markdown

@gpabijan88 is attempting to deploy a commit to the authjs Team on Vercel.

A member of the Team first needs to authorize it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

core Refers to `@auth/core` providers

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant