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.
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.
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.
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.
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.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 oncampaign_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.
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.extraare keyed byfield_id. Thelist_fieldsstream gives the name and format of each one.
Streams
Fields by stream
Lists
Lists
Contact lists of the account.Key:
list_id — Sync: full tableFields:list_id- Unique identifier of the listinternal_name- Internal name of the list, only visible inside E-goipublic_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 tocreated- 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
Contacts
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 tocontact_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 contactconsent_date- Date and time the contact gave consentsubscription_method- How the contact joined the list (manual, form, imported, referral or api)subscription_date- Date and time the contact joined the listsubscription_form- Identifier of the form the contact subscribed throughunsubscription_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 unsubscribingunsubscription_date- Date and time the contact unsubscribed (empty while subscribed)change_date- Date and time the contact was last modifiedfirst_name- First name of the contactlast_name- Last name of the contactbirth_date- Birth date of the contactlanguage- Language of the contact (en, pt, br, es, de, hu or fr)email- Email address of the contactemail_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 streamtags- Identifiers of the tags attached to the contact (see the tags stream)
List Fields
List Fields
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 tofield_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 fieldformat- Format of the field (date, text, cellphone, phone, number, email, options or countries)unique- Whether the field value must be unique within the listoptions- Options of an ‘options’ field (JSON array of objects with option_id and one label per language)
Segments
Segments
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 tosegment_id- Unique identifier of the segmentname- Name of the segmenttype- Type of segment: auto (created by E-goi), saved (rule-based) or tagmatch- How the rules of a saved segment combine: all or anyinvert- Whether a saved segment selects the contacts that do NOT match its rulesrules- 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
Campaigns
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 reportcampaign_id- Numeric identifier of the campaignchannel- 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-goititle- Subject of the campaign (email subject line)list_id- Identifier of the contact list the campaign was sent togroup_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 onecreated_by- Identifier of the E-goi user who created the campaignprocessed_messages- Total number of messages processed for the campaignthumbnail- URL of the campaign thumbnail imagecreated- Date and time the campaign was createdupdated- Date and time the campaign was last updatedstart_date- Date and time the campaign started sendingend_date- Date and time the campaign finished sendingschedule_enabled- Whether the campaign was scheduledschedule_date- Date and time the campaign was scheduled to send
Campaign Groups
Campaign Groups
Groups used to organize campaigns.Key:
group_id — Sync: full tableFields:group_id- Unique identifier of the groupname- Name of the campaign group
Email Campaign Reports
Email Campaign Reports
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 campaignlist_id- Identifier of the contact list the campaign was sent tocampaign_status- Status of the campaign when the report was readcampaign_sent_at- When the campaign went out (start date, else schedule or end date); used as the incremental replication keysends- Total number of messages sentopens- Total number of opens (a contact can open more than once)unique_opens- Number of contacts who opened the emailclicks- Total number of link clicksunique_clicks- Number of contacts who clicked a linkhard_bounces- Number of permanent delivery failuressoft_bounces- Number of temporary delivery failurescomplaints- Number of spam complaintsunsubscriptions- Number of unsubscriptions caused by the campaignby_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)
SMS Campaign Reports
SMS Campaign Reports
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 campaignlist_id- Identifier of the contact list the campaign was sent tocampaign_status- Status of the campaign when the report was readcampaign_sent_at- When the campaign went out (start date, else schedule or end date); used as the incremental replication keydestinations- Number of destinations of the campaignsends- Total number of messages sentdelivered- Number of messages deliverederror- Number of messages that failedinvalid- Number of messages to invalid numberspending- Number of messages still pending deliveryby_network- Stats per mobile network (JSON array of objects with network, sends, delivered, error, invalid and pending)
Push Campaign Reports
Push Campaign Reports
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 campaignlist_id- Identifier of the contact list the campaign was sent tocampaign_status- Status of the campaign when the report was readcampaign_sent_at- When the campaign went out (start date, else schedule or end date); used as the incremental replication keysends- Total number of notifications sentopens- Number of notifications openeddelivered- Number of notifications deliveredreceived- Number of notifications receivedbounces- Number of notifications that bouncederror- Number of notifications that failedby_operating_system- Stats per operating system (JSON array of objects with operating_systems and counters)
Web Push Campaign Reports
Web Push Campaign Reports
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 campaignlist_id- Identifier of the contact list the campaign was sent tocampaign_status- Status of the campaign when the report was readcampaign_sent_at- When the campaign went out (start date, else schedule or end date); used as the incremental replication keysends- Total number of notifications sentopens- Number of notifications openedclicks- Number of notifications clickedbounces- Number of notifications that bouncedby_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)
Automations
Automations
Marketing automations of the account.Key:
automation_id — Sync: full tableFields:automation_id- Unique identifier of the automationtitle- Title of the automationlist_id- Identifier of the contact list the automation runs onstatus- Status of the automation (active or inactive)created_by- Identifier of the E-goi user who created the automationallow_multiple_contacts- Whether a contact can enter the automation more than oncecontact_limit- Maximum number of contacts the automation accepts (0 means no limit)created- Date the automation was createdupdated- Date the automation was last updated
Users
Users
E-goi users of the account and their permission profiles.Key:
user_id — Sync: full tableFields:user_id- Unique identifier of the userusername- Login name of the useris_admin- Whether the user is an administrator of the accountfirst_name- First name of the userlast_name- Last name of the useremail- Email address of the userphone- Phone number of the userprofile_image- URL of the user’s profile imagestatus- Status of the user (active or inactive)created- Date and time the user was createdupdated- Date and time the user was last updatedprofile- Permission profiles of the user (JSON array of objects with profile_id and title)
Email Senders
Email Senders
Email addresses campaigns can be sent from, and their approval status.Key:
sender_id — Sync: full tableFields:sender_id- Unique identifier of the sendername- Display name of the senderemail- Email address the campaigns are sent fromstatus- Approval status of the sender (active, moderation or rejected)
Cellphone Senders
Cellphone Senders
SMS senders (numbers or alphanumeric names) and their approval status.Key:
sender_id — Sync: full tableFields:sender_id- Unique identifier of the sendercellphone- 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)
Suppression List
Suppression List
Emails, domains and numbers E-goi never sends to again (unsubscribes, bounces, manual blocks).Key:
id — Sync: full tableFields:id- Unique identifier of the entryvalue- 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 onecreated- Date and time the value was added to the suppression list