Skip to main content
E-goi is a multichannel marketing automation platform. It manages contact lists and segments, sends email, SMS, push, and web push campaigns, and runs marketing automations. This connector reads your lists, contacts, campaigns, and the delivery and engagement report of each campaign through the E-goi Marketing API (v3).

Before you start

The connection uses your E-goi API key. The API is available on every E-goi plan except GoSend.
1

Copy your API key

Sign in to E-goi, open the user menu in the top right corner, and click Integrations. Copy the value under API Key.
E-goi counts API usage against your plan: each plan includes a monthly number of API requests, and your account also has an hourly limit shared by every integration that uses it. This connector keeps its usage low (see API usage below), but the requests it makes still count toward your quota.

Configuring E-goi as a Source

In the Sources tab, click on the “Add source” button located on the top right of your screen. Then, select the E-goi option from the list of connectors. Click Next and you’ll be prompted to add your access.

1. Add account access

The following configurations are available:
  • API Key: The key from Integrations → API Key in E-goi.
  • Start Date: The earliest campaign send whose report is read on the first sync. Lists, contacts, campaigns, and the other catalogs are always read in full, whatever this date. Each campaign report costs one API request, so on an account with a long history, leaving this empty makes the first sync read one report per campaign ever sent.
  • Report Lookback Days: (Default: 30) How many days of already-sent campaigns have their report read again on every sync. Opens, clicks, bounces, and unsubscriptions keep arriving for weeks after a send; this window keeps recent reports up to date. A larger window costs more API requests on every sync.
Once you’re done, click Next.

2. Select streams

Choose which data streams you want to sync. For faster extractions, select only the streams that are relevant to your analysis. You can select entire groups of streams or pick specific ones.
Tip: The stream can be found more easily by typing its name.
Select the streams and click Next.

3. Configure data streams

Customize how you want your data to appear in your catalog. Select the desired layer where the data will be placed, a folder to organize it inside the layer, a name for each table (which will effectively contain the fetched data) and the type of sync.
  • Layer: choose between the existing layers on your catalog. This is where you will find your new extracted tables as the extraction runs successfully.
  • Folder: a folder can be created inside the selected layer to group all tables being created from this new data source.
  • Table name: we suggest a name, but feel free to customize it. You have the option to add a prefix to all tables at once and make this process faster!
  • Sync Type: you can choose between INCREMENTAL and FULL_TABLE.
    • Incremental: every time the extraction happens, we’ll get only the new data - which is good if, for example, you want to keep every record ever fetched.
    • Full table: every time the extraction happens, we’ll get the current state of the data - which is good if, for example, you don’t want to have deleted data in your catalog.
Keep the campaign report streams on INCREMENTAL. Each sync only reads the reports of recently sent campaigns, so a full-table sync would replace the table with those recent reports alone.
Once you are done configuring, click Next.

4. Configure data source

Describe your data source for easy identification within your organization, not exceeding 140 characters. To define your Trigger, consider how often you want data to be extracted from this source. This decision usually depends on how frequently you need the new table data updated (every day, once a week, or only at specific times). Optionally, you can define some additional settings:
  • Configure Delta Log Retention and determine for how long we should store old states of this table as it gets updated. Read more about this resource here.
  • Determine when to execute an Additional Full Sync. This will complement the incremental data extractions, ensuring that your data is completely synchronized with your source every once in a while.
Once you are ready, click Next to finalize the setup.

5. Check your new source

You can view your new source on the Sources page. If needed, manually trigger the source extraction by clicking on the arrow button. Once executed, your data will appear in your Catalog.
For you to be able to see it on your Catalog, you need at least one successful source run.

Streams and Fields

How syncing works

Catalogs (lists, contacts, list fields, segments, campaigns, automations, tags, users, senders, and the suppression list) are read in full on every sync. E-goi offers no way to ask only for contacts changed since a date, and a full read costs one request per 1,000 records. Campaign reports sync incrementally on campaign_sent_at, the time the campaign went out. Each report stream reads only the campaigns of its channel. On the first sync, those are the campaigns sent since Start Date. On every later sync, they are the campaigns sent since the latest send already read minus Report Lookback Days. Each report is stored under its campaign_hash, so reading it again updates its counters, and reports of older campaigns keep their last values.

API usage

