Skip to main content

EmailOctopus

EmailOctopus is an affordable email marketing platform for growing and engaging a subscriber base. It creates and sends campaigns, manages contact lists, builds automated workflows, and tracks opens, clicks, bounces, and unsubscribes, with segmentation, custom fields, and tags. Its REST API exposes campaigns, contacts, lists, tags, automations, and reporting data.

EmailOctopus icon

Power end-to-end data operations for your EmailOctopus API with Nexla. Our bi-directional EmailOctopus connector is purpose-built for EmailOctopus, making it simple to ingest data, sync it across systems, and deliver it anywhere — all with no coding required. Nexla turns API-sourced data into ready-to-use, reusable data products and makes it easy to send data to EmailOctopus or any other destination. With comprehensive monitoring, lineage tracking, and access controls, Nexla keeps your EmailOctopus workflows fast, secure, and fully governed.

Features

Type: API

SourceDestination

  • Seamless API Integration: Connect to any endpoint as source or destination without coding, with automatic data product creation
  • Visual Composition & Chaining: Build complex integrations using visual templates, chain API calls, and compose workflows with data validation and filtering
  • API Proxy: Expose curated slices of your data securely with a secure and customizable API proxy that validates and transforms data on the fly
  • Request optimization with intelligent batching, retry, and caching to minimize API calls and costs

Prerequisites

To connect Nexla to EmailOctopus, you will need an active EmailOctopus account and an API key. The EmailOctopus API uses Bearer token authentication, passing your API key in the Authorization request header for every API call. API keys are scoped to your account and grant access to all resources accessible within that account.

Obtain an EmailOctopus API Key

EmailOctopus allows you to create and manage multiple named API keys from the Integrations & API section of your account dashboard.

  1. Log in to your EmailOctopus account at emailoctopus.com.

  2. Click your account name or profile icon in the top-right corner of the dashboard to open the account dropdown menu.

  3. Select Integrations & API from the dropdown menu.

  4. On the Integrations & API page, scroll to the Developer tools section and locate the API sub-section. Click the Manage button to open the API key management page.

  5. On the API keys page, click the Add key button at the bottom of the list.

  6. Enter a descriptive name for your new API key — for example, Nexla Integration — to help you identify it later. Click the Create button to generate the key.

  7. Your new API key will be displayed on the confirmation screen. Copy it immediately and store it in a secure location such as a password manager or secrets vault.

Important

The full API key value is displayed only once, at the moment of creation. After you navigate away from the confirmation page, EmailOctopus will not show the key again. If the key is lost, you must delete it and generate a new one.

EmailOctopus supports multiple API keys per account, making it straightforward to use separate keys for different integrations or environments. For complete information about creating and deleting API keys, see the EmailOctopus API key documentation.

Authenticate

Credentials required

Authenticate using EmailOctopus API key. Include your API key in the Authorization header as a Bearer token.

FieldRequiredSecretDescription
API Key ValueYesYesAn encoded string value used as a secret token to authenticate API requests

Create a credential in Nexla

  1. After selecting the data source/destination type, click the Add Credential tile to open the Add New Credential overlay.

  2. Enter a name for the credential in the Credential Name field and a short, meaningful description in the Credential Description field.

  3. Enter the EmailOctopus API key you generated in the API Key Value field. Nexla will transmit this key as a Bearer token in the Authorization header for all requests made to the EmailOctopus API on your behalf.

    Keep your API key confidential. Avoid storing it in source code repositories, log files, or other locations where it may be exposed. If you believe a key has been compromised, navigate to the EmailOctopus API key management page, delete the affected key, and create a replacement.

  4. Click the Save button at the bottom of the overlay. The newly added credential will now appear in a tile on the Authenticate screen during data source/destination creation.

Use as a data source

To create a new data flow, navigate to the Integrate section, and click the New Data Flow button. Select the EmailOctopus connector tile, then select the credential that will be used to connect to the EmailOctopus account, and click Next; or, create a new EmailOctopus credential for use in this flow.

