Skip to content
DocsGuide

Beginner guide

A practical walkthrough for teams setting up Sendix for the first time: billing, domains, DNS, inbound receiving, API sends, the Node SDK, and common errors.

How Sendix fits together

Sendix is an email platform for applications. Your app calls the API, Sendix checks plan limits and domain authentication, then a worker signs and delivers the message. The dashboard is where you create keys, verify DNS, inspect logs, and receive inbound mail.

  • PlanYour plan decides monthly sends, domain count, webhooks, templates, retention, and rate limits.
  • DomainA verified domain proves that Sendix is allowed to send mail using your brand.
  • API keyAPI keys authenticate your app. Scopes decide which resources the key can access.
  • EmailSendix queues the message, signs it with DKIM, routes by recipient provider, and records events.
  • InboundMX records let Sendix receive mail for the same domain and store it in your workspace.
  • EventsLogs and webhooks show queued, accepted, opened, clicked, bounced, complained, and received events.
The short version
Create an account, choose the right plan, add a domain, publish DNS records, create an API key, send one test email, then enable webhooks and inbound receiving when you need them.

Plans and limits

Free workspaces are intentionally small. They are useful for testing, but production teams usually need Pro because it raises domain, send, webhook, template, and rate limits.

Free
  • 1 verified domain
  • 25,000 emails per month
  • 1 webhook
  • 7-day logs
Pro
  • 10 verified domains
  • 50,000 emails per month
  • 10 webhooks
  • 90-day logs

After a successful upgrade, Sendix updates the subscription and mirrors the plan into the account record. Quota checks use the active subscription first, so domain limits should change immediately after the payment is completed.

When an upgrade looks stuck
Refresh the billing page and check whether the checkout is pending, failed, expired, or active. If the provider webhook was delayed, the return page can still finalize the checkout by asking the provider for the latest payment status.

Sending domains

A sending domain is the domain in the From address, such as [email protected]. Receivers trust it only after SPF and DKIM pass.

  1. 1

    Add the domain

    Open Domains - Add domain, enter the root domain, and keep sending enabled.

  2. 2

    Copy DNS records

    Sendix generates records for SPF, DKIM, DMARC, Return-Path, and tracking. Copy the exact values shown in the dashboard; DKIM selectors are unique per domain.

  3. 3

    Wait for propagation

    Some DNS providers publish immediately, others take 10-30 minutes. During that window, the dashboard can show a pending state even when the record was entered correctly.

  4. 4

    Verify before sending

    SPF and DKIM must pass before production sending is accepted. DMARC and Return-Path are shown separately because they affect reporting, bounce handling, and deliverability.

DNS records you will see

RecordTypeHostValue
SPF
Authorizes Sendix to send mail for your domain.
TXTexample.comv=spf1 include:mail.sendix.dev ~all
DKIM
Publishes the public key used to verify Sendix signatures.
TXTs202605xxxxxx._domainkey.example.comv=DKIM1; k=rsa; p=...
DMARC
Tells receivers how to handle authentication failures.
TXT_dmarc.example.comv=DMARC1; p=quarantine; pct=100; rua=mailto:[email protected]; aspf=r; adkim=r
Return-Path
Routes bounces back to Sendix so suppression and analytics work.
CNAMEbounce.example.combounce.sendix.dev
Tracking
Uses your domain for open and click tracking links.
CNAMEtrack.example.comtrack.sendix.dev

Inbound receiving

Inbound receiving lets Sendix accept mail for addresses on your domain. Use it for reply handling, support aliases, product workflows, or automation triggers.

  1. 1

    Enable receiving on the domain

    In the domain detail page, turn on receiving. Sendix first checks that the inbound SMTP receiver is healthy.

  2. 2

    Publish MX records

    Add the MX records shown by the dashboard. If receiving is enabled but MX does not point to Sendix, incoming mail will still go to your old mail provider.

  3. 3

    Create forwarding rules

    Use exact rules like [email protected] for one mailbox, or catch-all rules like *@example.com when every address should be accepted.

  4. 4

    Read received mail

    Incoming messages appear in Inbox with sender, recipient, subject, received time, attachments, and forwarding events.

