Changelog

New features, improvements, and fixes — most recent first.

June 2026v1.2.0
New

Contact Lists — import contacts from CSV, Excel (.xlsx/.xls), or public Google Sheets. Organise into named lists (Customers, Leads, VIPs). Send to a list directly from the Compose page.

New

Plan-based contact quotas — Free: 500 contacts / 3 lists. Starter: 2,500 / 10. Pro: 25,000 / 25. Scale: 250,000 / 100. Enterprise: 1,000,000 / 500.

New

Smart duplicate handling — self-duplicates and existing DB contacts are skipped for free and never consume quota slots. Partial imports fill available slots exactly, with a clear upgrade prompt for capped rows.

New

Google Sheets import proxy — paste a public sheet URL; ZidiMail fetches the CSV server-side, no OAuth required.

New

CSV import template — download a ready-to-fill contacts-import-template.csv from the import modal or the docs.

New

Integration guides — step-by-step docs for Next.js, Laravel, Django, and WordPress added to the blog.

New

llms.txt — added AI-readable product summary at /llms.txt to improve discoverability in ChatGPT, Perplexity, and similar tools.

Improved

Contact API is JWT-only — API keys cannot create, import, or delete contacts, preventing a leaked key from exfiltrating your audience.

Improved

SSRF protection on attachment URL fetching — private IPv4/IPv6 ranges, localhost, and DNS-resolving-to-private hosts are all blocked.

Improved

Import modal column guide — shows which CSV/sheet columns are expected (email required, name optional) with a download template link.

Improved

Docs expanded — Contact lists and Importing contacts sections added with plan quota table, dedup algorithm walkthrough, and Google Sheets step-by-step.

Fixed

Body limit middleware ordering — route-specific upload caps (55 MB for attachments, 2 MB for contact import) now correctly override the global 2 MB default.

May 2026v1.1.0
New

Team member invites — owners can now invite colleagues from Settings → Team Members. Invites expire after 7 days.

New

Password change — update your password directly from Settings without going through the forgot-password flow.

New

Idempotent email sends — pass X-Idempotency-Key to safely retry sends without duplicating messages.

New

Bounce & complaint rate alerts — automatic email to the admin when platform bounce rate exceeds 4% or complaint rate exceeds 0.08%.

New

Health endpoint — GET /health now checks both database and Redis connectivity and returns 503 if either is down.

New

SPF lookup warning — adding a domain now warns if your SPF record has too many DNS lookups (the RFC limit is 10).

New

Webhook delivery history — each webhook endpoint now shows recent deliveries with a one-click retry button for failures.

Improved

Webhook retry logic — failed deliveries now use exponential backoff (3 attempts) via BullMQ.

Improved

Error tracking — Sentry integrated across dashboard and API with source maps deleted after upload.

Improved

Domain verification — background job re-checks all domains every 4 hours and emails you when status changes.

Fixed

Duplicate sends on client retry — concurrent requests with the same idempotency key now serialize correctly via Redis locking.

April 2026v1.0.0
New

Initial launch — transactional email API with SPF, DKIM, and DMARC auto-configured on domain add.

New

Domain verification — add your sending domain and get step-by-step DNS setup instructions.

New

API key management — create, label, and revoke API keys per organization.

New

ZidiGuard suppression list — hard bounces and spam complaints are automatically suppressed to protect your domain reputation.

New

Webhooks — subscribe to email.sent, email.delivered, email.bounced, email.complained, email.opened, and email.clicked events.

New

Sandbox mode — all new accounts start in sandbox so you can test your integration safely.

New

Daily & monthly sending limits — enforced per organization with owner email alerts at 80% and 100% usage.

New

Analytics dashboard — delivery rate, bounce rate, complaint rate, and daily send volume charts.

New

Account deactivation — self-service with 30-day recovery window before permanent deletion.

New

Suspension appeal — organizations can submit a formal appeal with supporting documents if suspended.

Have a feature request? Email us