Skip to main content

Performance Methodology

Last updated: 2026-07-29

This page defines every performance metric published by ApexMail, including how it is measured, the measurement period, geographic coverage, exclusions, and limitations. Every publicly displayed performance number must link to its definition on this page or to the relevant section below.

The three canonical latency labels used across the site are:

  1. Production API SLA: P95 ≤ 500ms measured at gateway — contractual SLA metric for Enterprise plans, measured server-side at the API gateway.
  2. Sandbox validation target: typically under 120ms — guidance target for sandbox/test-mode validation latency; no email is sent.
  3. Private Cloud illustrative: architecture-dependent, not an SLA — deployment-specific; contractual Private Cloud latency targets are defined per-deployment in customer agreements.

1. Delivery Metrics

“Delivery rate” must never appear without a specific definition. The following metrics are the only permitted public delivery measurements.

1.1 API Acceptance Rate

Definition: The percentage of valid API requests that are accepted for processing within a measurement period.

ParameterValue
NumeratorNumber of API requests returning HTTP 202 (Accepted) and enqueued for processing
DenominatorTotal number of API requests that pass authentication and input validation
ExcludedHTTP 401 (authentication failure), HTTP 400 (input validation failure), HTTP 429 (rate limited before acceptance)
ExcludedRequests rejected due to customer misconfiguration (unverified domain, suspended account)
Measurement periodRolling 30 days
Data sourceAPI gateway metrics (Prometheus counter)

1.2 Processing Success Rate

Definition: The percentage of accepted messages that are successfully processed by the ApexMail delivery pipeline and handed off to the recipient’s mail server or queued for delivery.

ParameterValue
NumeratorMessages that complete processing with status processed or queued_for_delivery
DenominatorTotal messages accepted into the processing pipeline (API Acceptance count)
When a message counts as “processed”When it has passed internal validation, template rendering, recipient resolution, and is handed to the delivery engine or queued for outbound delivery
Queued messagesCount as in-flight, not as success or failure
Delayed messagesCounted when processing completes
Provider rejectionCounted as failure
Internal retriesMaximum 3 internal retries before counted as failure
Measurement periodRolling 30 days
Data sourceQueue processor metrics (Prometheus counter)

1.3 Recipient-Server Acceptance Rate

Definition: The percentage of delivery attempts that result in a successful handoff to the recipient’s mail server, measured after all retries are exhausted.

ParameterValue
NumeratorDelivery attempts receiving SMTP 2xx response codes (250 OK, 251, 252)
DenominatorTotal delivery attempts (excluding internal failures before SMTP connection)
SMTP response classes included2xx (success)
Temporary deferrals (4xx)Not counted as success. Retried according to delivery retry schedule. Only final outcome after all retries is measured
Permanent bounces (5xx)Not counted as success
Retry windowUp to 72 hours from initial send for standard accounts
Does this measure inbox placement?No. This measures SMTP handoff success. ApexMail does not measure inbox placement as a service-level metric. Recipient-server acceptance confirms delivery to the destination mail server, not placement within a specific folder
Measurement periodRolling 30 days
Data sourceSMTP delivery metrics (Prometheus counter)

1.4 Inbox Placement

ApexMail does not measure or publish inbox placement rates as a service-level metric. Inbox placement is determined by the recipient’s mail provider, which ApexMail does not control. Statements implying inbox placement guarantees or measurement must not be made. Inbox placement testing via seed lists is available as a product feature on qualifying plans; seed results do not guarantee recipient-wide placement.


2. Latency Metrics

2.1 Production API Latency (SLA Metric)

This is the contractual SLA metric for Enterprise plans: Production API SLA: P95 ≤ 500ms measured at gateway.

Any published API latency number must specify the exact measurement boundaries.

ParameterValue
Start eventTimestamp of the last byte of the request received by the API server
End eventTimestamp of the first byte of the response sent by the API server
Does NOT includeNetwork round-trip time from client to server, client-side processing, DNS resolution, or TLS handshake beyond the server’s TLS termination point
Metric typep50 (median), p95, p99
Sample sizeAll API requests in the measurement period
Sample periodRolling 30 days
RegionsAll regions where API servers are deployed (EU — Helsinki)
Included requestsAll authenticated API requests (any HTTP method, any endpoint)
Excluded requestsHealth-check probes, unauthenticated requests, rate-limited requests (HTTP 429)
MeasurementServer-side timing via Prometheus histogram

Permitted public statement example:

Production API SLA: P95 ≤ 500ms measured at gateway — measured server-side over a rolling 30-day period for all authenticated requests in the EU region.

Prohibited statements:

Average API latency is under Xms. (Must specify p50/p95/p99 — “average” is ambiguous.)

API responds in under Xms. (Must specify what start and end events measure and exclude network round-trip.)

2.2 Sandbox Validation Latency (Guidance)

