BaxMail/Parse Server

Parse Server SDK

Email adapter for Parse Server — verification, password reset, and transactional mail via BaxMail

Installation

npm install @baxcloud/parse-server-baxmail parse-server

Your BaxCloud API key must live on Parse Server only — never in client apps. Enable BaxMail and verify a sending domain in the dashboard before sending.

Environment

BAXCLOUD_PROJECT_ID=your-project-id
BAXCLOUD_API_KEY=your-api-key
BAXMAIL_SENDING_DOMAIN=yourdomain.com   # optional — verified sending domain

Parse Server config

1const { ParseServer } = require('parse-server');
2
3new ParseServer({
4  databaseURI: process.env.DATABASE_URI,
5  appId: process.env.PARSE_APP_ID,
6  masterKey: process.env.PARSE_MASTER_KEY,
7  serverURL: process.env.PARSE_SERVER_URL,
8  appName: 'My App',
9
10  verifyUserEmails: true,
11  emailVerifyTokenValidityDuration: 2 * 60 * 60,
12
13  emailAdapter: {
14    module: '@baxcloud/parse-server-baxmail',
15    options: {
16      sendingDomain: 'yourdomain.com',
17      fromName: 'My App',
18    },
19  },
20});

Optional: pass credentials in emailAdapter.options instead of env vars — projectId, apiKey, from, fromName, and sendingDomain.

1emailAdapter: {
2  module: '@baxcloud/parse-server-baxmail',
3  options: {
4    projectId: process.env.BAXCLOUD_PROJECT_ID,
5    apiKey: process.env.BAXCLOUD_API_KEY,
6    sendingDomain: 'yourdomain.com',
7    fromName: 'My App',
8  },
9},

MailAdapter methods

Implements the Parse Server MailAdapter contract:

  • sendMail — generic mail (required)
  • sendVerificationEmail — email verification links
  • sendPasswordResetEmail — password reset links

When verification and reset methods are provided, Parse Server uses them instead of plain-text defaults from UserController.

How it works

  1. User signs up or requests password reset through Parse Server.
  2. Parse Server calls this adapter with the verification or reset link.
  3. The adapter sends via BaxMail from your verified domain.
  4. Delivery events appear in BaxMail logs and webhooks.

Custom factory

For a local adapter file or shared defaults:

1const { createBaxMailParseEmailAdapter } = require('@baxcloud/parse-server-baxmail/create');
2
3module.exports = createBaxMailParseEmailAdapter({
4  projectId: process.env.BAXCLOUD_PROJECT_ID,
5  apiKey: process.env.BAXCLOUD_API_KEY,
6  sendingDomain: 'yourdomain.com',
7});
1emailAdapter: {
2  module: './adapters/baxmail-email.js',
3},

Error codes

Failed BaxMail API calls return a structured JSON envelope. Use error.code for programmatic handling and error.details.helpUrl to link users to the right dashboard page.

{
  "success": false,
  "error": {
    "code": "BAXVERIFY_FEATURE_DISABLED",
    "message": "BaxVerify is not enabled for this project. Enable it under Project → Features.",
    "details": {
      "projectId": "your-project-id",
      "helpUrl": "https://baxcloud.tech/dashboard/projects/your-project-id?tab=features",
      "docsUrl": "https://baxcloud.tech/docs/baxverify"
    }
  },
  "timestamp": "2026-06-06T12:00:00.000Z",
  "path": "/v1/auth/sms/send"
}
CodeHTTPMessageWhat to do
BAXMAIL_FEATURE_DISABLED403BaxMail is not enabled for this project.Enable BaxMail under Project → Features (details.helpUrl).
BAXMAIL_PLAN_NOT_INCLUDED403Your plan does not include BaxMail.Upgrade your subscription (details.helpUrl → Billing).
BAXMAIL_API_KEY_SCOPE403API key lacks BaxMail scope.Create or edit an API key with BaxMail enabled.
BAXMAIL_SENDER_NOT_CONFIGURED400No sender email configured.Verify a domain and set a default from address in BaxMail Setup (details.helpUrl).
BAXMAIL_DOMAIN_NOT_VERIFIED403Sending domain is not verified.Add DNS records and verify the domain in BaxMail Setup (details.helpUrl).
BAXMAIL_PROVIDER_NOT_CONFIGURED400Email provider is not configured on the platform.Contact BaxCloud support.
BAXMAIL_SEND_FAILED400Failed to send email.Check domain verification, from address, and recipient.
BAXMAIL_RECIPIENT_SUPPRESSED400Recipient is suppressed after a hard bounce.Do not send to this address, or remove it from the project suppression list.
BAXMAIL_PROJECT_INACTIVE403Project is not active.Reactivate the project in the dashboard.
BAXMAIL_PROJECT_HEADER_REQUIRED400X-Project-Id header is required.Send X-Project-Id with every request.
BAXMAIL_API_KEY_PROJECT_MISMATCH403API key does not belong to this project.Use an API key created for the same project as X-Project-Id.
1// Errors surface when Parse sends mail — check Parse Server logs
2// Common codes: BAXMAIL_DOMAIN_NOT_VERIFIED, BAXMAIL_SENDER_NOT_CONFIGURED

Related

Node.js SDK — BaxMail from your own API routes

BaxMail docs — setup, domains, and API reference