Best practices for ensuring your transactional emails reach the inbox. Covers authentication (SPF, DKIM, DMARC), sender reputation, content guidelines, and white-label deliverability.
Deliverability is the ability to get your emails into recipients’ inboxes rather than spam folders. Good deliverability requires proper authentication, quality content, and maintaining a good sender reputation.
import arkfrom ark import Arkclient = Ark()def send_to_valid_recipients(recipients, content): valid = [] for recipient in recipients: try: client.suppressions.retrieve(recipient) # Email is suppressed, skip it except ark.NotFoundError: # Not suppressed, safe to send valid.append(recipient) if valid: return client.emails.send_batch( emails=[{**content, "to": [r]} for r in valid] )
Copy
import Ark from 'ark';const client = new Ark();async function sendToValidRecipients(recipients: string[], content: EmailContent) { const valid: string[] = []; for (const recipient of recipients) { try { await client.suppressions.retrieve(recipient); // Email is suppressed, skip it } catch (error) { if (error instanceof Ark.NotFoundError) { // Not suppressed, safe to send valid.push(recipient); } else { throw error; } } } if (valid.length > 0) { return client.emails.sendBatch({ emails: valid.map(to => ({ ...content, to: [to] })), }); }}
Copy
require "ark_email"client = ArkEmail::Client.newdef send_to_valid_recipients(recipients, content) valid = [] recipients.each do |recipient| begin client.suppressions.retrieve(recipient) # Email is suppressed, skip it rescue ArkEmail::Errors::NotFoundError # Not suppressed, safe to send valid << recipient end end if valid.any? client.emails.send_batch( emails: valid.map { |r| content.merge(to: [r]) } ) endend
Never purchase email lists. They contain invalid addresses and uninterested recipients that will damage your reputation.
A bounce rate above 2% signals list quality issues and will harm your sender reputation.Hard bounces (immediate permanent failures) are automatically suppressed by Ark on first occurrence. If you’re seeing high hard bounce rates:
Identify the source: Are bounces from specific domains or your entire list?
Check for typos: Common typos like gmial.com instead of gmail.com
Verify at signup: Use double opt-in for new subscribers
Clean old lists: Remove addresses that haven’t engaged in 6+ months
Validate before import: Use email validation services before importing bulk lists
Soft bounces (temporary failures) are retried automatically up to 18 times. If many soft bounces convert to hard fails:
Check send volume: You may be hitting rate limits at receiving servers
Review message size: Large attachments can cause rejections
Spread sends over time: Avoid sending to one domain in large bursts
Ark protects your reputation automatically. Hard bounces trigger immediate suppression, preventing repeated delivery attempts to invalid addresses. This keeps your bounce rate low and your sender reputation healthy.
post '/webhooks/ark' do event = JSON.parse(request.body.read) if event['event'] == 'MessageBounced' alert_ops("Bounce detected: #{event['payload']}") end if event['event'] == 'MessageComplained' alert_ops("Spam complaint from: #{event['payload']['message']['to']}") end 'OK'end
When running a white-label email platform, deliverability requires additional considerations:Per-Tenant Domains: Each tenant sends from their own verified sending domains with full DKIM, SPF, and DMARC authentication.Per-Tenant Domain Warm-Up: New tenant domains should follow the warm-up schedule above independently. Give each tenant their own domain for proper deliverability.Monitoring Across Tenants: Use per-tenant usage tracking and per-tenant webhooks to monitor deliverability metrics per customer.