Endpoint templates

Nexla provides pre-built templates that can be used to rapidly configure data sources to ingest data from common EmailOctopus endpoints. Each template is designed specifically for the corresponding EmailOctopus endpoint, making data source setup easy and efficient. Select the endpoint from which this source will fetch data from the Endpoint pulldown menu. Available endpoint templates are listed in the expandable boxes below. Click on an endpoint to see more information about it and how to configure your data source for this endpoint.

List Campaigns

Retrieves a paginated list of all campaigns in your EmailOctopus account. Use this endpoint to pull campaign metadata such as names, statuses, subjects, and creation dates for reporting or auditing purposes.

  • This endpoint returns all campaigns in your account and supports cursor-based pagination, so Nexla will automatically fetch additional pages until all campaigns have been retrieved.
  • Optionally, enter a value in the Limit field to control the maximum number of campaigns returned per page. When left blank, the EmailOctopus API applies its default page size.

This endpoint returns campaign-level metadata. To retrieve contact-level engagement data such as opens, clicks, bounces, or unsubscribes for a specific campaign, use one of the campaign report endpoints such as Campaign Contact Reports, Campaign Links Report, or Campaign Summary Report.

List Contact Lists

Retrieves a paginated list of all contact lists (also called mailing lists or audiences) in your EmailOctopus account. Use this endpoint to enumerate available lists and their metadata, such as names, IDs, and subscriber counts.

  • This endpoint automatically paginates through all contact lists in your account. Nexla will continue fetching pages until all lists have been retrieved.
  • Optionally, enter a value in the Limit field to control the maximum number of lists returned per page.

List IDs returned by this endpoint are required by several other endpoints, such as Get Contacts and Get List. Note these IDs when building multi-step data flows that pull contact-level data from specific lists.

Get Campaign

Retrieves the full details of a single campaign by its unique identifier. Use this endpoint when you need metadata for one specific campaign rather than paginating through all campaigns.

  • Enter the unique identifier of the campaign you want to retrieve in the Campaign ID field. Campaign IDs can be found by first running the List Campaigns endpoint.

This endpoint returns a single JSON object representing the campaign, not an array. Nexla reads the response at the root path ($) and will produce a single-record Nexset for each run.

Campaign Contact Reports

Returns a paginated list of per-contact engagement records for a specific campaign. Each record indicates how an individual contact interacted with the campaign — for example, whether they opened it, clicked a link, bounced, complained, or unsubscribed.

  • Enter the unique identifier of the campaign whose contact reports you want to retrieve in the Campaign ID field. Campaign IDs can be obtained from the List Campaigns or Get Campaign endpoints.

  • Optionally, enter a value in the Limit field to control the maximum number of contact report records returned per page.

  • Optionally, enter a contact engagement status in the Status field to filter the results. Valid status values include:

    • opened — contacts who opened the campaign
    • clicked — contacts who clicked a link in the campaign
    • bounced — contacts whose email address bounced
    • complained — contacts who marked the campaign as spam
    • unsubscribed — contacts who unsubscribed after receiving the campaign

Leave the Status field blank to retrieve records for contacts with any engagement status. Nexla uses cursor-based pagination to automatically retrieve all pages until no further records remain.

Campaign Links Report

Retrieves link click statistics for all links included in a specific campaign. Use this endpoint to analyze which links in a campaign received the most engagement, supporting click-through rate analysis and campaign optimization.

  • Enter the unique identifier of the campaign for which you want link click statistics in the Campaign ID field. Campaign IDs can be obtained from the List Campaigns or Get Campaign endpoints.

  • This endpoint is not paginated and returns all link report data for the specified campaign in a single response.

Campaign Summary Report

Retrieves aggregated summary statistics for a specific campaign, including total counts for opens, unique opens, clicks, unique clicks, bounces, complaints, and unsubscribes. Use this endpoint for high-level campaign performance reporting.

  • Enter the unique identifier of the campaign for which you want the summary report in the Campaign ID field. Campaign IDs can be obtained from the List Campaigns or Get Campaign endpoints.

  • This endpoint returns a single summary object for the specified campaign and is not paginated.

