You can retrieve email statistics for a specific date range on a specific domain.
For information on how to improve certain statistics, refer to Prevent mail to Gmail users from being blocked or sent to spam.
Note: If you don't see values for some statistics, it's possible you don't send enough daily email. Only domains that send mail to at least 50 users per day receive statistics. For further information, refer to the Postmaster Tools FAQ.
Retrieve statistics for a date range
To retrieve statistics for a specific date range, call
domains.domainStats.query()
with the domain and date range. Following is a code sample showing how to
retrieve email statistics for a specific date range:
Java
/**
* Lists domain statistics for a specific date range.
*
* @param service Authorized Gmail PostmasterTools API instance.
* @param domainName The fully qualified domain name.
* @param startDate The first day of the date range to retrieve statistics.
* @param endDate The last day of the date range to retrieve statistics.
* @param pageSize The number of DomainStats to get per request.
* @param pageToken The nextPageToken value from a previous List request,
* if any.
* @return Response message for query domain stats request.
* @throws IOException
*/
public static QueryDomainStatsResponse queryDomainStats(
PostmasterTools service, String domainName, Date startDate, Date endDate,
int pageSize, String pageToken) throws IOException {
QueryDomainStatsResponse queryDomainStatsResponse =
service.domains().domainStats()
.query("domains/" + domainName)
.setStartDate(startDate)
.setEndDate(endDate)
.setPageSize(pageSize)
.setPageToken(pageToken)
.execute();
System.out.println(queryDomainStatsResponse.toPrettyString());
return queryDomainStatsResponse;
}
Python
def query_domain_stats(service, domain_name, start_date, end_date,
page_size, page_token):
"""Queries the domain stats for a domain for a specific date range.
Args:
service: Authorized Gmail PostmasterTools API instance.
domain_name: The fully qualified domain name.
start_date: The first day of the date range to retrieve statistics.
end_date: The last day of the date range to retrieve statistics.
page_size: The number of DomainStats to get per request.
page_token: The nextPageToken value from a previous List request, if any.
Returns:
The domain stats of the domain for this date range.
"""
try:
query = 'domains/' + domain_name
query_domain_stats_response = service.domains().domainStats().query(
parent=query,
startDate=start_date,
endDate=end_date,
pageSize=page_size,
pageToken=page_token).execute()
print(query_domain_stats_response)
return query_domain_stats_response
except errors.HttpError as err:
print(f'An error occurred: {err}')
If successful, the response body contains a paginated array of
DomainStat
with the following structure:
{
"domainStats": [
{
object (DomainStat)
}
],
"nextPageToken": string
}
Retrieve compliance status for a domain
To retrieve the compliance status for a domain, call
domains.getComplianceStatus()
with the domain. The compliance status contains compliance information for
Sender Policy Framework (SPF), DomainKeys Identified Mail (DKIM), and
Domain-based Message Authentication, Reporting, and Conformance (DMARC).
Following is a code sample showing how to retrieve the compliance status for a
domain:
Java
/**
* Gets the compliance status for a domain.
*
* @param service Authorized Gmail PostmasterTools API instance.
* @param domainName The fully qualified domain name.
* @return The compliance status of the domain.
* @throws IOException
*/
public static DomainComplianceStatus getComplianceStatus(
PostmasterTools service, String domainName) throws IOException {
String query = String.format("domains/%s/complianceStatus", domainName);
DomainComplianceStatus complianceStatus =
service.domains().getComplianceStatus(query).execute();
System.out.println(complianceStatus.toPrettyString());
return complianceStatus;
}
Python
def get_compliance_status(service, domain_name):
"""Gets the compliance status for a domain.
Args:
service: Authorized Gmail PostmasterTools API instance.
domain_name: The fully qualified domain name.
Returns:
The compliance status of the domain.
"""
try:
query = 'domains/%s/complianceStatus' % domain_name
compliance_status = service.domains().getComplianceStatus(
name=query).execute()
print(compliance_status)
return compliance_status
except errors.HttpError as err:
print(f'An error occurred: {err}')
If successful, the response body contains an instance of
DomainComplianceStatus.