Email audit
Review message quality, links, images, and sender-facing risks before or after launch.
Email audit is for teams that need a practical quality review before messages reach a large audience. It helps answer whether an email is ready from a content and operational perspective, not just whether the HTML technically exists.
What an email audit should answer
- Are the important links valid and reachable?
- Are the images loading the way we expect?
- Does the message appear complete and trustworthy?
- Are there obvious issues that should stop a release or campaign launch?
When to run audits
Use email audit:
- before a release that changes transactional email templates
- before a marketing or lifecycle campaign goes wide
- when QA needs a repeatable quality review step
- after a captured campaign sample reveals something suspicious
Recommended workflow
- Capture or select the message you want to review.
- Check links, images, and visible content quality.
- Review any issues that would affect trust, conversion, or support load.
- Re-run the audit after fixes before approving the send.
API examples
Use these endpoint-focused flows when you want to automate audits in CI or release checks.
Send an email and audit it by email ID
First send a sample email and wait for capture:
await inboxController.sendEmailAndConfirm({
inboxId: inbox.id!,
sendEmailOptions: {
to: [inbox.emailAddress!],
subject,
isHTML: true,
body: '<html><body><h1>Email audit smoke test</h1><p>This message checks email audit endpoints.</p></body></html>'
}
});
const email = await waitForController.waitForLatestEmail({
inboxId: inbox.id,
timeout: 60_000,
unreadOnly: true
});
Then run a one-shot analysis and persist it:
const oneShotAudit = await emailController.checkEmailAudit1({
emailId: email.id!
});
const persistedAudit = await emailController.createEmailAuditForEmail({
emailId: email.id!
});
Create persistent audits directly from content
When you want to evaluate template payloads without first storing an email, create audits directly:
const baselineAudit = await emailAuditController.createEmailAudit({
createEmailAuditOptions: {
subject: baselineSubject,
fromAddress: 'alerts@example.com',
recipient: 'qa@example.com',
htmlBody:
'<html><body><h1>Baseline</h1><p>All systems nominal.</p></body></html>',
textBody: 'Baseline audit'
}
});
const currentAudit = await emailAuditController.createEmailAudit({
createEmailAuditOptions: {
subject: currentSubject,
fromAddress: 'alerts@example.com',
recipient: 'qa@example.com',
htmlBody:
'<html><body><h1>Current</h1><p>All systems nominal with updates.</p><a href="https://www.mailslurp.com">MailSlurp</a></body></html>',
textBody: 'Current audit'
}
});
List recent audits and fetch one by ID
Use list and get operations to power dashboards or release review screens:
const recentAudits = await emailAuditController.getEmailAudits({
since: new Date(Date.now() - 10 * 60 * 1000).toISOString(),
limit: 20
});
const fetchedAudit = await emailAuditController.getEmailAudit({
auditId: currentAudit.id
});
Compare two audits
Compare baseline vs current versions to quantify quality drift:
const comparison = await emailAuditController.compareEmailAudits({
auditId: baselineAudit.id,
otherAuditId: currentAudit.id
});
Delete obsolete audits
Clean up outdated records when they are no longer needed:
await emailAuditController.deleteEmailAudit({
auditId: baselineAudit.id
});
Best paired tools
- Device previews when rendering differences matter
- Campaign Probe when you want to inspect live campaign samples
- Email compatibility when client support questions are central
- Deliverability tests when you also need cohort-level delivery validation
Who uses this most
- QA teams approving release changes
- lifecycle and CRM teams checking campaign quality
- platform teams reviewing high-risk transactional template updates