---
title: ElasticEmail API Integration on Truto
slug: elasticemail
category: Email
canonical: "https://truto.one/integrations/detail/elasticemail/"
---

# ElasticEmail API Integration on Truto



**Category:** Email  
**Status:** Generally available

## MCP-ready AI tools

Truto exposes 110 tools for ElasticEmail that AI agents can call directly.

- **list_all_elastic_email_campaigns** — Load Campaigns in Elastic Email. Returns a list all of your campaigns. Limited to 1000 results. Requires API key access level: ViewCampaigns Returns: Content, Name, Status, Recipients, ExcludedRecipients, Options. Required: none.

- **create_a_elastic_email_campaign** — Add Campaign in Elastic Email. Add a campaign for processing. Requires API key access level: ModifyCampaigns Returns: Content, Name, Status, Recipients, ExcludedRecipients, Options. Required: Name, Recipients.

- **get_single_elastic_email_campaign_by_id** — Load Campaign in Elastic Email. Returns the specified campaign details. Requires API key access level: ViewCampaigns id is the campaign name. Returns: Content, Name, Status, Recipients, ExcludedRecipients, Options. Required: id.

- **update_a_elastic_email_campaign_by_id** — Update Campaign in Elastic Email. Updates a previously added campaign. Only Active and Paused campaigns can be updated. Requires API key access level: ModifyCampaigns id is the campaign name. Returns: Content, Name, Status, Recipients, ExcludedRecipients, Options. Required: id, Name, Recipients.

- **delete_a_elastic_email_campaign_by_id** — Delete Campaign in Elastic Email. Delete the specific campaign. This does not cancel in progress email, see Cancel In Progress. Requires API key access level: ModifyCampaigns id is the campaign name. Returns an empty response on success. Required: id.

- **elastic_email_campaigns_pause** — Pause Campaign in Elastic Email. Pauses the specific campaign, cancelling emails that are waiting to be sent. Requires API key access level: ModifyCampaigns Returns an empty response on success. Required: campaign_id.

- **elastic_email_campaigns_trigger_automation** — Trigger Automation for Contact in Elastic Email. Manually trigger an Automation for a contact. Requires API key access level: ModifyAutomations Returns an empty response on success. Required: automation_id.

- **list_all_elastic_email_contacts** — Load Contacts in Elastic Email. Returns a list of contacts. Requires API key access level: ViewContacts Returns: Email, Status, FirstName, LastName, CustomFields, Consent, Source, SourceInfo, DateAdded, DateUpdated, StatusChangeDate, Activity. Required: none.

- **create_a_elastic_email_contact** — Add Contact in Elastic Email. Add new Contacts to your Lists. Up to 1000 can be added (for more please refer to the import request). Requires API key access level: ModifyContacts Returns: Email, Status, FirstName, LastName, CustomFields, Consent, Source, SourceInfo, DateAdded, DateUpdated, StatusChangeDate, Activity. Required: the request body (see body schema).

- **get_single_elastic_email_contact_by_id** — Load Contact in Elastic Email. Load detailed contact information for specified email. Requires API key access level: ViewContacts id is the contact email address. Returns: Email, Status, FirstName, LastName, CustomFields, Consent, Source, SourceInfo, DateAdded, DateUpdated, StatusChangeDate, Activity. Required: id.

- **update_a_elastic_email_contact_by_id** — Update Contact in Elastic Email. Update selected contact. Omitted contact's fields will not be changed. Requires API key access level: ModifyContacts id is the contact email address. Returns: Email, Status, FirstName, LastName, CustomFields, Consent, Source, SourceInfo, DateAdded, DateUpdated, StatusChangeDate, Activity. Required: id.

- **delete_a_elastic_email_contact_by_id** — Delete Contact in Elastic Email. Deletes the provided contact. Requires API key access level: ModifyContacts id is the contact email address. Returns an empty response on success. Required: id.

- **elastic_email_contacts_delete_bulk** — Delete Contacts Bulk in Elastic Email. Deletes provided contacts in bulk. Requires API key access level: ModifyContacts Returns an empty response on success. Required: the request body (see body schema).

- **elastic_email_contacts_export** — Export Contacts in Elastic Email. Request an Export of specified Contacts. Requires API key access level: Export Returns: Link, PublicExportID. Required: none.

- **elastic_email_contacts_export_status** — Check Export Status in Elastic Email. Check the current status of the export. Requires API key access level: Export Required: export_id.