A daily sync of an account with a few lists and a few thousand contacts typically makes a few dozen requests, plus one per campaign inside the report window. What drives the count:
  • one request per 1,000 records of each catalog (contacts are the largest);
  • one request per campaign report, only for campaigns inside the report window;
  • nothing per contact: contact activity and per-contact statistics are not extracted, because they would cost one request per contact on every sync.
When E-goi reports that the hourly limit of your account is spent, the sync pauses until the limit resets and then continues, and the run log says so. If your plan’s API quota is used up, the sync stops with a message saying so. It works again once the quota renews or you add requests to your plan.

Data notes

  • E-goi sends dates without a time zone (for example 2026-09-01 10:30:00). They are stored as UTC, unchanged.
  • Empty dates, which E-goi sends as 0000-00-00 00:00:00, are stored as null.
  • Nested data — contact custom fields (extra), report breakdowns (by_date, by_url, and so on), segment rules, and field options — is stored as JSON text.
  • Custom field values in contacts.extra are keyed by field_id. The list_fields stream gives the name and format of each one.

Streams

Fields by stream

Contact lists of the account.Key: list_id — Sync: full tableFields:
  • list_id - Unique identifier of the list
  • internal_name - Internal name of the list, only visible inside E-goi
  • public_name - Public name of the list, shown to contacts (e.g. in forms and emails)
  • status - Status of the list (active or blocked)
  • group_id - Identifier of the list group the list belongs to
  • created - Date and time the list was created (as sent by E-goi, without time zone)
  • updated - Date and time the list was last updated (as sent by E-goi, without time zone)
Contacts of every list, with their channel statuses, subscription history, custom fields and tags.Key: list_id, contact_id — Sync: full tableFields:
  • list_id - Identifier of the E-goi contact list the record belongs to
  • contact_id - Unique identifier of the contact in the list (10 hexadecimal characters)
  • status - Status of the contact in the list (active, inactive, removed or unconfirmed)
  • consent - Consents given by the contact
  • consent_date - Date and time the contact gave consent
  • subscription_method - How the contact joined the list (manual, form, imported, referral or api)
  • subscription_date - Date and time the contact joined the list
  • subscription_form - Identifier of the form the contact subscribed through
  • unsubscription_method - How the contact left the list (manual, form, unsubscribe_link, bounce or api)
  • unsubscription_reason - Reason given for unsubscribing (not_interested, lack_of_time, email_address_change, spam or other)
  • unsubscription_observation - Free-text comment left when unsubscribing
  • unsubscription_date - Date and time the contact unsubscribed (empty while subscribed)
  • change_date - Date and time the contact was last modified
  • first_name - First name of the contact
  • last_name - Last name of the contact
  • birth_date - Birth date of the contact
  • language - Language of the contact (en, pt, br, es, de, hu or fr)
  • email - Email address of the contact
  • email_status - Status of the email channel for the contact (active or inactive)
  • cellphone - Mobile number of the contact (country code and number split by ’-’)
  • cellphone_status - Status of the SMS channel for the contact (active or inactive)
  • phone - Landline number of the contact (country code and number split by ’-’)
  • phone_status - Status of the voice channel for the contact (active or inactive)
  • push_token_android - Android push tokens of the contact (JSON array of objects with app_id and token)
  • push_token_ios - iOS push tokens of the contact (JSON array of objects with app_id and token)
  • extra - Custom (extra) fields of the contact (JSON array of objects with field_id, format, value and, for phone fields, status). Field names are in the list_fields stream
  • tags - Identifiers of the tags attached to the contact (see the tags stream)
Base and custom fields of every list. Use it to name the field_id keys in contacts.extra.Key: list_id, field_id — Sync: full tableFields:
  • list_id - Identifier of the E-goi contact list the record belongs to
  • field_id - Identifier of the field: the field name for base fields (e.g. email), a number for extra fields (matches field_id in contacts.extra)
  • type - Field type: base (built into E-goi) or extra (custom field)
  • name - Name of the field
  • format - Format of the field (date, text, cellphone, phone, number, email, options or countries)
  • unique - Whether the field value must be unique within the list
  • options - Options of an ‘options’ field (JSON array of objects with option_id and one label per language)