Sandbox validation target: typically under 120ms. This is a guidance target, not an SLA.

ParameterValue
What it measuresInternal request validation, authentication, and queue acceptance in sandbox/test mode
Does NOT includeOutbound SMTP delivery — no email is sent in sandbox mode
EnvironmentSandbox/test mode only
Metric typep50, p95
Sample sizeAll sandbox-mode requests in the measurement period
Sample periodRolling 7 days
RegionsEU (Helsinki)
LimitationsGuidance target only. Actual latency varies with request size, validation complexity, and template rendering. Does not touch production delivery pipeline.

2.3 Queue-Processing Latency

ParameterValue
Start eventTimestamp when message enters the processing queue (after API acceptance)
End eventTimestamp when message exits the processing queue and is handed to the delivery engine
Metric typep50, p95, p99
Sample sizeAll accepted messages in the measurement period
Sample periodRolling 30 days
RegionsEU (Helsinki)
IncludedInternal validation, template rendering, recipient resolution, spam-filter assessment
ExcludedMessages held for scheduled/send-at delivery before their scheduled time
MeasurementQueue processor metrics (Prometheus histogram)

2.4 First-Delivery-Attempt Latency

ParameterValue
Start eventTimestamp of API acceptance (HTTP 202 returned)
End eventTimestamp of first SMTP connection to recipient server (SYN sent to recipient MX)
Metric typep50, p95, p99
Sample sizeAll accepted messages with at least one delivery attempt in the measurement period
Sample periodRolling 30 days
RegionsOriginating from EU data center to global recipient servers
IncludedQueue time, processing, SMTP connection establishment
ExcludedDeferred messages on their retry attempts (only first attempt measured). Scheduled messages measured from their scheduled release time, not from API acceptance

2.5 End-to-End Delivery Latency

ParameterValue
Start eventTimestamp of API acceptance (HTTP 202 returned)
End eventTimestamp of successful SMTP handoff (2xx received from recipient server)
Type of measurementReal traffic only; synthetic traffic is measured separately
Metric typep50, p95, p99
Sample sizeAll accepted messages successfully delivered in measurement period
Sample periodRolling 30 days
Message sizeAll messages up to the platform maximum (10 MB including attachments)
AttachmentsIncluded in measurement; larger attachments increase latency
Retry inclusionOnly first-successful-delivery latency is measured. Messages that succeed after retry are measured from API acceptance to the successful retry handoff, with retry delay included in the latency
Deferred message exclusionDeferred messages are included only when they ultimately succeed. Permanently bounced messages are excluded
RegionsOriginating from EU data center to global recipient servers
Time zoneAll timestamps in UTC

Permitted public statement example:

End-to-end delivery latency: p95 is under X seconds, measured from API acceptance to SMTP handoff, including retry delays, over a rolling 30-day period.

2.6 Webhook Latency

ParameterValue
Start eventTimestamp when the event is published to the webhook delivery queue
End eventTimestamp when the webhook HTTP request is completed (response received or timeout)
Metric typep50, p95, p99
Targetp95 ≤ 5 seconds
Sample sizeAll webhook delivery attempts in the measurement period
Sample periodRolling 30 days
RegionsOriginating from EU data center to global webhook endpoints
IncludedDNS resolution, TCP connection, TLS handshake, HTTP request-response cycle
ExcludedRetry and backoff periods after initial delivery failure
Timeout10 seconds per webhook delivery attempt
MeasurementWebhook delivery service metrics (Prometheus histogram)

2.7 Private Cloud Latency

Private Cloud illustrative: architecture-dependent, not an SLA. Private Cloud latency is deployment-specific and depends on customer region, network topology, VPC configuration, and proximity between the customer’s application and the ApexMail API infrastructure. Contractual Private Cloud latency targets are defined per-deployment in the customer agreement.

Public-facing Private Cloud latency comparisons are illustrative scenarios only, not performance guarantees.

2.8 Measurement Notes

  • “Under 1.2 seconds” must specify exactly what it measures and at what percentile.
  • Mean and median are not used interchangeably.
  • All measurements include the measurement period.
  • Sandbox, production, and Private Cloud latencies are not the same metric and must not be conflated.

3. Uptime and Availability

3.1 Component Definitions

Uptime is measured per component, not as a single global number. Each component has its own availability calculation.