For contact-level engagement detail (individual records per contact), use the Campaign Contact Reports endpoint instead. The Campaign Summary Report provides roll-up totals only.

Get Contacts

Returns a paginated list of all contacts in a specific mailing list, with support for filtering by subscription status, tag, and creation or update timestamps. Use this endpoint to export subscriber data for analysis, synchronization with CRMs, or audience segmentation workflows.

  • Enter the unique identifier of the contact list from which you want to retrieve contacts in the List ID field. List IDs can be obtained from the List Contact Lists or Get List endpoints.

  • Optionally, enter a value in the Limit field to control the maximum number of contact records returned per page.

  • Optionally, filter results using any combination of the following fields:

    • Tag — Enter a tag name to retrieve only contacts that have been assigned that tag.
    • Status — Enter a subscription status to filter contacts. Common values include subscribed and unsubscribed.
    • Created Before — Enter an ISO 8601 timestamp (e.g., 2024-01-31T00:00:00+00:00) to retrieve only contacts created on or before that date and time.
    • Created After — Enter an ISO 8601 timestamp to retrieve only contacts created on or after that date and time.
    • Updated Before — Enter an ISO 8601 timestamp to retrieve only contacts last updated on or before that date and time.
    • Updated After — Enter an ISO 8601 timestamp to retrieve only contacts last updated on or after that date and time.

Nexla uses cursor-based pagination to automatically retrieve all pages of contact records. For incremental data loads, use the Created After or Updated After filters combined with Nexla date/time macros to fetch only new or recently changed contacts on each run.

Get Contact

Retrieves the full details of a single contact from a specific list by contact ID. Use this endpoint when you need to look up a specific subscriber's information including their email address, custom field values, tags, and subscription status.

  • Enter the unique identifier of the contact list containing the contact in the List ID field.

  • Enter the unique identifier of the contact you want to retrieve in the Contact ID field. Contact IDs can be obtained from the Get Contacts endpoint.

Get List

Retrieves the details of a single mailing list by its unique identifier, including its name, creation date, and field definitions. Use this endpoint to inspect the schema of a list before fetching its contacts.

  • Enter the unique identifier of the list you want to retrieve in the List ID field. List IDs can be obtained from the List Contact Lists endpoint.

Get All Tags

Returns a paginated list of all tags defined within a specific contact list. Tags in EmailOctopus are labels assigned to contacts to enable segmentation and targeted automation. Use this endpoint to enumerate available tags for a list.

  • Enter the unique identifier of the contact list whose tags you want to retrieve in the Id field.

  • Optionally, enter a value in the Limit field to control the maximum number of tags returned per page.

Get Bounced Contacts for a Campaign

Returns a paginated list of contacts whose email addresses bounced when a specific campaign was sent. Use this endpoint to identify and manage bounced addresses to maintain list hygiene and protect deliverability.

  • Enter the unique identifier of the campaign for which you want to retrieve bounced contact records in the Campaign ID field.

  • Optionally, enter a value in the Limit field to control the maximum number of records returned per page.

Get Contacts Who Clicked a Campaign Link

Returns a paginated list of contacts who clicked at least one link in a specific campaign. Use this endpoint to identify highly engaged subscribers for follow-up targeting or audience segmentation.

  • Enter the unique identifier of the campaign for which you want to retrieve click engagement records in the Campaign ID field.

  • Optionally, enter a value in the Limit field to control the maximum number of records returned per page.

Get Contacts Who Complained About a Campaign

Returns a paginated list of contacts who marked a specific campaign as spam. Use this endpoint to monitor complaint rates and remove or suppress complainers to protect your sender reputation.

  • Enter the unique identifier of the campaign for which you want to retrieve complaint records in the Campaign ID field.

  • Optionally, enter a value in the Limit field to control the maximum number of records returned per page.