- **elastic_email_contacts_import** — Upload Contacts in Elastic Email. Upload contacts from a file. Requires API key access level: ModifyContacts Returns an empty response on success. Required: the request body (see body schema).

- **list_all_elastic_email_domains** — Load Domains in Elastic Email. Returns a list of all domains configured for this Account. Requires API key access level: ViewSettings Returns: Domain, DefaultDomain, Spf, Dkim, MX, DMARC, IsRewriteDomainValid, Verify, Type, TrackingStatus, CertificateStatus, CertificateExpiryDate, CertificateValidationError, TrackingTypeUserRequest, VERP, CustomBouncesDomain, IsCustomBouncesDomainDefault, WasEverVerified,…. Required: none.

- **create_a_elastic_email_domain** — Add Domain in Elastic Email. Add new domain to Account. Requires API key access level: ModifySettings Returns: Domain, DefaultDomain, Spf, Dkim, MX, DMARC, IsRewriteDomainValid, Verify, Type, TrackingStatus, CertificateStatus, CertificateExpiryDate, CertificateValidationError, TrackingTypeUserRequest, VERP, CustomBouncesDomain, IsCustomBouncesDomainDefault, WasEverVerified,…. Required: the request body (see body schema).

- **get_single_elastic_email_domain_by_id** — Load Domain in Elastic Email. Retrieve a domain configured for this Account. Requires API key access level: ViewSettings id is the domain name. Returns: ValidationLog, Domain, DefaultDomain, Spf, Dkim, MX, DMARC, IsRewriteDomainValid, Verify, Type, TrackingStatus, CertificateStatus, CertificateExpiryDate, CertificateValidationError, TrackingTypeUserRequest, VERP, CustomBouncesDomain, IsCustomBouncesDomainDefault,…. Required: id.

- **update_a_elastic_email_domain_by_id** — Update Domain in Elastic Email. Updates the specified domain. Requires API key access level: ModifySettings id is the domain name. Returns: Domain, DefaultDomain, Spf, Dkim, MX, DMARC, IsRewriteDomainValid, Verify, Type, TrackingStatus, CertificateStatus, CertificateExpiryDate, CertificateValidationError, TrackingTypeUserRequest, VERP, CustomBouncesDomain, IsCustomBouncesDomainDefault, WasEverVerified,…. Required: id.

- **delete_a_elastic_email_domain_by_id** — Delete Domain in Elastic Email. Deletes configured domain from Account. Requires API key access level: ModifySettings id is the domain name. Returns an empty response on success. Required: id.

- **elastic_email_domains_check_restricted** — Check for domain restriction in Elastic Email. Checking if domain is from free provider, or restricted. Requires API key access level: ViewSettings Required: domain_id.

- **elastic_email_domains_verify** — Verify Domain in Elastic Email. Verifies that required DNS records exist for specified domain. Requires API key access level: ModifySettings Returns: ValidationLog, Domain, DefaultDomain, Spf, Dkim, MX, DMARC, IsRewriteDomainValid, Verify, Type, TrackingStatus, CertificateStatus, CertificateExpiryDate, CertificateValidationError, TrackingTypeUserRequest, VERP, CustomBouncesDomain, IsCustomBouncesDomainDefault,…. Required: domain_id.

- **elastic_email_domains_set_default** — Set Default in Elastic Email. Sets a verified email address as default sender. Requires API key access level: ModifySettings Returns: Domain, DefaultDomain, Spf, Dkim, MX, DMARC, IsRewriteDomainValid, Verify, Type, TrackingStatus, CertificateStatus, CertificateExpiryDate, CertificateValidationError, TrackingTypeUserRequest, VERP, CustomBouncesDomain, IsCustomBouncesDomainDefault, WasEverVerified,…. Required: domain_id.

- **elastic_email_emails_send_bulk** — Send Bulk Emails in Elastic Email. Send bulk merge email. Requires API key access level: SendHttp Returns: TransactionID, MessageID. Required: Recipients, Content.

- **elastic_email_emails_status** — Get Status in Elastic Email. Get status details of an email transaction. Requires API key access level: ViewReports Returns: ID, Status, RecipientsCount, Failed, FailedCount, Sent, SentCount, Delivered, DeliveredCount, Pending, PendingCount, Opened, OpenedCount, Clicked, ClickedCount, Unsubscribed, UnsubscribedCount, AbuseReports,…. Required: email_id.