Segments of every list: automatic, rule-based (saved) and tag segments.Key: list_id, segment_id — Sync: full tableFields:
  • list_id - Identifier of the E-goi contact list the record belongs to
  • segment_id - Unique identifier of the segment
  • name - Name of the segment
  • type - Type of segment: auto (created by E-goi), saved (rule-based) or tag
  • match - How the rules of a saved segment combine: all or any
  • invert - Whether a saved segment selects the contacts that do NOT match its rules
  • rules - Rules of a saved segment (JSON array of objects with field_id, operator and value)
  • created - Date and time the segment was created (tag segments)
  • updated - Date and time the segment was last updated (tag segments)
Campaigns of every channel, with their status and send dates.Key: campaign_hash — Sync: full tableFields:
  • campaign_hash - Unique hash of the campaign, used to fetch its report
  • campaign_id - Numeric identifier of the campaign
  • channel - Channel of the campaign (email, push, sms, smart_sms, voice or web_push)
  • status - Status of the campaign (draft, canceled, queued, paused, sending or sent)
  • internal_name - Internal name of the campaign, only visible inside E-goi
  • title - Subject of the campaign (email subject line)
  • list_id - Identifier of the contact list the campaign was sent to
  • group_id - Identifier of the campaign group (see the campaign_groups stream)
  • automation_id - Identifier of the automation that sends the campaign, when it is part of one
  • created_by - Identifier of the E-goi user who created the campaign
  • processed_messages - Total number of messages processed for the campaign
  • thumbnail - URL of the campaign thumbnail image
  • created - Date and time the campaign was created
  • updated - Date and time the campaign was last updated
  • start_date - Date and time the campaign started sending
  • end_date - Date and time the campaign finished sending
  • schedule_enabled - Whether the campaign was scheduled
  • schedule_date - Date and time the campaign was scheduled to send
Groups used to organize campaigns.Key: group_id — Sync: full tableFields:
  • group_id - Unique identifier of the group
  • name - Name of the campaign group
Delivery and engagement report of each sent email campaign, with daily, hourly, location, domain, link and email-client breakdowns.Key: campaign_hash — Sync: incremental on campaign_sent_atFields:
  • campaign_hash - Hash of the campaign the report belongs to (see the campaigns stream)
  • campaign_id - Numeric identifier of the campaign
  • list_id - Identifier of the contact list the campaign was sent to
  • campaign_status - Status of the campaign when the report was read
  • campaign_sent_at - When the campaign went out (start date, else schedule or end date); used as the incremental replication key
  • sends - Total number of messages sent
  • opens - Total number of opens (a contact can open more than once)
  • unique_opens - Number of contacts who opened the email
  • clicks - Total number of link clicks
  • unique_clicks - Number of contacts who clicked a link
  • hard_bounces - Number of permanent delivery failures
  • soft_bounces - Number of temporary delivery failures
  • complaints - Number of spam complaints
  • unsubscriptions - Number of unsubscriptions caused by the campaign
  • by_date - Daily stats (JSON array of objects with date in DD-MM-YYYY, sends, opens, clicks, hard_bounces, soft_bounces, complaints and unsubscriptions)
  • by_weekday - Stats per day of the week (JSON array; weekday 0 is Sunday)
  • by_hour - Stats per hour of the day (JSON array; hour 00-23)
  • by_location - Stats per location (JSON array of objects with location, region, country and counters)
  • by_domain - Stats per recipient email domain (JSON array)
  • by_url - Clicks per link of the email (JSON array of objects with url and clicks)
  • by_reader - Opens per email client (JSON array of objects with reader, type and opens)
Delivery report of each sent SMS campaign, with a breakdown per mobile network.Key: campaign_hash — Sync: incremental on campaign_sent_atFields:
  • campaign_hash - Hash of the campaign the report belongs to (see the campaigns stream)
  • campaign_id - Numeric identifier of the campaign
  • list_id - Identifier of the contact list the campaign was sent to
  • campaign_status - Status of the campaign when the report was read
  • campaign_sent_at - When the campaign went out (start date, else schedule or end date); used as the incremental replication key
  • destinations - Number of destinations of the campaign
  • sends - Total number of messages sent
  • delivered - Number of messages delivered
  • error - Number of messages that failed
  • invalid - Number of messages to invalid numbers
  • pending - Number of messages still pending delivery
  • by_network - Stats per mobile network (JSON array of objects with network, sends, delivered, error, invalid and pending)