Get Contacts Who Opened a Campaign

Returns a paginated list of contacts who opened a specific campaign. Use this endpoint to identify engaged subscribers and build segments for targeted follow-up campaigns or re-engagement workflows.

  • Enter the unique identifier of the campaign for which you want to retrieve open engagement records in the Campaign ID field.

  • Optionally, enter a value in the Limit field to control the maximum number of records returned per page.

Get Contacts Who Unsubscribed After a Campaign

Returns a paginated list of contacts who unsubscribed from your list after receiving a specific campaign. Use this endpoint to track unsubscribe events, analyze campaign-driven churn, and keep downstream systems in sync with your EmailOctopus subscription status.

  • Enter the unique identifier of the campaign for which you want to retrieve unsubscribe records in the Campaign ID field.

  • Optionally, enter a value in the Limit field to control the maximum number of records returned per page.

Once the selected endpoint template has been configured, click the Test button to the right of the endpoint selection menu to retrieve a sample of the data that will be fetched. Sample data will be displayed in the Endpoint Test Result panel on the right, allowing you to verify that the source is configured correctly before saving.

Manual configuration

EmailOctopus data sources can also be manually configured to ingest data from any valid EmailOctopus API endpoint, including endpoints not covered by the pre-built templates, chained API calls, or custom request parameters. Select the Advanced tab at the top of the configuration screen, and follow the instructions in Connect to Any API to configure the API method, endpoint URL, date/time and lookup macros, path to data, metadata, and request headers.

All EmailOctopus API endpoints begin with https://api.emailoctopus.com/ (for example, https://api.emailoctopus.com/campaigns to list all campaigns, or https://api.emailoctopus.com/lists/{list_id}/contacts to retrieve contacts from a specific list). For endpoints that return a list of records, set the path to data to $.data[*]; for endpoints that return a single object (such as Get Campaign or Campaign Summary Report), use $. Paginated responses also include a paging object alongside the data array, which can be captured as metadata. You do not need to include an Authorization header — Nexla automatically includes the Bearer token from your saved EmailOctopus credential in every API request.

Once all of the relevant settings have been configured, click the Create button in the upper right corner of the screen to save and create the new EmailOctopus data source. Nexla will now begin ingesting data from the configured endpoint and will organize any data that it finds into one or more Nexsets.

Use as a destination

Click the + icon on the Nexset that will be sent to the EmailOctopus destination, and select the Send to Destination option from the menu. Select the EmailOctopus connector from the list of available destination connectors, then select the credential that will be used to connect to the EmailOctopus account, and click Next; or, create a new EmailOctopus credential for use in this flow.

Endpoint templates

Nexla provides pre-built templates that can be used to rapidly configure destinations to send data to common EmailOctopus endpoints. Each template is designed specifically for the corresponding EmailOctopus endpoint, making destination setup easy and efficient. Select the endpoint to which data will be sent from the Endpoint pulldown menu. Then, click on the template in the list below to expand it, and follow the instructions to configure additional endpoint settings.

Start an Automation for a Contact

Enqueues a contact into an EmailOctopus automation workflow. Use this endpoint to trigger drip sequences, onboarding workflows, or any other automation for specific contacts based on data arriving in Nexla — for example, triggering a welcome series when a new subscriber is added from a CRM.

  • Enter the unique identifier of the EmailOctopus automation you want to trigger in the Automation ID field. Automation IDs can be found in the EmailOctopus dashboard by navigating to Automations and opening the automation you want to use.

  • The request body must include the contact's email address. Nexla will map the appropriate Nexset field to the email_address property in the JSON payload sent to EmailOctopus.

The contact must already exist in the EmailOctopus list associated with the automation before this endpoint can enqueue them. If the contact does not yet exist, use the Create Contact or Create or Update Contact endpoint first.

Create Contact

