.png)
Amazon SES Integration Guide
Amazon SES integrates with enterprise systems through regional HTTPS APIs, SMTP, bulk email operations, and event destinations such as Amazon SNS, Kinesis Data Firehose, and CloudWatch.
Amazon SES integration options at a glance
Amazon SES provides regional HTTPS APIs using AWS service protocols, an SMTP interface, bulk templated sending through SendBulkEmail, and raw or structured email content with attachments. SES can publish selected send, delivery, bounce, complaint, reject, open, click, and related events through Amazon SNS, Kinesis Data Firehose, or CloudWatch. Authentication uses AWS Signature Version 4 with IAM authorization for API calls, while SMTP uses SES SMTP credentials over TLS. Martini can orchestrate these mechanisms in workflows, expose APIs for internal applications, map message data, process asynchronous notifications, and apply throttling, retry, and reconciliation rules.
| Integration point | Supported by Amazon SES? | Common use cases | How Martini supports it |
|---|---|---|---|
| HTTPS APIs | Limited | Regional SES APIs support sending simple, templated, and raw email, managing identities and templates, querying quotas and statistics, and administering configuration sets and suppression entries. The APIs use AWS service protocols rather than a conventional resource-oriented REST model. | Martini can consume the regional SES HTTPS API in workflows, map request structures, and apply AWS authentication and error-handling logic. |
| SMTP interface | Yes | The SES SMTP interface supports applications that already use SMTP clients or libraries, with TLS and regional endpoints on supported ports. | Martini can participate in an SMTP-based design where the deployment supports an SMTP client, although a dedicated SES SMTP capability is not confirmed. |
| Bulk and asynchronous APIs | Yes | SendBulkEmail sends templated messages to multiple destinations, while final delivery outcomes are reported separately through event publishing or feedback mechanisms. | Martini can batch eligible recipients, invoke SendBulkEmail, record message identifiers, and reconcile asynchronous outcomes. |
| Event destinations | Yes | Configuration sets can publish selected send, delivery, bounce, complaint, reject, open, click, rendering-failure, and applicable delivery-delay events to SNS, Kinesis Data Firehose, or CloudWatch. | Martini can receive SNS-delivered notifications through an exposed API and can normalize event data from an available AWS delivery path. |
| Webhooks and outbound callbacks | Limited | SES does not provide a universal native webhook. Amazon SNS can forward selected SES notifications to HTTP/S endpoints, subject to subscription confirmation and SNS message validation. | Martini can expose an HTTPS endpoint, validate SNS envelopes and signatures, and process notifications idempotently. |
| File and attachment content | Limited | Attachments are included in raw MIME messages or supported structured email content; SES does not provide a standalone file or attachment repository API. | Martini can retrieve or receive source content, construct or map MIME or structured email data, and invoke the appropriate SES send operation. |
| Authentication | Yes | HTTPS API calls use AWS Signature Version 4 with IAM users, roles, or temporary credentials. SMTP uses SES SMTP credentials over TLS. | Martini can keep credentials in protected configuration or secrets management and orchestrate authenticated API calls with least-privilege permissions. |
| Statistics and analytics access | Limited | SES exposes quotas and sending statistics through APIs and can publish operational data through CloudWatch or Firehose rather than direct database access. | Martini can schedule retrieval or process available event and monitoring data, then map it into an operational store or reporting API. |
How Amazon SES exposes data and business events
Amazon SES HTTPS APIs
Amazon SES exposes regional HTTPS APIs for sending simple, templated, bulk, and raw email, as well as managing identities, configuration sets, templates, suppression entries, quotas, and statistics. The API uses AWS service protocols and regional resources rather than a conventional GraphQL or resource-oriented REST model.
Martini implementation pattern
Martini implementation pattern: A Martini workflow receives an application request or scheduled trigger, builds the SES request in the required format, signs it with AWS Signature Version 4 using a restricted IAM identity, invokes the regional endpoint, and records the response and SES message identifier.
Implementation sequence
Amazon SES bulk sending
The SendBulkEmail operation sends templated messages to multiple destinations with per-destination replacement data, subject to SES quotas and operation limits. The API accepts the submission while delivery outcomes are processed asynchronously.
Martini implementation pattern
Martini implementation pattern: A scheduled or event-driven workflow reads eligible recipients, groups them according to applicable limits, maps each destination's replacement data, submits batches, and stores enough context to reconcile later SES events without resending completed work.
Implementation sequence
Amazon SES event destinations
SES configuration sets can publish selected send, delivery, bounce, complaint, reject, open, click, rendering-failure, and applicable delivery-delay events to Amazon SNS, Kinesis Data Firehose, or CloudWatch. Event availability depends on the feature, configuration, and Region.
Martini implementation pattern
Martini implementation pattern: Configure the SES event destination and route SNS notifications or another available event path to a Martini API or workflow. Martini validates the notification envelope, handles subscription confirmation where needed, normalizes event fields, and updates downstream systems idempotently.
Implementation sequence
Amazon SES SMTP
SES provides a regional SMTP interface for applications that already use SMTP clients or libraries. It uses SES SMTP credentials, TLS, and supported ports, and is an alternative to implementing the HTTPS API and SigV4 request construction.
Martini implementation pattern
Martini implementation pattern: Where the Martini deployment supports an SMTP client, a workflow can transform an enterprise email request into an SMTP message and submit it using protected SES SMTP credentials over TLS. API-based integration is generally easier to standardize when the required SES operations are available.
Implementation sequence
Amazon SES raw email and attachments
SES supports raw MIME messages and attachments through SendRawEmail and supported structured email-content models. It does not provide a general-purpose file or attachment storage API, so the integration must construct valid message content.
Martini implementation pattern
Martini implementation pattern: Martini retrieves or receives attachment content, maps headers and message parts, constructs the required MIME or structured content, and invokes SES while enforcing size, encoding, and content-validation rules before submission.
Implementation sequence
Common Amazon SES integration patterns
Pattern 1: Send transactional email through an API façade
When to use this pattern
Use this pattern when multiple enterprise applications need a consistent email contract rather than direct access to AWS credentials or SES request formats. Martini centralizes validation, template selection, IAM access, correlation, and error handling.
Integration direction
Example Mapping
| Amazon SES Field | Canonical Field | Target Field |
|---|---|---|
| toAddresses | recipientAddresses | Destination.ToAddresses |
| templateName | emailTemplate | Template.TemplateName |
| businessData | templateData | Template.TemplateData |
| configurationSet | sendingProfile | ConfigurationSetName |
Martini implementation pattern
Expose a Martini REST API that validates the caller and request, applies recipient and template business rules, maps the canonical model to SendEmail or a templated request, and invokes the regional SES API with SigV4. Store the SES message identifier and return a controlled response; use bounded retries only for transient failures to avoid duplicate sends.
Martini capabilities used
- REST APIs
- workflows
- API consumption
- data mapping
- business rules
- secrets management
- error handling
Pattern 2: Process bounce and complaint events
When to use this pattern
Use this pattern when customer, contact, or operational systems must react to SES delivery failures and complaints. It separates asynchronous delivery outcomes from the initial send request and supports suppression or service follow-up rules.
Integration direction
Example Mapping
| Amazon SES Field | Canonical Field | Target Field |
|---|---|---|
| notificationType | emailEventType | EmailStatus.EventType |
| mail.messageId | providerMessageId | EmailStatus.ProviderMessageId |
| bounce.bouncedRecipients | failedRecipients | Contact.EmailDeliveryFailures |
| complaint.complainedRecipients | complaintRecipients | Contact.EmailComplaints |
Martini implementation pattern
Configure SES event publishing through SNS and expose a Martini API for SNS delivery. Validate subscription and notification messages, normalize the event, deduplicate using message identifiers and event attributes, then update the target system and suppression-related state. Record delayed or out-of-order events for reconciliation.
Martini capabilities used
- APIs
- webhooks
- workflows
- data mapping
- business rules
- error handling
Pattern 3: Submit bulk templated email
When to use this pattern
Use this pattern for campaign, reminder, or notification workloads where many recipients can be processed through SendBulkEmail with per-destination replacement data. It provides controlled batching instead of assuming unlimited SES throughput.
Integration direction
Example Mapping
| Amazon SES Field | Canonical Field | Target Field |
|---|---|---|
| recipientList | eligibleRecipients | DefaultEmailTags.Destinations |
| templateData | recipientTemplateData | BulkEmailEntry.ReplacementEmailContent |
| campaignId | businessCorrelationId | Workflow.SendBatchReference |
| configurationSet | sendingProfile | ConfigurationSetName |
Martini implementation pattern
A scheduler or source application starts a Martini workflow that reads eligible recipients, applies suppression and eligibility rules, partitions them according to SES quotas, and submits SendBulkEmail requests. The workflow records each batch and correlation identifier, throttles submissions, and reconciles later delivery events without automatically repeating successful batches.
Martini capabilities used
- scheduled workflows
- workflow orchestration
- data mapping
- business rules
- batch processing
- error handling
Pattern 4: Normalize SES delivery analytics
When to use this pattern
Use this pattern when operational or reporting systems need a consistent view of send, delivery, bounce, complaint, reject, or engagement events from SES and AWS destinations.
Integration direction
Example Mapping
| Amazon SES Field | Canonical Field | Target Field |
|---|---|---|
| eventType | deliveryEventType | ses_delivery_events.event_type |
| mail.messageId | providerMessageId | ses_delivery_events.message_id |
| mail.timestamp | submittedAt | ses_delivery_events.submitted_at |
| eventTimestamp | occurredAt | ses_delivery_events.occurred_at |
Martini implementation pattern
Process an available event delivery or notification path in Martini, normalize provider-specific payloads, enrich records with Region and configuration-set context, and write them to an operational database or reporting API. Use idempotent keys and preserve raw references for troubleshooting while limiting sensitive message content in logs.
Martini capabilities used
- workflows
- API consumption
- data transformation
- database integration
- business rules
- monitoring
- error handling
Applications commonly integrated with Amazon SES
Amazon SES is commonly placed behind enterprise applications and AWS event services that need controlled email delivery, event processing, monitoring, or audit. Martini can mediate these flows without implying a direct native integration between SES and each application.
| Application | Scenario | Direction | Martini Pattern |
|---|---|---|---|
| Amazon SNS | Receive SES bounce, complaint, delivery, and other selected event notifications, then forward them to downstream consumers. | Amazon SES → Amazon SNS → Martini | Configure an SES event destination through SNS, expose a Martini API for SNS delivery, validate subscription and notification messages, then normalize events for downstream workflows. |
| Amazon CloudWatch | Monitor SES sending metrics, delivery behavior, bounces, complaints, and operational thresholds. | Amazon SES → Amazon CloudWatch → Martini | Associate SES events or metrics with CloudWatch, then use Martini workflows or APIs to normalize available monitoring data and route operational alerts or audit information. |
| Amazon Kinesis Data Firehose | Stream SES event data into analytics or storage destinations for reporting and historical analysis. | Amazon SES → Amazon Kinesis Data Firehose → Martini | Publish selected SES events to Firehose and process an available downstream delivery or API path with Martini, mapping event types and identifiers into an operational or analytics model. |
| AWS Lambda | Run custom processing for SES events delivered through SNS or another AWS event path. | Amazon SES → Amazon SNS → AWS Lambda | Use SES event publishing and SNS routing for AWS-side processing, while Martini can mediate business-system updates before or after Lambda execution where an HTTP or API boundary is available. |
| Amazon S3 | Store downstream event data or email-related content for retention, audit, or analysis where the configured AWS architecture supports that path. | Amazon SES → Amazon S3 → Martini | Route event or content data through the configured AWS service path, then use Martini to transform, validate, and expose or persist the resulting audit information. |
| Salesforce | Send transactional or customer-engagement email through a centrally controlled SES service and synchronize delivery, bounce, or complaint outcomes with customer records. | Salesforce → Martini → Amazon SES | Expose a Martini API for Salesforce requests, map recipient and template data to SES SendEmail or SendBulkEmail, and process SES events through SNS into Salesforce status updates. |
| ServiceNow | Use SES for outbound notifications and process delivery failures or complaints in operational workflows. | ServiceNow → Martini → Amazon SES | Orchestrate notification requests through Martini, apply IAM-authenticated SES API calls, and route validated bounce or complaint events back to ServiceNow workflows. |
| Amazon Pinpoint | Coordinate AWS messaging and engagement architectures where the selected feature and account design uses SES-related email delivery infrastructure. | Amazon Pinpoint → Martini → Amazon SES | Treat the service relationship as architecture-specific, verify the applicable AWS path, and use Martini to mediate confirmed APIs or event destinations rather than assuming a direct native integration. |
How to build a Amazon SES integration in Martini
Objective
Establish the regional SES connection and protect the credentials required for API or SMTP access.
Instructions in Martini
- Select the SES Region and endpoint explicitly
- Use an IAM role, temporary credentials, or restricted access keys for HTTPS API calls
- Configure AWS Signature Version 4 for API requests
- Store credentials and configuration in protected Martini secrets or environment configuration
- Verify sender identities, sandbox status, quotas, and required IAM actions
Objective
Select the event, API, or schedule that starts the integration flow.
Instructions in Martini
- Use an exposed Martini API for application-driven email requests
- Use a webhook-capable Martini API for SNS-delivered SES notifications
- Use a scheduler for statistics retrieval or bulk processing
- Use workflow triggers for internal event-driven orchestration
Objective
Acquire the source email request, recipient data, SES event, or operational statistics.
Instructions in Martini
- Receive and validate application payloads before sending
- Retrieve eligible recipients and template data from the source system
- Accept SNS subscription confirmation and notification messages where applicable
- Retrieve paginated SES resources or statistics until continuation tokens are exhausted
Objective
Coordinate the SES call, event processing, enrichment, and downstream actions as a maintainable workflow.
Instructions in Martini
- Separate initial send acceptance from asynchronous delivery processing
- Choose SendEmail, SendRawEmail, or SendBulkEmail based on content and volume
- Associate the correct configuration set with event-producing sends
- Persist correlation identifiers and processing state
Objective
Convert enterprise data into SES message, destination, template, MIME, or event structures.
Instructions in Martini
- Map recipient addresses, template names, replacement data, and configuration sets
- Construct valid MIME content for raw email and attachments
- Normalize SNS or SES event fields into a canonical delivery model
- Validate required template variables and content encoding
Objective
Enforce sending, suppression, privacy, and operational policies before data reaches SES or downstream systems.
Instructions in Martini
- Check sender identity, recipient eligibility, and suppression behavior
- Apply Region-specific configuration and quota rules
- Avoid logging complete message bodies or unnecessary recipient data
- Use business correlation identifiers and duplicate-safe event processing
Common Amazon SES data objects used in integrations
| Object | Typical Use | Common target systems | Martini handling |
|---|---|---|---|
| Email identities | Verified email addresses or domains authorized to send through SES. | Identity governance, configuration databases, deployment administration | Martini can retrieve or administer identity-related data where permitted, while keeping Region, verification state, and IAM scope explicit. |
| Configuration sets | Associate outgoing messages with event publishing, tracking, reputation settings, and delivery behavior. | Application configuration stores, deployment management, monitoring systems | Martini can map a business sending profile to a configuration set and ensure the set is included in relevant send requests. |
| Email templates | Store reusable subject and body content with replacement data for templated email operations. | Content management, campaign administration, application configuration | Martini can validate template variables, map locale and business data, and invoke templated send operations. |
| Email messages | Represent messages submitted through SendEmail, SendRawEmail, or SendBulkEmail, including destinations, content, headers, templates, and attachments. | Business applications, customer databases, audit stores | Martini can validate, transform, enrich, and submit messages, while recording SES message identifiers and correlation data. |
| Suppression list entries | Identify addresses suppressed because of bounces, complaints, or account-level suppression settings. | Customer databases, CRM systems, marketing preference stores | Martini can retrieve or process suppression information and apply business rules that prevent repeated delivery attempts. |
| Sending statistics and quotas | Track regional sending rate, maximum quota, sent-message counts, bounces, complaints, and delivery statistics. | Monitoring platforms, operational databases, reporting systems | Martini can schedule retrieval, normalize metrics, and route threshold breaches or audit records to other systems. |
Authentication and security considerations
AWS API authentication
Amazon SES HTTPS API requests use AWS Signature Version 4 and IAM authorization. Use a least-privilege role, temporary credential, or restricted access key with only the required SES actions and an explicit Region.
SMTP security
The SES SMTP interface uses separate SMTP credentials over TLS. Regional endpoints and supported ports must be configured consistently with the deployment.
Sending controls
- Verify sending email addresses or domains before production use.
- Account for sandbox restrictions and Region-specific quotas.
- Store long-lived secrets in protected Martini configuration or secrets management.
- Limit access to message content, recipient data, and delivery events according to privacy requirements.
Operational considerations for Amazon SES integrations
Quotas and regional resources
SES sending rates, maximum quotas, verified identities, configuration sets, sandbox status, and permissions can vary by Region. Workflows should make the Region explicit and throttle or batch submissions.
Asynchronous outcomes
A successful API response indicates acceptance by SES rather than final delivery. Reconcile event notifications and account for duplicate, delayed, and out-of-order events.
Retries and idempotency
Use bounded retries with backoff for transient failures. Store business correlation identifiers and durable send state because retrying after a lost response can result in duplicate email.
Content and schema validation
- Validate template variables before submission.
- Construct MIME boundaries, headers, encodings, and attachments correctly.
- Handle pagination tokens when enumerating SES resources.
- Test suppression, bounce, complaint, SNS confirmation, and signature-validation paths.
- Monitor message identifiers, event timestamps, retry counts, and final processing status without unnecessarily logging message bodies.
Why use Martini instead of scripts or point-to-point integrations?
Centralized integration logic
Martini provides a controlled API and workflow boundary between enterprise applications and Amazon SES. This avoids distributing AWS signing, IAM details, template mapping, quota handling, and event-processing logic across individual applications.
Reusable orchestration
Workflows can standardize transactional sending, bulk batching, SNS notification processing, suppression rules, delivery reconciliation, and audit persistence across multiple source systems.
Maintainable transformation and operations
Martini separates mapping, business rules, authentication, retries, and monitoring from application code. This makes provider-specific SES formats easier to evolve while preserving consistent enterprise contracts and operational controls.
Frequently asked questions
Amazon SES can be integrated through its regional HTTPS APIs, SMTP interface, SendBulkEmail operation, raw or structured email content, and configuration-driven event destinations. SES events can be routed through Amazon SNS, Kinesis Data Firehose, or CloudWatch, while enterprise workflows can use IAM authorization, AWS Signature Version 4, or SES SMTP credentials over TLS.
Yes. Martini can consume the Amazon SES HTTPS API in workflows, expose an API for applications that need to send email, map enterprise data to SES message structures, and process selected SES events delivered through Amazon SNS or another configured AWS destination. A native Martini Amazon SES connector is not confirmed.
No. A dedicated Amazon SES connector is not required. Martini can use the SES HTTPS API, SES SMTP interface where the deployment supports an SMTP client, and SNS-delivered event notifications using the authentication and endpoints confirmed for Amazon SES.
Lonti does not charge an additional per-connector or per-vendor fee to integrate Amazon SES. The integration is subject to the provisioned capacity of the Martini environment. Separate costs may apply from Amazon SES, SNS, CloudWatch, Kinesis, Lambda, cloud infrastructure, or other third-party systems based on subscription, usage, and deployment model.
Use the regional HTTPS API for controlled programmatic sending, administration, and statistics operations; use SendBulkEmail for templated multi-recipient submissions; use raw email operations for MIME and attachment requirements; and use SMTP when an existing SMTP client is the most practical option. Event destinations should be added when final delivery outcomes matter.
SES supports selected event notifications through Amazon SNS, Kinesis Data Firehose, and CloudWatch. SNS can forward notifications to an HTTP/S endpoint such as a Martini API, but SES does not provide a universal native webhook for every event. Notifications can be asynchronous, duplicated, delayed, or out of order.
Email submission is asynchronous: a successful send response means SES accepted the request, not that the recipient received the message. Martini can store SES message identifiers and business correlation data, then reconcile delivery, bounce, complaint, reject, and other selected events from the configured event destination. Idempotency and out-of-order handling should be designed explicitly.
Martini can map enterprise payloads to SES destinations, templates, configuration sets, bulk entries, MIME content, and event models. Workflows can validate inputs, apply suppression and quota rules, handle AWS errors, and use bounded backoff for transient failures. Because a retry after an uncertain response can duplicate email, durable send records and application-level deduplication are important.
Related Martini documentation
API Integration
Data Processing
Operations
Connect Amazon SES with Martini
Use Martini to orchestrate Amazon SES email delivery, event processing, authentication, mapping, and enterprise workflow automation.