RecordTypeHostValuePriority
MX
Required when receiving is enabled for a domain.
MXexample.commail.sendix.dev10
MX
Optional secondary MX if your workspace shows one.
MXexample.combackup mail host, when configured20
MX changes can move real mail
If this domain already receives company email, do not replace MX records blindly. Add a subdomain first, such as inbound.example.com, or confirm your forwarding plan before changing production MX records.

Send with the API

The API is REST + JSON. Create an API key with email:send, keep it secret, and send messages to https://sendix.dev/api/v1/emails.

POST/emails
curl -X POST https://sendix.dev/api/v1/emails \
  -H "Authorization: Bearer $SENDIX_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: welcome-user-123" \
  -d '{
    "from": "Acme <[email protected]>",
    "to": ["[email protected]"],
    "subject": "Welcome to Acme",
    "html": "<p>Your account is ready.</p>",
    "text": "Your account is ready.",
    "tags": [{ "name": "campaign", "value": "welcome" }]
  }'
  • Use idempotencySet one stable key for retries so network failures do not create duplicate emails.
  • Send from a verified domainThe domain in the From address must belong to your workspace and pass SPF/DKIM.
  • Watch logsThe dashboard shows queued, accepted by MX, opened, clicked, bounced, and failed events.
  • Respect rate limitsUse Retry-After or retry_after_sec when Sendix returns a rate limit response instead of retrying immediately.

Node SDK

The SDK is a small wrapper around the same API. It keeps your code cleaner, but every request still maps to a documented endpoint.

npm install sendix-node
import { Sendix } from 'sendix-node';

const sendix = new Sendix({ apiKey: process.env.SENDIX_API_KEY! });

const email = await sendix.emails.send({
  from: 'Acme <[email protected]>',
  to: ['[email protected]'],
  subject: 'Welcome to Acme',
  html: '<p>Your account is ready.</p>',
  text: 'Your account is ready.',
  tags: [{ name: 'campaign', value: 'welcome' }],
  idempotency_key: 'welcome-user-123',
});

console.log(email.id);
SDK or raw HTTP?
Use the SDK inside Node/TypeScript apps. Use raw HTTP for other languages, serverless functions, CI scripts, or when you want full control over retries and logging.

Common errors

Sendix errors are JSON objects with a machine-readable code. Treat the code as stable and show the message to operators when it helps explain the fix.

{
  "error": {
    "code": "domain_quota_exceeded",
    "message": "Domain limit of 1 reached for plan free",
    "details": {
      "plan": "free",
      "limit": 1,
      "used": 1
    }
  }
}
CodeMeaningFix
domain_quota_exceededYour current plan has no remaining domain slots.Upgrade the plan or remove an unused domain.
domain_auth_brokenSPF or DKIM is still missing or mismatched.Open the domain detail page, copy the latest records, and run Verify again.
rate_limit_exceededThe request bucket is temporarily full.Retry after the Retry-After header or retry_after_sec detail and avoid burst loops.
idempotency_key_reusedThe same idempotency key was reused with a different request body.Use one idempotency key per logical send and keep the body identical on retries.
inbound_receiver_unhealthyReceiving cannot be enabled because the SMTP receiver health check failed.Wait for the receiver to recover or contact support before changing MX records.

Launch checklist

Use this before pointing real production traffic at Sendix.

  • The workspace is on the correct plan for expected domains and volume.
  • SPF and DKIM are verified for every sending domain.
  • Return-Path and tracking records are published for deliverability and analytics.
  • API keys are scoped and stored outside source control.
  • The first test email is visible in Logs and shows the expected final status.
  • Webhooks are signed, verified by your app, and replayed successfully in a test.
  • Inbound MX records are published only for domains or subdomains that should receive mail at Sendix.
  • Forwarding rules are tested with a real inbound message.