Emailens
Guides

Migration from Litmus

Switching from Litmus or Email on Acid to Emailens for email QA and compatibility testing.

Why switch

Emailens provides the same core email QA capabilities at a fraction of the cost:

FeatureLitmusEmail on AcidEmailens
Per-client previewsYesYesYes (13 clients)
CSS properties tracked~100~100250+ (auto-synced from caniemail)
CSS compatibility analysisLimitedLimitedDetailed per-property
Compatibility scoresNoNo0-100 per client
Dark mode simulationYesYesYes
DNS deliverability checkNoNoYes (SPF/DKIM/DMARC/MX/BIMI)
Content hygiene analysisBasicYesYes (15+ heuristic rules)
Code fix suggestionsNoNoYes (framework-native)
CI/CD lint commandNoNoYes (structured exit codes)
REST APIYesYesYes
MCP server (AI integration)NoNoYes
GitHub ActionNoNoYes
Starting price$99/mo$74/mo$0 (free tier)

Migration steps

1. Replace screenshot-based testing

Litmus and Email on Acid primarily use screenshots from real email clients. Emailens uses CSS-level analysis plus browser-rendered screenshots:

import { transformForAllClients, analyzeEmail } from "@emailens/engine";

const transforms = transformForAllClients(html);
const warnings = analyzeEmail(html);

The transforms object contains per-client HTML after CSS rewriting, and warnings contains actionable compatibility issues with fix suggestions.

2. Update CI/CD pipelines

If you used Litmus or Email on Acid APIs in CI, replace them with the Emailens GitHub Action:

- uses: emailens/action@v1
  with:
    html-file: emails/welcome.html
    threshold: 80

Or use the REST API directly:

curl -X POST https://emailens.dev/api/preview \
  -H "Authorization: Bearer $EMAILENS_API_KEY" \
  -H "Content-Type: application/json" \
  -d "{\"html\": \"$(cat emails/welcome.html)\"}"

3. Use code fixes instead of manual debugging

Emailens provides machine-readable fix suggestions for every compatibility warning:

import { analyzeEmail, getCodeFix } from "@emailens/engine";

const warnings = analyzeEmail(html);
for (const warning of warnings) {
  const fix = getCodeFix(warning);
  if (fix) {
    console.log(`${warning.property}: ${fix.description}`);
    console.log(`  Before: ${fix.before}`);
    console.log(`  After:  ${fix.after}`);
  }
}

4. Integrate with AI workflows

Connect the MCP server to Claude for conversational email QA — something not available with Litmus or Email on Acid.

On this page