Delivery and open report of each sent mobile push campaign, with a breakdown per operating system.Key: campaign_hash — Sync: incremental on campaign_sent_atFields:
  • campaign_hash - Hash of the campaign the report belongs to (see the campaigns stream)
  • campaign_id - Numeric identifier of the campaign
  • list_id - Identifier of the contact list the campaign was sent to
  • campaign_status - Status of the campaign when the report was read
  • campaign_sent_at - When the campaign went out (start date, else schedule or end date); used as the incremental replication key
  • sends - Total number of notifications sent
  • opens - Number of notifications opened
  • delivered - Number of notifications delivered
  • received - Number of notifications received
  • bounces - Number of notifications that bounced
  • error - Number of notifications that failed
  • by_operating_system - Stats per operating system (JSON array of objects with operating_systems and counters)
Delivery, open and click report of each sent web push campaign, with device, operating system, browser and URL breakdowns.Key: campaign_hash — Sync: incremental on campaign_sent_atFields:
  • campaign_hash - Hash of the campaign the report belongs to (see the campaigns stream)
  • campaign_id - Numeric identifier of the campaign
  • list_id - Identifier of the contact list the campaign was sent to
  • campaign_status - Status of the campaign when the report was read
  • campaign_sent_at - When the campaign went out (start date, else schedule or end date); used as the incremental replication key
  • sends - Total number of notifications sent
  • opens - Number of notifications opened
  • clicks - Number of notifications clicked
  • bounces - Number of notifications that bounced
  • by_device - Stats per device type (JSON array)
  • by_operating_system - Stats per operating system and version (JSON array)
  • by_browser - Stats per browser and version (JSON array)
  • by_url - Stats per website URL (JSON array)
Marketing automations of the account.Key: automation_id — Sync: full tableFields:
  • automation_id - Unique identifier of the automation
  • title - Title of the automation
  • list_id - Identifier of the contact list the automation runs on
  • status - Status of the automation (active or inactive)
  • created_by - Identifier of the E-goi user who created the automation
  • allow_multiple_contacts - Whether a contact can enter the automation more than once
  • contact_limit - Maximum number of contacts the automation accepts (0 means no limit)
  • created - Date the automation was created
  • updated - Date the automation was last updated
Tags available to label contacts.Key: tag_id — Sync: full tableFields:
  • tag_id - Unique identifier of the tag
  • name - Name of the tag
  • color - Color of the tag (hex code)
E-goi users of the account and their permission profiles.Key: user_id — Sync: full tableFields:
  • user_id - Unique identifier of the user
  • username - Login name of the user
  • is_admin - Whether the user is an administrator of the account
  • first_name - First name of the user
  • last_name - Last name of the user
  • email - Email address of the user
  • phone - Phone number of the user
  • profile_image - URL of the user’s profile image
  • status - Status of the user (active or inactive)
  • created - Date and time the user was created
  • updated - Date and time the user was last updated
  • profile - Permission profiles of the user (JSON array of objects with profile_id and title)
Email addresses campaigns can be sent from, and their approval status.Key: sender_id — Sync: full tableFields:
  • sender_id - Unique identifier of the sender
  • name - Display name of the sender
  • email - Email address the campaigns are sent from
  • status - Approval status of the sender (active, moderation or rejected)
SMS senders (numbers or alphanumeric names) and their approval status.Key: sender_id — Sync: full tableFields:
  • sender_id - Unique identifier of the sender
  • cellphone - Sender shown on SMS messages (number or alphanumeric name)
  • type - Type of SMS sender (alpha_numeric or numeric)
  • status - Approval status of the sender (active, moderation or rejected)
Emails, domains and numbers E-goi never sends to again (unsubscribes, bounces, manual blocks).Key: id — Sync: full tableFields:
  • id - Unique identifier of the entry
  • value - Suppressed value (email address, email domain, email user or number)
  • type - Type of value (email, email_domain, email_user, cellphone or phone)
  • method - How the value entered the suppression list (unsubscribe, bounce, manual, other or forgotten)
  • campaign_hash - Hash of the campaign that caused the suppression, when there is one
  • created - Date and time the value was added to the suppression list