- **elastic_email_emails_send_merge_file** — Send Bulk Emails CSV in Elastic Email. Send to a list of contacts submitted in a CSV data file. The first column in the CSV must be the email address and the CSV must contain a header row. Additional fields can be included with a named header row and can be merged with the template using {merge} tags in the content. Example CSV: email, firstname, lastname test1@gmail.com, michael, smith test2@gmail.com, janet, smith Merge file must not be empty. Requires API key access level: SendHttp Returns: TransactionID, MessageID. Required: MergeFile, Content.

- **elastic_email_emails_send_transactional** — Send Transactional Email in Elastic Email. Send transactional emails (recipients will be known to each other). Requires API key access level: SendHttp Returns: TransactionID, MessageID. Required: Recipients, Content.

- **get_single_elastic_email_email_by_id** — View Email in Elastic Email. Returns email details for viewing or rendering. Requires API key access level: None id is the message id (msgid). Returns: Preview, Attachments, Status. Required: id.

- **list_all_elastic_email_events** — Load Events in Elastic Email. Returns a log of delivery events filtered by specified parameters. Requires API key access level: ViewReports Returns: TransactionID, MsgID, FromEmail, To, Subject, EventType, EventDate, ChannelName, MessageCategory, NextTryOn, Message, IPAddress, PoolName. Required: none.

- **elastic_email_events_list_by_transaction** — Load Email Events in Elastic Email. Returns a log of delivery events for the specific transaction ID. Requires API key access level: ViewReports Returns: TransactionID, MsgID, FromEmail, To, Subject, EventType, EventDate, ChannelName, MessageCategory, NextTryOn, Message, IPAddress, PoolName. Required: transaction_id.

- **elastic_email_events_list_by_channel** — Load Channel Events in Elastic Email. Returns a log of delivery events filtered by specified parameters. Requires API key access level: ViewReports Returns: TransactionID, MsgID, FromEmail, To, Subject, EventType, EventDate, ChannelName, MessageCategory, NextTryOn, Message, IPAddress, PoolName. Required: channel_id.

- **elastic_email_events_export** — Export Events in Elastic Email. Export delivery events log information to the specified file format. Requires API key access level: Export Returns: Link, PublicExportID. Required: none.

- **elastic_email_events_export_status** — Check Export Status in Elastic Email. Check the current status of the export. Requires API key access level: Export Required: export_id.

- **elastic_email_events_export_channel** — Export Channel Events in Elastic Email. Export delivery events log information to the specified file format. Requires API key access level: Export Returns: Link, PublicExportID. Required: channel_id.

- **elastic_email_events_export_channel_status** — Check Channel Export Status in Elastic Email. Check the current status of the channel export. Requires API key access level: Export Required: export_id.

