InboxIssue

Test Case Examples

Real-world examples of email deliverability testing scenarios

Learn how to test different types of emails with InboxIssue through these real-world examples.

Newsletter Campaign Test

Test your marketing newsletter before sending to your subscriber list.

Create the Test

{
  "spam_test": {
    "name": "Weekly Newsletter - January 2024",
    "sender_email_address": "newsletter@yourcompany.com",
    "provider_types": ["consumer", "business"],
    "metadata": {
      "campaign_id": "newsletter_2024_01",
      "template": "weekly_digest"
    }
  }
}

Send Your Newsletter

Send your actual newsletter content to the test addresses. Include:

  • Your regular newsletter template
  • All images, links, and CTAs
  • The tracking key in the email body or subject

Expected Results

ProviderTargetCommon Issues
GmailInboxImage-heavy content, missing unsubscribe
OutlookInboxBulk sender reputation
YahooInboxEngagement-based filtering

For newsletters, always include a visible unsubscribe link. Gmail specifically looks for this and may filter emails without it.


Transactional Email Test

Test order confirmations, password resets, and other transactional emails.

Create the Test

{
  "spam_test": {
    "name": "Order Confirmation Template",
    "sender_email_address": "orders@yourstore.com",
    "provider_types": ["consumer", "business", "protected"],
    "metadata": {
      "email_type": "transactional",
      "template": "order_confirmation"
    }
  }
}

Send Test Email

Use your actual transactional email content:

Subject: Order Confirmation #12345

Hi {Customer Name},

Thank you for your order! Here are your order details:

Order Number: #12345
Date: January 15, 2024
Total: $99.99

[View Order Details]

Questions? Reply to this email or contact support@yourstore.com

Analyze Results

Transactional emails should achieve 95%+ inbox placement. Check for:

  • SPF, DKIM, DMARC all passing
  • No spam trigger words ("free", "winner", excessive punctuation)
  • Proper sender reputation

Cold Outreach Test

Test sales or outreach emails before a campaign.

Cold outreach has stricter deliverability requirements. Test thoroughly before sending at scale.

Create the Test

{
  "spam_test": {
    "name": "Sales Outreach - Q1 Campaign",
    "sender_email_address": "sales@yourcompany.com",
    "provider_types": ["business"],
    "metadata": {
      "campaign_type": "cold_outreach",
      "target_audience": "enterprise"
    }
  }
}

Best Practices for Cold Email

Your test email should follow these guidelines:

ElementDoDon't
Subject"Quick question about {Company}""AMAZING OFFER!!!"
OpeningPersonalized referenceGeneric greeting
BodyValue-focused, conciseSalesy, lengthy
CTASingle, clear actionMultiple links
SignatureProfessional, completeMissing contact info

Interpreting Results

For cold outreach, pay attention to:

  • Microsoft SCL scores - Should be 0-3
  • Gmail placement - Business emails are stricter
  • DMARC alignment - Must pass for enterprise mailboxes

Welcome Email Test

Test your onboarding welcome email.

{
  "spam_test": {
    "name": "Welcome Email - New User Onboarding",
    "sender_email_address": "welcome@yourapp.com",
    "provider_types": ["consumer", "business"],
    "metadata": {
      "email_type": "transactional",
      "trigger": "user_signup"
    }
  }
}

Sample Welcome Email

Subject: Welcome to {App Name} - Let's get started!

Hi {First Name},

Welcome to {App Name}! We're excited to have you.

Here's what you can do next:

1. Complete your profile
2. Connect your first integration
3. Invite your team

[Get Started →]

Need help? Our support team is here for you.

Best,
The {App Name} Team

Expected Authentication

CheckExpectedNotes
SPFPassEnsure sending IP is authorized
DKIMPassSign with your domain
DMARCPassAlignment required
Reverse DNSMatchPTR record should resolve

Password Reset Test

Test security-critical password reset emails.

{
  "spam_test": {
    "name": "Password Reset Email",
    "sender_email_address": "security@yourapp.com",
    "provider_types": ["consumer", "business", "protected"],
    "metadata": {
      "email_type": "security",
      "priority": "high"
    }
  }
}

Password reset emails are security-critical. They should achieve 100% inbox placement. Any spam folder delivery is a serious issue.

Sample Content

Subject: Reset your {App Name} password

Hi {First Name},

We received a request to reset your password.

[Reset Password]

This link expires in 1 hour.

If you didn't request this, please ignore this email or contact
security@yourapp.com if you have concerns.

{App Name} Security Team

Security Email Checklist

  • SPF, DKIM, DMARC all pass
  • No tracking pixels or external images
  • Clear sender identity
  • Time-limited action link
  • Contact information for security concerns

API Integration Example

Complete example of testing via API with result polling.

import requests
import time
 
API_TOKEN = "your_api_token"
BASE_URL = "https://app.inboxissue.com/api/v1"
 
headers = {
    "Authorization": f"Bearer {API_TOKEN}",
    "Content-Type": "application/json"
}
 
# 1. Create the test
create_response = requests.post(
    f"{BASE_URL}/spam_tests",
    headers=headers,
    json={
        "spam_test": {
            "name": "Automated CI/CD Test",
            "sender_email_address": "ci@yourcompany.com",
            "provider_types": ["consumer", "business"],
            "metadata": {
                "pipeline": "main",
                "commit": "abc123"
            }
        }
    }
)
test = create_response.json()
test_id = test["spam_test"]["public_id"]
 
print(f"Test created: {test_id}")
print(f"Send to: {test['spam_test']['send_to']}")
 
# 2. Send your test email here via your email service
# send_email(to=test["spam_test"]["send_to"], ...)
 
# 3. Poll for results
max_wait = 900  # 15 minutes
poll_interval = 30
waited = 0
 
while waited < max_wait:
    result = requests.get(
        f"{BASE_URL}/spam_tests/{test_id}",
        headers=headers
    ).json()
 
    if result["spam_test"]["status"] == "complete":
        break
 
    print(f"Status: {result['spam_test']['status']} - waiting...")
    time.sleep(poll_interval)
    waited += poll_interval
 
# 4. Analyze results
summary = result["summary"]
print(f"\nResults:")
print(f"  Inbox Rate: {summary['inbox_rate']}%")
print(f"  Inbox: {summary['inbox']}/{summary['total']}")
print(f"  Spam: {summary['spam']}/{summary['total']}")
 
# 5. Fail CI if inbox rate is below threshold
if summary["inbox_rate"] < 90:
    print("FAILED: Inbox rate below 90% threshold")
    exit(1)
else:
    print("PASSED: Deliverability check successful")

Next Steps