Creates a new contact record in a specific EmailOctopus mailing list. Use this endpoint to add new subscribers to a list from an external data source, such as a CRM, e-commerce platform, or sign-up form processor.

  • Enter the unique identifier of the EmailOctopus list to which you want to add the contact in the List ID field. List IDs can be found by running the List Contact Lists data source endpoint, or by navigating to your EmailOctopus account and opening the list.

  • The JSON payload sent to EmailOctopus must include the contact's email_address. Additional optional fields include fields (a JSON object of custom field values keyed by field tag), tags (an array of tag names), and status (either subscribed or unsubscribed).

If the email address already exists in the list, the EmailOctopus API will return an error. To avoid errors when the contact may already exist, use the Create or Update Contact (upsert) endpoint instead.

Create or Update Contact

Creates a new contact or updates an existing contact in a specific EmailOctopus list (upsert operation). This is the recommended endpoint for syncing subscriber data from external sources, as it handles both new and existing contacts without returning an error for duplicates.

  • Enter the unique identifier of the EmailOctopus list in the List ID field. The upsert operation will either add a new contact or update the existing contact with the matching email address in this list.

  • The JSON payload must include the contact's email_address. Optional fields include fields (custom field values as a JSON object), tags (an array of tag names to assign), and status (subscribed or unsubscribed).

When updating an existing contact, only the fields present in the request payload are modified. Fields not included in the payload retain their existing values. Tags provided in the request are added to the contact's existing tags rather than replacing them.

Update Multiple List Contacts

Updates multiple contacts in a specific EmailOctopus list in a single batch API call. Use this endpoint when you need to apply bulk changes to subscriber records — such as updating custom field values or subscription statuses across a large set of contacts.

  • Enter the unique identifier of the EmailOctopus list containing the contacts to update in the List ID field.

  • The JSON payload must be structured according to the EmailOctopus batch update format, which contains an array of contact objects. Each contact object must include email_address and the fields to update.

Use the Record Batching options in the Manual Configuration section to group multiple Nexset records into a single batch payload when sending large volumes of updates. This reduces the number of API calls and improves throughput.

Update Contact

Updates an existing contact's email address, custom field values, tags, or subscription status in a specific EmailOctopus list. Use this endpoint to keep subscriber profiles in sync with changes made in external systems such as CRMs or data warehouses.

  • Enter the unique identifier of the EmailOctopus list containing the contact in the List ID field.

  • Enter the unique identifier of the contact to update in the Contact ID field. Contact IDs can be retrieved using the Get Contacts data source endpoint.

  • The JSON payload may include any combination of the following updateable fields: email_address, fields (custom field values), tags, and status.

Delete Contact

Permanently removes a contact from a specific EmailOctopus list. Use this endpoint when contacts should be fully removed from a list — for example, to process deletion requests for GDPR or CCPA compliance.

  • Enter the unique identifier of the EmailOctopus list from which the contact should be removed in the List ID field.

  • Enter the unique identifier of the contact to delete in the Contact ID field. Contact IDs can be retrieved using the Get Contacts data source endpoint.

Deleting a contact from a list is permanent and cannot be undone. If you want to prevent a contact from receiving future emails without permanently deleting their record, consider updating their status to unsubscribed using the Update Contact endpoint instead.

Create Field

Creates a new custom contact field in a specific EmailOctopus list. Custom fields allow you to store additional subscriber attributes beyond the default email address — such as first name, last name, date of birth, or any other data relevant to your audience.

  • Enter the unique identifier of the EmailOctopus list in which the new custom field should be created in the List ID field.

  • The JSON payload must specify the field label (the display name) and type (the data type, such as TEXT, NUMBER, DATE, or URL).

Update Field

Updates the label or other properties of an existing custom contact field in a specific EmailOctopus list. Use this endpoint to rename or reconfigure fields as your data model evolves.

  • Enter the unique identifier of the EmailOctopus list containing the field in the List ID field.

  • Enter the tag identifier of the field to update in the Field Tag field. Field tags are system-generated identifiers (e.g., FirstName or DateOfBirth) assigned when a field is created. They can be found in the EmailOctopus list settings or via the Get List data source endpoint.