ComponentDefinitionMeasurement
REST APIapi.apexmail.ee — all API endpointsExternal probe; HTTP 2xx on /health
SMTP Relaysmtp.apexmail.ee:587 — SMTP STARTTLS handshake and banner responseExternal probe; SMTP connection, banner, and STARTTLS negotiation
Dashboardapp.apexmail.ee — web dashboard applicationExternal probe; HTTP 2xx on login page and authenticated health endpoint
AuthenticationAPI auth endpoints — login, token refresh, SSOExternal probe; HTTP 2xx on auth health endpoint
Queue ProcessingInternal message queue consumer healthInternal probe; queue depth within threshold, consumer process running
Delivery EngineOutbound SMTP delivery workersInternal probe; delivery worker count above minimum, no stalled workers
WebhooksOutbound webhook delivery serviceExternal probe; HTTP 2xx on webhook health endpoint
Documentationdocs.apexmail.ee — API and guide documentationExternal probe; HTTP 2xx on documentation home page
Status Pagestatus.apexmail.ee — public status dashboardExternal probe; independently hosted and monitored separately
BillingBilling API and invoice generationInternal probe; billing service reachable, no stalled invoice jobs
Private Cloud CPManagement API for Private Cloud deploymentsInternal probe (where applicable)

3.2 Calculation Rules

RuleValue
Probe intervalin minutes
Probe locationsMinimum 3 geographic locations (Helsinki, Frankfurt, Amsterdam)
Failed-probe threshold3 consecutive failures from at least 2 locations before component marked degraded
Partial outageIf some probe locations succeed and some fail, component marked degraded. If all locations fail, component marked down
Degraded performanceResponse time > 5x baseline for 3 consecutive probes marks component degraded
Scheduled maintenancePublished at least 48 hours in advance on the status page. Excluded from availability calculation
Third-party dependencyIncluded in measurement; failures count against availability
Measurement periodRolling 90 days for public display
RoundingAvailability percentage rounded to 2 decimal places (e.g., 99.97%)

3.3 SLA vs. Historical Availability

  • SLA (Service Level Agreement): A contractual commitment to a minimum uptime percentage over a billing period. Defined per plan in the customer agreement. Not displayed as a general number on the website.
  • Historical availability: The actual measured uptime over a past period (displayed on the status page). This is descriptive, not prescriptive.
  • The status page displays historical availability only. SLA commitments are documented in customer agreements, not on the public status page.

4. Monitoring Systems

SystemPurposeVisibility
Blackbox ExporterExternal HTTP, HTTPS, SMTP, and DNS probes from multiple geographic locationsStatus page data source
PrometheusInternal metrics collection (all services, host metrics, database metrics)Not publicly accessible
AlertmanagerAlert routing to on-call engineersNot publicly accessible
GrafanaInternal dashboards for engineering and SRENot publicly accessible
check_services.shHealth probe scriptSource available in repository

Probe Locations

LocationProviderType
Helsinki, FinlandHetznerPrimary — same region as production infrastructure
Frankfurt, GermanyHetznerSecondary — independent region
Amsterdam, NetherlandsIndependent VPSTertiary — fully independent infrastructure

5. Exclusions

The following are excluded from performance calculations:

  • Test traffic: Messages sent to test domains, sandbox environments, or internal test recipients.
  • Customer misconfiguration: Failures caused by missing DNS records (SPF, DKIM, DMARC), unverified domains, or incorrect API key usage.
  • Recipient issues: Full mailbox, invalid recipient address, recipient server policy rejection — counted in bounce metrics, not performance metrics.
  • Force majeure events: Events qualifying as force majeure under the Terms of Service (natural disasters, internet backbone failures, DDoS attacks exceeding mitigation capacity).
  • Scheduled maintenance: Published maintenance windows with at least 48 hours’ notice.

6. Data Quality Limitations

  • Probe-based measurements may miss transient failures shorter than the probe interval (in minutes).
  • SMTP probe success does not guarantee every customer’s SMTP connection succeeds; it verifies that the SMTP service is operational from the probe locations.
  • Internal metrics (queue depth, worker count) are self-reported and may lag up to 15 seconds.
  • Geographic coverage is limited to EU probe locations. Customers accessing from other regions may experience different network latency.
  • Recipient-server acceptance rates are affected by recipient policies, reputation, and blocklists, which are partially outside ApexMail’s direct control.

7. Methodology Changes

VersionDateChange Description
1.02026-07-29Initial publication of performance methodology
1.12026-07-29Added sandbox validation latency, queue-processing latency, first-delivery-attempt latency, webhook latency, and Private Cloud latency sections. Added three canonical latency labels distinguishing Production API SLA, Sandbox validation, and Private Cloud illustrative.

When methodology changes would materially affect published numbers:

  • The previous methodology’s numbers are archived.
  • A notice is published on the status page and in the changelog.
  • The new methodology is versioned and the old version remains accessible for at least 12 months.

8. Update Schedule

ItemFrequency
Methodology page reviewAnnually
Probe location reviewSemi-annually
Metric definitions reviewOn any change to the measurement pipeline
Public performance numbers updateContinuously (automated), with monthly verification audit

9. Contact

Questions about performance methodology: support@apexmail.ee Report discrepancies in published metrics: support@apexmail.ee Security concerns: security@apexmail.ee