- **list_all_elastic_email_files** — List all files uploaded to your Elastic Email account. Returns each file's FileName, Size, DateAdded, ExpirationDate, and ContentType.
- **elastic_email_files_upload** — Upload a file to your Elastic Email account. Returns the created file's FileName, Size, DateAdded, ExpirationDate, and ContentType. Required: BinaryContent (base64-encoded file content). Uploaded files can be attached to emails by name via Content.AttachFiles.
- **elastic_email_files_info** — Get details for a single file in Elastic Email. Returns: Name, Status, Recipients, Content. Required: file_id (the file's name including its extension, e.g. invoice.pdf).
- **delete_a_elastic_email_file_by_id** — Delete a file from your Elastic Email account. Returns an empty 204 response on success. Required: id (the file's name including its extension, e.g. invoice.pdf).
- **elastic_email_files_download** — Download a file's raw content from Elastic Email. Returns the uploaded file's binary content. Required: file_id (the file's name including its extension, e.g. invoice.pdf).
- **list_all_elastic_email_inboundroute** — List all inbound routes in elasticemail. Returns each route's PublicInboundId, Name, FilterType, Filter, ActionType, ActionParameter, and SortOrder.
- **create_a_elastic_email_inboundroute** — Create an inbound route in elasticemail. Returns the created route including PublicInboundId, Name, FilterType, ActionType, and ActionParameter. Requires Name, Filter, FilterType, and ActionType.
- **get_single_elastic_email_inboundroute_by_id** — Get a single inbound route in elasticemail by id. Returns the route's PublicInboundId, Name, FilterType, Filter, ActionType, ActionParameter, and SortOrder. Required: id.
- **update_a_elastic_email_inboundroute_by_id** — Update an inbound route in elasticemail by id. Returns the updated route including PublicInboundId, Name, FilterType, ActionType, and ActionParameter. Requires id and the Name, Filter, FilterType, and ActionType body fields.
- **delete_a_elastic_email_inboundroute_by_id** — Delete an inbound route in elasticemail by id. Returns an empty 204 response on success. Required: id.
- **elastic_email_inboundroute_bulk_update** — Reorder elasticemail inbound routes so they are evaluated in the order you specify. Returns the reordered routes as an array, each with PublicInboundId, SortOrder, Filter, and ActionType. Required: body items with PublicInboundId and SortOrder (1 = evaluated first).
- **list_all_elastic_email_lists** — List all Elastic Email contact lists. Returns: Name, Status, Recipients, Content.
- **create_a_elastic_email_list** — Create a new Elastic Email contact list. Returns the created list including Name, Status, Recipients, and Content. Required: ListName.
- **get_single_elastic_email_list_by_id** — Get a single Elastic Email contact list by id (the Elastic Email list name). Returns: Name, Status, Recipients, Content. Required: id.
- **update_a_elastic_email_list_by_id** — Update an Elastic Email contact list by id (the Elastic Email list name). Returns the updated list including Name, Status, Recipients, and Content. Required: id.
- **delete_a_elastic_email_list_by_id** — Delete an Elastic Email contact list by id (the Elastic Email list name). Removes all contacts from the list without deleting them from the account. Returns an empty 204 response on success. Required: id.
- **elastic_email_lists_list_contacts** — List the contacts in an elasticemail contact list. Returns the contacts with Email, FirstName, LastName, and Status. Required: list_id.
- **elastic_email_lists_add_contacts** — Add contacts to an elasticemail list. Returns the contacts with Email, FirstName, LastName, and Status. Required: list_id; provide either Emails or Rule in the body — contacts must already exist.
- **elastic_email_lists_remove_contacts** — Remove contacts from an elasticemail list; the contacts are not deleted from the account. Returns the contacts with Email, FirstName, LastName, and Status. Required: list_id; provide either Emails or Rule in the body.
- **list_all_elastic_email_apikeys** — List all Elastic Email API keys. Returns an array of API keys with Name, AccessLevel, DateCreated, LastUse, Expires, and RestrictAccessToIPRange.
- **create_a_elastic_email_apikey** — Create a new Elastic Email API key. Returns the new key's Token, Name, AccessLevel, DateCreated, LastUse, Expires, and RestrictAccessToIPRange. Requires Name and AccessLevel.
- **get_single_elastic_email_apikey_by_id** — Get a single Elastic Email API key by id (the key's Name). Returns: Name, Status, Recipients, Content. Required: id.
- **update_a_elastic_email_apikey_by_id** — Update an existing Elastic Email API key by id (the key's Name). Returns the updated key's Name, AccessLevel, DateCreated, LastUse, Expires, and RestrictAccessToIPRange. Requires id, Name, and AccessLevel.
- **delete_a_elastic_email_apikey_by_id** — Delete an Elastic Email API key by id (the key's Name). Returns the deleted key's Name, AccessLevel, DateCreated, LastUse, Expires, and RestrictAccessToIPRange. Required: id.
- **list_all_elastic_email_smtp_credentials** — List all SMTP credentials configured for the elasticemail account. Returns credentials with Name, Expires, RestrictAccessToIPRange, and Subaccount.
- **create_a_elastic_email_smtp_credential** — Create a new SMTP credential in elasticemail. Returns the newly generated credential with Name, Expires, RestrictAccessToIPRange, and Subaccount. Requires Name — a valid email address used as the SMTP username.
- **get_single_elastic_email_smtp_credential_by_id** — Get a single SMTP credential in elasticemail by id (the credential's name, as returned by the list method). Returns the credential with Name, Expires, RestrictAccessToIPRange, and Subaccount. Required: id.
- **update_a_elastic_email_smtp_credential_by_id** — Update an SMTP credential in elasticemail by id (the credential's name, as returned by the list method). Returns the updated credential with Name, Expires, RestrictAccessToIPRange, and Subaccount. Requires id and Name.
- **delete_a_elastic_email_smtp_credential_by_id** — Delete an SMTP credential from elasticemail by id (the credential's name). Pass subaccount to scope the deletion to a sub-account. Returns an empty 204 response on success.
- **list_all_elastic_email_segments** — List all segments in Elastic Email. Returns Segment records including their name. Supports optional limit and offset pagination.
- **create_a_elastic_email_segment** — Create a new segment in Elastic Email by posting a SegmentPayload body. Returns the created segment object including its Name, Status, Recipients, and Content. Required: Name.
- **get_single_elastic_email_segment_by_id** — Get a specific segment in Elastic Email by name. Returns the Segment object including its name. Required: id (the segment name).
- **update_a_elastic_email_segment_by_id** — Update an existing segment in Elastic Email identified by name. Returns the updated Segment object including its name. Required: id (the segment name) and body (SegmentPayload).
- **delete_a_elastic_email_segment_by_id** — Delete a segment in Elastic Email by name. Returns an empty 204 response on success.
- **list_all_elastic_email_statistics** — Get Elastic Email sending statistics for a period. Returns: Recipients, Name, Status, Content. Required: from (start date); to defaults to now.
- **elastic_email_statistics_campaigns** — List Elastic Email campaign statistics. Returns per-campaign counters: ChannelName, Recipients, EmailTotal, Delivered, Bounced, Opened, Clicked, Unsubscribed.
- **elastic_email_statistics_campaign** — Get Elastic Email sending statistics for a single campaign. Returns: Recipients, Name, Status, Content. Required: campaign_id.
- **elastic_email_statistics_channels** — List Elastic Email channel statistics. Returns per-channel counters: ChannelName, Recipients, EmailTotal, Delivered, Bounced, Opened, Clicked, Unsubscribed.
- **elastic_email_statistics_channel** — Get Elastic Email sending statistics for a single channel. Returns: Recipients, Name, Status, Content. Required: channel_id.
- **get_single_elastic_email_statistic_by_id** — Get sending statistics for your Elastic Email account over a date range. Returns: Name, Status, Recipients, Content, Email, FirstName, LastName. Required: from (start date).
- **list_all_elastic_email_subaccounts** — List all Elastic Email sub-accounts. Returns an array of sub-account records with Email, Status, EmailCredits, Name, Recipients, and Content.
- **create_a_elastic_email_subaccount** — Create a new Elastic Email sub-account. Returns the created sub-account info including its Email, Status, and EmailCredits. Required: Email and Password in the request body.
- **get_single_elastic_email_subaccount_by_id** — Get a single Elastic Email sub-account by id (the sub-account's email address). Returns: Email, Status, EmailCredits, Name, Recipients, Content. Required: id.
- **delete_a_elastic_email_subaccount_by_id** — Delete an Elastic Email sub-account by id (the sub-account's email address). Returns an empty 204 response on success. Required: id.
- **elastic_email_subaccounts_update_email_settings** — Update the email sending settings of an Elastic Email subaccount, such as credit requirements, private IP usage, daily sending limits, and pool assignment. Returns the updated settings including RequiresEmailCredits, EmailSizeLimit, DailySendLimit, MaxContacts, EnablePrivateIPPurchase, and PoolName. Required: subaccount_id.
- **elastic_email_subaccounts_bulk_update** — Add or subtract email credits for an Elastic Email sub-account by the given amount. Returns the updated sub-account info including Email, Status, and EmailCredits. Required: subaccount_id (path) and Credits in the body (positive to add, negative to subtract).
- **list_all_elastic_email_suppressions** — List all suppressions in elasticemail across bounces, complaints, and unsubscribes. Returns suppression records with Reason, SourceInfo, and DateAdded. Optional search text; max 20 per page by default.
- **elastic_email_suppressions_get_bounces** — List bounce suppressions in elasticemail to see which addresses failed delivery. Returns suppression records with Reason, SourceInfo, and DateAdded. Optional search text.
- **elastic_email_suppressions_add_bounces** — Add email addresses to the elasticemail bounce suppression list by posting an array of email strings. Returns an array of Suppression records for the addresses added.
- **elastic_email_suppressions_delete_bounce** — Remove an email address from the elasticemail bounce suppression list. Returns an empty 204 response on success. Required: email.
- **elastic_email_suppressions_get_complaints** — List complaint suppressions in elasticemail to see which addresses reported messages as spam. Returns suppression records with Reason, SourceInfo, and DateAdded. Optional search text.
- **elastic_email_suppressions_add_complaints** — Add email addresses to the elasticemail complaints list so they are no longer sent to. Returns the resulting suppressions with their Email, Date, and Reason. Required: a body array of email addresses.
- **elastic_email_suppressions_delete_complaint** — Remove an email address from the elasticemail complaints list so it can receive email again. Returns an empty 200 response on success. Required: email.
- **elastic_email_suppressions_get_unsubscribes** — List elasticemail unsubscribe suppressions, optionally filtered by search text. Returns each suppression's Email, Date, and Reason.
- **elastic_email_suppressions_add_unsubscribes** — Add one or more email addresses to the elasticemail unsubscribe (suppression) list. Returns an array of Suppression records, each including Email. Required: a JSON array body of email strings (one address per entry).
- **elastic_email_suppressions_delete_unsubscribe** — Remove an email address from the elasticemail unsubscribe (suppression) list. Returns an empty 204 response on success. Required: email.
- **list_all_elastic_email_templates** — List all Elastic Email email templates. Returns templates with Name, Subject, TemplateType, DateAdded, Body parts, and TemplateScope. Required: scopeType (Personal or Global).
- **create_a_elastic_email_template** — Create an Elastic Email email template. Returns the created template including Name, Subject, DateAdded, TemplateType, Body parts (ContentType, Content, Charset), and TemplateScope.
- **get_single_elastic_email_template_by_id** — Get a single Elastic Email email template by id. Returns the template including Name, Subject, TemplateType, DateAdded, Body parts, and TemplateScope. Required: id (the template's name).
- **update_a_elastic_email_template_by_id** — Update an existing Elastic Email email template by id. Returns the updated template including Name, Subject, TemplateType, DateAdded, Body parts, and TemplateScope. Required: id (the template's name).
- **delete_a_elastic_email_template_by_id** — Delete an Elastic Email email template by its name. Returns an empty 204 response on success.
- **elastic_email_verifications_verify** — Verify a single email address in elasticemail. Returns the EmailValidationResult including Email, Domain, Result, PredictedScore, PredictedStatus, and Disposable. Required: the email address as the JSON request body (a bare JSON string).
- **delete_a_elastic_email_verification_by_id** — Delete an email verification result in elasticemail. Returns an empty 204 response on success. Required: id (the verified email address whose result should be deleted).
- **elastic_email_verifications_verify_file** — Upload a CSV or TXT file of email addresses to elasticemail for bulk verification. Returns the VerificationFileResult including VerificationID, Filename, VerificationStatus, FileUploadResult counts, DateAdded, and Source. Required: file (CSV or TXT containing an 'email' column). Use the returned VerificationID to start the verification and fetch results.
- **elastic_email_verifications_get_file_result** — Get the verification result of an uploaded email file in elasticemail. Returns: Name, Status, Recipients, Content. Required: file_id.
- **elastic_email_verifications_delete_file_result** — Delete a file verification result in elasticemail. Returns an empty 204 response on success. Required: file_id.
- **elastic_email_verifications_download_file_result** — Download the results of a completed bulk email-verification file in Elastic Email, including the download link for the processed results. Returns: Name, Status, Recipients, Content. Required: file_id.
- **elastic_email_verifications_list_file_results** — List all verification file results in Elastic Email — every uploaded verification file with its processing status and result counts. Returns: Name, Status, Recipients, Content.
- **get_single_elastic_email_verification_by_id** — Get the Elastic Email verification result for a single email address, passing the verified email address as the record id. Returns: Email, Name, Status, Recipients, Content. Required: id.
- **list_all_elastic_email_webhooks** — List Elastic Email notification webhooks for the account. Returns: WebhookID, Name, DateCreated, DateUpdated, URL, NotifyOncePerEmail, NotificationForSent, NotificationForOpened, NotificationForClicked, NotificationForUnsubscribed, NotificationForAbuseReport, NotificationForError, IsEnabled.
- **create_a_elastic_email_webhook** — Create an Elastic Email webhook that posts email event notifications to a callback URL. Returns the full webhook object including WebhookID, Name, DateCreated, DateUpdated, URL, NotifyOncePerEmail, NotificationForSent, and IsEnabled.
- **get_single_elastic_email_webhook_by_id** — Get a single Elastic Email webhook by id. Returns: WebhookID, Name, DateCreated, DateUpdated, URL, NotifyOncePerEmail, NotificationForSent, NotificationForOpened, NotificationForClicked, NotificationForUnsubscribed, NotificationForAbuseReport, NotificationForError, IsEnabled. Required: id.
- **update_a_elastic_email_webhook_by_id** — Update an Elastic Email webhook by id. Returns the full webhook object including WebhookID, Name, DateCreated, DateUpdated, URL, NotifyOncePerEmail, NotificationForSent, and IsEnabled. Required: id.
- **delete_a_elastic_email_webhook_by_id** — Delete an Elastic Email webhook by id. Returns an empty 204 response on success. Required: id.

## How it works

1. **Link your customer's ElasticEmail account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach ElasticEmail.** The Proxy API is a 1-to-1 mapping of the ElasticEmail API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **Offer native email marketing inside your SaaS** — Let your users design templates, build lists, and launch campaigns from ElasticEmail without leaving your product. Ideal for CRMs, e-commerce platforms, and vertical SaaS that want email marketing as a built-in channel.
- **White-label email sending for multi-tenant platforms** — Auto-provision an isolated ElasticEmail subaccount for each of your customers, allocate email credits, and meter usage for billing. Lets agencies and SaaS platforms resell email infrastructure under their own brand.
- **Close the loop on campaign analytics** — Pull delivery, open, click, bounce, and unsubscribe metrics back into your product so users see email performance alongside their CRM, pipeline, or revenue data. Powered by ElasticEmail events and campaign statistics.
- **Keep contact lists and suppressions in sync** — Mirror contacts, lists, and segments between your SaaS and ElasticEmail, and automatically push unsubscribes or bounces back so users maintain a clean, compliant sender reputation across both systems.
- **Verify email lists before sending** — Give users one-click list hygiene inside your app by submitting email files to ElasticEmail's verification engine and surfacing the scored results. Reduces bounce rates for sales, lead gen, and outreach tools.

## What you can build

- **Campaign launcher** — Create, update, pause, and trigger ElasticEmail campaigns against user-selected lists and templates directly from your UI.
- **Two-way contact and list sync** — Sync contacts, lists, and segments between your product and ElasticEmail, including bulk imports and bulk deletes.
- **Subaccount provisioning engine** — Programmatically create ElasticEmail subaccounts per tenant, update their email settings, and bulk-adjust credits or sending limits for metered billing.
- **Transactional and bulk send API** — Send transactional emails, bulk campaigns, and merge-file sends from your app, then poll email status to confirm delivery.
- **Real-time engagement webhooks** — Register ElasticEmail webhooks on behalf of users to receive opens, clicks, bounces, and unsubscribes and reflect them instantly in your product.
- **Domain authentication onboarding** — Let users add sending domains, trigger SPF/DKIM verification, and set a default domain through a guided in-app flow.

## FAQs

### How do end users authenticate their ElasticEmail account?

ElasticEmail uses API key authentication. Through Truto's connected account flow, your users paste their ElasticEmail API key and Truto securely stores and injects it into every request, so you never handle credentials directly.

### Can we provision subaccounts for each of our customers?

Yes. Truto exposes ElasticEmail's subaccount tools (create, get, delete, update email settings, and bulk update), which lets you spin up an isolated sending environment per tenant and manage credits or sending limits programmatically.

### How do we receive real-time email events like opens and clicks?

Use the webhook tools to register an ElasticEmail webhook pointing to your endpoint. ElasticEmail will push events (delivered, opened, clicked, bounced, unsubscribed, complained) as they happen. You can also poll list_all_elastic_email_events for backfill.

### Does the integration support both transactional and marketing email?

Yes. You can send one-off transactional emails via elastic_email_emails_send_transactional, bulk sends via elastic_email_emails_send_bulk, merge-file sends, and full marketing campaigns via the campaigns tools — all through the same connection.

### How do we keep suppression lists compliant across both systems?

Truto surfaces ElasticEmail's suppression tools for bounces, complaints, and unsubscribes. When a user unsubscribes in your app, push the email to ElasticEmail via elastic_email_suppressions_add_unsubscribes; when ElasticEmail records a bounce, pull it in and update your records.

### Can we verify email addresses before our users send to them?

Yes. Use elastic_email_verifications_verify for single addresses or elastic_email_verifications_verify_file for bulk uploads, then poll the file result endpoints and download the scored output to filter risky addresses before sending.

### How are long-running operations like contact exports and verifications handled?

ElasticEmail processes exports and bulk verifications asynchronously. Truto exposes the corresponding status endpoints (e.g. elastic_email_contacts_export_status, elastic_email_verifications_get_file_result) so you can poll until completion and then fetch the output.