Delete Field

Permanently removes a custom contact field from a specific EmailOctopus list. Use this endpoint to clean up obsolete fields that are no longer needed.

  • Enter the unique identifier of the EmailOctopus list from which the field should be removed in the List ID field.

  • Enter the tag identifier of the field to delete in the Field Tag field.

Important

Deleting a custom field permanently removes the field definition and all associated data stored in that field for every contact in the list. This action cannot be undone.

Create List

Creates a new mailing list in your EmailOctopus account. Use this endpoint to programmatically provision new lists — for example, when setting up list-per-segment or list-per-product structures from an automated pipeline.

  • The JSON payload must include the name property, which sets the display name of the new list.
  • No additional path parameters are required for this endpoint.

Update List

Updates the name or other properties of an existing EmailOctopus mailing list. Use this endpoint to rename lists as part of an automated list management workflow.

  • Enter the unique identifier of the list to update in the List ID field. List IDs can be obtained from the List Contact Lists data source endpoint.

  • The JSON payload should include the name property with the new list name.

Delete a List

Permanently deletes an EmailOctopus mailing list and all contacts, fields, and associated data within it. Use this endpoint with care — only when a list and all of its data should be completely removed from your EmailOctopus account.

  • Enter the unique identifier of the list to delete in the Id field. List IDs can be obtained from the List Contact Lists data source endpoint.

Important

Deleting a list permanently removes the list and all subscriber data within it. This action cannot be undone. Ensure that all valuable contact data has been exported before proceeding.

Create Tag

Creates a new tag within a specific EmailOctopus list. Tags are labels that can be assigned to contacts to enable segmentation, filtering, and targeted automation. Use this endpoint to programmatically create tag definitions for new use cases.

  • Enter the unique identifier of the EmailOctopus list in which the tag should be created in the Id field.

  • The JSON payload must include the name property specifying the tag name.

Update Tag

Updates the name or properties of an existing tag in a specific EmailOctopus list. Use this endpoint to rename tags as part of a list management or data governance workflow.

  • Enter the unique identifier of the EmailOctopus list containing the tag in the List Id field.

  • Enter the current name of the tag to update in the Tag field.

  • The JSON payload should include the updated name property for the tag.

Delete Tag

Permanently deletes a tag from a specific EmailOctopus list. Deleting a tag removes it from all contacts in the list to which it was assigned. Use this endpoint to clean up obsolete tags.

  • Enter the unique identifier of the EmailOctopus list from which the tag should be removed in the List Id field.

  • Enter the name of the tag to delete in the Tag Name field.

Once the selected endpoint template has been configured, click the Test button at the top of the Sample Payload panel and expand a listed sample to send a test payload to the EmailOctopus API and verify the destination is configured correctly.

Manual configuration

EmailOctopus destinations can also be manually configured to send data to any valid EmailOctopus API endpoint. Select the Advanced tab at the top of the configuration screen, and follow the instructions in Connect to Any API to configure the API method, data format, endpoint URL, request headers, attribute exclusions, record batching, and response webhooks.

All EmailOctopus write endpoints begin with https://api.emailoctopus.com/ (for example, https://api.emailoctopus.com/lists/{list_id}/contacts to create or upsert a contact, or https://api.emailoctopus.com/lists/{list_id}/contacts/{contact_id} to update or delete a specific contact). EmailOctopus accepts JSON as the primary data format for POST, PUT, and DELETE operations. You do not need to include an Authorization header — Nexla automatically includes the Bearer token from your saved EmailOctopus credential in every API request.

Save & activate

Once all endpoint settings have been configured, click the Done button in the upper right corner of the screen to save and create the destination. To send the data to the configured EmailOctopus endpoint, open the destination resource menu, and select Activate.

The Nexset data will not be sent to EmailOctopus until the destination is activated. Destinations can be activated immediately or at a later time, providing full control over data movement.