Skip to content

📊 Metrics module Email API

This module allows you to retrieve metrics for messages sent from your account.

Methods

Type declarations

ts
class Metrics {
  constructor (protected mailchannels: MailChannelsClient);
  async engagement (options?: MetricsOptions): Promise<MetricsEngagementResponse>;
  async performance (options?: MetricsOptions): Promise<MetricsPerformanceResponse>;
  async recipientBehaviour (options?: MetricsOptions): Promise<MetricsRecipientBehaviourResponse>;
  async volume (options?: MetricsOptions): Promise<MetricsVolumeResponse>;
  async usage (): Promise<MetricsUsageResponse>;
  async senders (type: MetricsSendersType, options?: MetricsSendersOptions): Promise<MetricsSendersResponse>;
}
All type declarations

Response type declarations

ts
interface ErrorResponse {
  message: string;
  statusCode: number | null;
  type: ErrorType;
}
ts
type DataResponse<T> = {
  data: T;
  error: null;
} | {
  data: null;
  error: ErrorResponse;
};

Shared metrics type declarations

ts
interface MetricsOptions {
  startTime?: string;
  endTime?: string;
  campaignId?: string;
  interval?: "hour" | "day" | "week" | "month";
}
ts
interface MetricsBucket {
  count: number;
  periodStart: string;
}

Engagement type declarations

ts
interface MetricsEngagement {
  buckets: {
    click: MetricsBucket[];
    clickTrackingDelivered: MetricsBucket[];
    open: MetricsBucket[];
    openTrackingDelivered: MetricsBucket[];
  };
  click: number;
  clickTrackingDelivered: number;
  endTime: string;
  open: number;
  openTrackingDelivered: number;
  startTime: string;
}
ts
type MetricsEngagementResponse = DataResponse<MetricsEngagement>;

Performance type declarations

ts
interface MetricsPerformance {
  bounced: number;
  buckets: {
    bounced: MetricsBucket[];
    delivered: MetricsBucket[];
    processed: MetricsBucket[];
  };
  delivered: number;
  endTime: string;
  processed: number;
  startTime: string;
}
ts
type MetricsPerformanceResponse = DataResponse<MetricsPerformance>;

Recipient Behaviour type declarations

ts
interface MetricsRecipientBehaviour {
  buckets: {
    unsubscribeDelivered: MetricsBucket[];
    unsubscribed: MetricsBucket[];
  };
  endTime: string;
  startTime: string;
  unsubscribeDelivered: number;
  unsubscribed: number;
}
ts
type MetricsRecipientBehaviourResponse = DataResponse<MetricsRecipientBehaviour>;

Volume type declarations

ts
interface MetricsVolume {
  buckets: {
    delivered: MetricsBucket[];
    dropped: MetricsBucket[];
    processed: MetricsBucket[];
  };
  delivered: number;
  dropped: number;
  endTime: string;
  processed: number;
  startTime: string;
}
ts
type MetricsVolumeResponse = DataResponse<MetricsVolume>;

Usage type declarations

ts
type MetricsUsageResponse = DataResponse<{
  endDate?: string;
  startDate?: string;
  total: number;
}>;

Senders type declarations

ts
type MetricsSendersType = "sub-accounts" | "campaigns";
ts
interface MetricsSendersOptions {
  startTime?: string;
  endTime?: string;
  limit?: number;
  offset?: number;
  sortOrder?: "asc" | "desc";
}
ts
interface MetricsSenders {
  endTime: string;
  limit: number;
  offset: number;
  senders: {
    bounced: number;
    delivered: number;
    dropped: number;
    name: string;
    processed: number;
  }[];
  startTime: string;
  total: number;
}
ts
type MetricsSendersResponse = DataResponse<MetricsSenders>;

Source

SourcePlaygroundDocsTests

Changelog

  • v0.8.0 on May 23, 2026
    • ab66dc1 refactor: split internal utils into focused modules

Released under the MIT License.