Engagement method 📊 Metrics
Retrieve engagement metrics for messages sent from your account, including counts of open and click events. Supports optional filters for time range, and campaign ID.
Usage
ts
import { MailChannelsClient, Metrics } from 'mailchannels-sdk'
const mailchannels = new MailChannelsClient('your-api-key')
const metrics = new Metrics(mailchannels)
const { data, error } = await metrics.engagement()ts
import { MailChannels } from 'mailchannels-sdk'
const mailchannels = new MailChannels('your-api-key')
const { data, error } = await mailchannels.metrics.engagement()Params
optionsMetricsOptionsoptional: Optional filter options.startTimestring | Dateoptional: The beginning of the time range for retrieving message engagement metrics (inclusive). Formats:YYYY-MM-DDorYYYY-MM-DDTHH:MM:SSZor aDateobject. Defaults to one month ago if not provided.endTimestring | Dateoptional: The end of the time range for retrieving message engagement metrics (exclusive). Formats:YYYY-MM-DDorYYYY-MM-DDTHH:MM:SSZor aDateobject. Defaults to the current time if not provided.campaignIdstringoptional: The ID of the campaign to filter metrics by. If not provided, metrics for all campaigns will be returned.interval"hour" | "day" | "week" | "month"optional: The interval for aggregating metrics data. Defaults today.
Response
dataMetricsEngagement | nullnullablebucketsobjectguaranteed: A series of metrics aggregations bucketed by time interval (e.g. hour, day).clickMetricsBucket[]guaranteedcountnumberguaranteed: The number of events or occurrences aggregated within this time period.periodStartstringguaranteed: The starting date and time of the time period this bucket represents.
clickTrackingDeliveredMetricsBucket[]guaranteedcountnumberguaranteed: The number of events or occurrences aggregated within this time period.periodStartstringguaranteed: The starting date and time of the time period this bucket represents.
openMetricsBucket[]guaranteedcountnumberguaranteed: The number of events or occurrences aggregated within this time period.periodStartstringguaranteed: The starting date and time of the time period this bucket represents.
openTrackingDeliveredMetricsBucket[]guaranteedcountnumberguaranteed: The number of events or occurrences aggregated within this time period.periodStartstringguaranteed: The starting date and time of the time period this bucket represents.
uniqueClickMetricsBucket[]optionalcountnumberguaranteed: The number of events or occurrences aggregated within this time period.periodStartstringguaranteed: The starting date and time of the time period this bucket represents.
uniqueClickTrackingDeliveredMetricsBucket[]optionalcountnumberguaranteed: The number of events or occurrences aggregated within this time period.periodStartstringguaranteed: The starting date and time of the time period this bucket represents.
uniqueOpenMetricsBucket[]optionalcountnumberguaranteed: The number of events or occurrences aggregated within this time period.periodStartstringguaranteed: The starting date and time of the time period this bucket represents.
uniqueOpenTrackingDeliveredMetricsBucket[]optionalcountnumberguaranteed: The number of events or occurrences aggregated within this time period.periodStartstringguaranteed: The starting date and time of the time period this bucket represents.
clicknumberguaranteed: Count of click events by recipients.clickTrackingDeliverednumberguaranteed: Count of recipients of delivered messages with HTML content that contains tracked click URLs, where click tracking is enabled in the send request.endTimestringguaranteed: The end of the time range for retrieving message engagement metrics (exclusive).opennumberguaranteed: Count of open events by recipients.openTrackingDeliverednumberguaranteed: Count of recipients of delivered messages with HTML content where open tracking was enabled in the send request.startTimestringguaranteed: The beginning of the time range for retrieving message engagement metrics (inclusive).uniqueClicknumberoptional: Count of distinct messages that had at least one click event. Unlikeclick, each message is counted at most once regardless of how many links were clicked or how many times. Use this to compute click rates without exceeding 100%.uniqueClickTrackingDeliverednumberoptional: Count of distinct messages delivered with click tracking enabled (message-level, not recipient-level). Use as the denominator when computing unique click rates.uniqueOpennumberoptional: Count of distinct messages that had at least one open event. Unlikeopen, each message is counted at most once regardless of how many times its tracking pixel was fired. Use this to compute open rates without exceeding 100%.uniqueOpenTrackingDeliverednumberoptional: Count of distinct messages delivered with open tracking enabled (message-level, not recipient-level). Use as the denominator when computing unique open rates.
errorErrorResponse | nullnullable: Error information if the operation failed.messagestringguaranteed: A human-readable description of the error.statusCodenumber | nullnullable: The HTTP status code from the API, ornullif the error is not related to an HTTP request. This field is intended for diagnostic use only and should not be relied upon.typestringguaranteed: A string identifier for the type of error. This field is intended for diagnostic use only and should not be relied upon.responseRecord<string, unknown> | nullnullable: An object containing the response, if available. This field may benullif no response is available or if the error is not related to an HTTP request or if the response is not a JSON object.
Type declarations
Signature
ts
async function engagement (options?: MetricsOptions): Promise<MetricsEngagementResponse>Response type declarations
ts
interface ErrorResponse {
message: string;
statusCode: number | null;
type: ErrorType;
response: Record<string, unknown> | null;
}ts
type DataResponse<T> = {
data: T;
error: null;
} | {
data: null;
error: ErrorResponse;
};Shared metrics type declarations
ts
interface MetricsOptions {
startTime?: string | Date;
endTime?: string | Date;
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[];
uniqueClick?: MetricsBucket[];
uniqueClickTrackingDelivered?: MetricsBucket[];
uniqueOpen?: MetricsBucket[];
uniqueOpenTrackingDelivered?: MetricsBucket[];
};
click: number;
clickTrackingDelivered: number;
endTime: string;
open: number;
openTrackingDelivered: number;
startTime: string;
uniqueClick?: number;
uniqueClickTrackingDelivered?: number;
uniqueOpen?: number;
uniqueOpenTrackingDelivered?: number;
}ts
type MetricsEngagementResponse = DataResponse<MetricsEngagement>;Source
Source • Playground • Docs • Tests