Before you start
Mautic ships with its API switched off. An administrator of your instance has to turn it on before Nekt can read anything.Turn on the API
Create the credentials
Configuring Mautic as a Source
In the Sources tab, click on the “Add source” button located on the top right of your screen. Then, select the Mautic 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:-
Mautic URL: The address of your Mautic installation, with no trailing slash — for example
https://mautic.example.com. This is your own server, not a shared Mautic address. -
Authentication Method:
oauth2to sign in with an API credential, orbasicto sign in as a Mautic user. Fill in only the fields for the method you chose. -
Client ID and Client Secret: The two keys from Settings → API Credentials, for the
oauth2method. -
Username and Password: The credentials of a Mautic user, for the
basicmethod. - Start Date: The earliest change to read on the first sync. Later runs continue from where the previous one stopped. Leave it empty to read your full history.
- Page Size: (Default: 100) Records requested per API call. Mautic’s own default is 30. A larger page means fewer calls but a heavier response for your server to build — lower it if your instance times out or runs out of memory on large tables.
- Requests Per Minute: (Default: 120) The pace this connection holds itself to, so a full sync does not overwhelm your Mautic server. Set it to 0 to remove the limit.
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.
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
Mautic exposes two different families of data, and this connector reads both. Records are the things people create and edit in the Mautic interface: contacts, companies, campaigns, emails, forms, segments. Activity tables are the event log behind those records: every send, open, page hit, form submission, campaign step, point change and segment membership. Most analysis needs both — the records give you the what, the activity tables give you the when and how often.How syncing works
Records sync incrementally on a column namedlast_changed_at. Mautic leaves its own date_modified empty until a record is edited for the first time, so this connector derives last_changed_at from the modification date and falls back to the creation date. The original date_modified is still available as its own column.
Activity tables sync incrementally on id where they have one, which reads each new row exactly once. Tables whose rows are updated after they are written — an email’s open counters, a push notification’s clicks — say so on their id field: choose a full sync for those streams if you need the counters to keep up. Association tables such as segment_memberships have no row id at all and always sync in full.
Custom fields
Mautic lets you add your own fields to contacts and companies. Thecontacts and companies streams have real columns for every field Mautic installs by default (email, firstname, city, companyname, and so on), and a fields column holding the complete set as JSON — including anything your instance added. Use the contact_fields stream to see what each key in that JSON means and what type it holds.
Record streams
Activity streams
These read Mautic’s own database tables through its stats endpoint. The Mautic table column is the name Mautic uses for it, in case you need to cross-reference its documentation.focus_stats and tweet_stats are the common case: they exist on Mautic 5 and were removed in later versions.Fields by stream
Contacts
Contacts
id — Sync: incremental on last_changed_atFields:id- Unique identifier of the contactis_published- Whether the record is currently published and in usedate_added- Date and time the record was createdcreated_by- Identifier of the Mautic user who created the recordcreated_by_user- Name of the Mautic user who created the recorddate_modified- Date and time the record was last edited. Empty on a record that has never been edited since it was createdmodified_by- Identifier of the Mautic user who last edited the recordmodified_by_user- Name of the Mautic user who last edited the recordlast_changed_at- Date and time the record last changed, falling back to the creation date for a record that was never edited. Derived by this connector and used as the incremental replication keypoints- Current point score of the contact, as awarded by point actions and triggerslast_active- Date and time the contact was last seen doing anything Mautic tracksdate_identified- Date and time an anonymous visitor became an identified contact. Empty while the contact is still anonymouscolor- Hex colour a point trigger assigned to the contact, used to highlight it in the Mautic interfaceowner_id- Identifier of the Mautic user who owns the contactowner_username- Login name of the Mautic user who owns the contactowner_first_name- Given name of the Mautic user who owns the contactowner_last_name- Family name of the Mautic user who owns the contacttitle- Honorific or salutation, such as Mr or Drfirstname- Given name of the contactlastname- Family name of the contactcompany- Free-text company name on the contact itself, which is separate from the company records the contact is linked toposition- Job title of the contactemail- Primary email address of the contactmobile- Mobile phone number of the contactphone- Landline phone number of the contactfax- Fax number of the contactaddress1- First line of the contact’s addressaddress2- Second line of the contact’s addresscity- City of the contact’s addressstate- State, province or region of the contact’s addresszipcode- Postal code of the contact’s addresscountry- Country of the contact’s addresspreferred_locale- Locale the contact prefers to be contacted intimezone- Timezone recorded for the contactattribution- Monetary value attributed to the contact by the campaigns and points configurationattribution_date- Date the attribution value was assignedwebsite- Website of the contactfacebook- Facebook handle of the contactfoursquare- Foursquare handle of the contactinstagram- Instagram handle of the contactlinkedin- LinkedIn handle of the contactskype- Skype handle of the contacttwitter- Twitter handle of the contactfields- Every contact field and its value, as a JSON object keyed by field alias. This is the complete set for this instance, so it also carries any custom field added locally that has no column of its owntags- Tags applied to the contact (JSON array)utmtags- UTM parameters recorded for the contact (JSON array of objects)do_not_contact- Channels the contact must not be contacted on, with the reason for each (JSON array of objects)ip_addresses- IP addresses seen for the contact, with any geolocation details Mautic resolved (JSON object keyed by address)
Companies
Companies
id — Sync: incremental on last_changed_atFields:id- Unique identifier of the companyis_published- Whether the record is currently published and in usedate_added- Date and time the record was createdcreated_by- Identifier of the Mautic user who created the recordcreated_by_user- Name of the Mautic user who created the recorddate_modified- Date and time the record was last edited. Empty on a record that has never been edited since it was createdmodified_by- Identifier of the Mautic user who last edited the recordmodified_by_user- Name of the Mautic user who last edited the recordlast_changed_at- Date and time the record last changed, falling back to the creation date for a record that was never edited. Derived by this connector and used as the incremental replication keyscore- Score assigned to the company by Mautic’s company scoringowner_id- Identifier of the Mautic user who owns the companyowner_username- Login name of the Mautic user who owns the companyowner_first_name- Given name of the Mautic user who owns the companyowner_last_name- Family name of the Mautic user who owns the companycompanyname- Name of the companycompanyemail- Email address of the companycompanyphone- Phone number of the companycompanywebsite- Website of the companycompanyaddress1- First line of the company’s addresscompanyaddress2- Second line of the company’s addresscompanycity- City of the company’s addresscompanystate- State, province or region of the company’s addresscompanyzipcode- Postal code of the company’s addresscompanycountry- Country of the company’s addresscompanyindustry- Business sector the company operates incompanydescription- Free-text description of the companycompanynumber_of_employees- Headcount recorded for the companycompanyannual_revenue- Annual revenue recorded for the companycompanyfax- Fax number of the companyfields- Every company field and its value, as a JSON object keyed by field alias, including any custom field added on this instance
Campaigns
Campaigns
id — Sync: incremental on last_changed_atFields:id- Unique identifier of the campaignis_published- Whether the record is currently published and in usedate_added- Date and time the record was createdcreated_by- Identifier of the Mautic user who created the recordcreated_by_user- Name of the Mautic user who created the recorddate_modified- Date and time the record was last edited. Empty on a record that has never been edited since it was createdmodified_by- Identifier of the Mautic user who last edited the recordmodified_by_user- Name of the Mautic user who last edited the recordlast_changed_at- Date and time the record last changed, falling back to the creation date for a record that was never edited. Derived by this connector and used as the incremental replication keypublish_up- Date and time from which the record becomes activepublish_down- Date and time from which the record stops being activecategory_id- Identifier of the category the record is filed undercategory_title- Name of the category the record is filed undercategory_alias- URL-safe alias of the category the record is filed undername- Name of the campaigndescription- Free-text description of the campaignalias- URL-safe alias generated from the campaign nameevents- The campaign’s decisions and actions with their triggers and ordering (JSON array of objects)
Emails
Emails
id — Sync: incremental on last_changed_atFields:id- Unique identifier of the emailis_published- Whether the record is currently published and in usedate_added- Date and time the record was createdcreated_by- Identifier of the Mautic user who created the recordcreated_by_user- Name of the Mautic user who created the recorddate_modified- Date and time the record was last edited. Empty on a record that has never been edited since it was createdmodified_by- Identifier of the Mautic user who last edited the recordmodified_by_user- Name of the Mautic user who last edited the recordlast_changed_at- Date and time the record last changed, falling back to the creation date for a record that was never edited. Derived by this connector and used as the incremental replication keypublish_up- Date and time from which the record becomes activepublish_down- Date and time from which the record stops being activecategory_id- Identifier of the category the record is filed undercategory_title- Name of the category the record is filed undercategory_alias- URL-safe alias of the category the record is filed undername- Internal name of the emailsubject- Subject line sent to recipientslanguage- Language code of the emailfrom_address- Address the email is sent fromfrom_name- Display name the email is sent fromreply_to_address- Address replies are sent tobcc_address- Address blind-copied on every senduse_owner_as_mailer- Whether the email is sent from the contact’s owner instead of the configured senderpreheader_text- Preview text shown after the subject line in most inboxescustom_html- Rendered HTML body of the emailplain_text- Plain-text body of the emailtemplate- Theme used to style the emailemail_type- Whether the email is sent to a segment (list) or used by a campaign action (template)public_preview- Whether the email can be viewed at a public URLread_count- Number of times the email has been opened, counted by Mauticsent_count- Number of times the email has been sent, counted by Mauticrevision- Revision number of the emailvariant_start_date- Date the A/B test on this email startedvariant_sent_count- Number of sends attributed to variants of this emailvariant_read_count- Number of opens attributed to variants of this emailvariant_parent- Identifier of the email this one is an A/B variant oftranslation_parent- Identifier of the email this one is a translation ofsend_to_dnc- Whether the email is sent to contacts marked do-not-contactutm_tags- UTM parameters appended to links (JSON object)asset_attachments- Assets attached to the email (JSON array)variant_children- Identifiers of the A/B variants of this email (JSON array)translation_children- Identifiers of the translations of this email (JSON array)dynamic_content- Dynamic content blocks and their filters (JSON array of objects)lists- Segments this email is sent to (JSON array of objects)headers- Custom email headers (JSON object)settings- Per-email settings (JSON object)grapesjsbuilder- Configuration saved by the drag-and-drop email builder (JSON object)unsubscribe_form- Form used as the unsubscribe page for this email (JSON object)
Forms
Forms
id — Sync: incremental on last_changed_atFields:id- Unique identifier of the formis_published- Whether the record is currently published and in usedate_added- Date and time the record was createdcreated_by- Identifier of the Mautic user who created the recordcreated_by_user- Name of the Mautic user who created the recorddate_modified- Date and time the record was last edited. Empty on a record that has never been edited since it was createdmodified_by- Identifier of the Mautic user who last edited the recordmodified_by_user- Name of the Mautic user who last edited the recordlast_changed_at- Date and time the record last changed, falling back to the creation date for a record that was never edited. Derived by this connector and used as the incremental replication keypublish_up- Date and time from which the record becomes activepublish_down- Date and time from which the record stops being activecategory_id- Identifier of the category the record is filed undercategory_title- Name of the category the record is filed undercategory_alias- URL-safe alias of the category the record is filed undername- Name of the formalias- URL-safe alias of the formdescription- Description of the formform_type- Whether the form stands alone or belongs to a campaigntemplate- Theme used to style the formlanguage- Language code of the formin_kiosk_mode- Whether submissions are recorded without cookie tracking or IP association, as on a shared device at an eventrender_style- Whether Mautic includes its own CSS when rendering the formpost_action- What happens after a submission: nothing, a redirect, or a messagepost_action_property- The redirect URL or the success message that goes with the post actionno_index- Whether the form page asks search engines not to index itform_attributes- Custom HTML attributes added to the form tagsubmission_limit- Maximum number of submissions the form accepts. Empty means unlimitedsubmission_limit_message- Message shown once the submission limit is reachedsubmission_count- Number of submissions recorded for the formcached_html- The HTML and CSS Mautic generated for the formfields- Field definitions of the form, including type, validation and the contact field each one maps to (JSON object keyed by field alias)actions- Actions run when the form is submitted (JSON object keyed by action alias)
Segments
Segments
id — Sync: incremental on last_changed_atFields:id- Unique identifier of the segmentis_published- Whether the record is currently published and in usedate_added- Date and time the record was createdcreated_by- Identifier of the Mautic user who created the recordcreated_by_user- Name of the Mautic user who created the recorddate_modified- Date and time the record was last edited. Empty on a record that has never been edited since it was createdmodified_by- Identifier of the Mautic user who last edited the recordmodified_by_user- Name of the Mautic user who last edited the recordlast_changed_at- Date and time the record last changed, falling back to the creation date for a record that was never edited. Derived by this connector and used as the incremental replication keycategory_id- Identifier of the category the record is filed undercategory_title- Name of the category the record is filed undercategory_alias- URL-safe alias of the category the record is filed undername- Internal name of the segmentpublic_name- Name shown to contacts where the segment is publicalias- URL-safe alias of the segmentdescription- Description of the segmentis_global- Whether every Mautic user can use the segment, rather than only the user who created itis_preference_center- Whether contacts can subscribe to the segment themselves from a preference centrefilters- Rules that decide which contacts belong to the segment (JSON array of objects). Membership itself is in the segment_memberships stream
Assets
Assets
id — Sync: incremental on last_changed_atFields:id- Unique identifier of the assetis_published- Whether the record is currently published and in usedate_added- Date and time the record was createdcreated_by- Identifier of the Mautic user who created the recordcreated_by_user- Name of the Mautic user who created the recorddate_modified- Date and time the record was last edited. Empty on a record that has never been edited since it was createdmodified_by- Identifier of the Mautic user who last edited the recordmodified_by_user- Name of the Mautic user who last edited the recordlast_changed_at- Date and time the record last changed, falling back to the creation date for a record that was never edited. Derived by this connector and used as the incremental replication keypublish_up- Date and time from which the record becomes activepublish_down- Date and time from which the record stops being activecategory_id- Identifier of the category the record is filed undercategory_title- Name of the category the record is filed undercategory_alias- URL-safe alias of the category the record is filed undertitle- Title of the assetdescription- Description of the assetalias- URL-safe alias of the assetlanguage- Language code of the assetdownload_count- Total number of downloads, counting repeat downloads by the same contactunique_download_count- Number of distinct contacts who downloaded the assetrevision- Revision number of the assetextension- File extension of the assetmime- MIME type of the assetsize- File size of the asset in bytesdownload_url- Public URL the asset is served at
Notes
Notes
id — Sync: incremental on last_changed_atFields:id- Unique identifier of the noteis_published- Whether the record is currently published and in usedate_added- Date and time the record was createdcreated_by- Identifier of the Mautic user who created the recordcreated_by_user- Name of the Mautic user who created the recorddate_modified- Date and time the record was last edited. Empty on a record that has never been edited since it was createdmodified_by- Identifier of the Mautic user who last edited the recordmodified_by_user- Name of the Mautic user who last edited the recordlast_changed_at- Date and time the record last changed, falling back to the creation date for a record that was never edited. Derived by this connector and used as the incremental replication keycontact_id- Identifier of the contact the note is attached totext- Body of the note, which may contain HTMLtype- Kind of note: general, email, call or meetingdate_time- Date and time the note refers to, which the author sets and which can differ from when the note was written
Stages
Stages
id — Sync: incremental on last_changed_atFields:id- Unique identifier of the stageis_published- Whether the record is currently published and in usedate_added- Date and time the record was createdcreated_by- Identifier of the Mautic user who created the recordcreated_by_user- Name of the Mautic user who created the recorddate_modified- Date and time the record was last edited. Empty on a record that has never been edited since it was createdmodified_by- Identifier of the Mautic user who last edited the recordmodified_by_user- Name of the Mautic user who last edited the recordlast_changed_at- Date and time the record last changed, falling back to the creation date for a record that was never edited. Derived by this connector and used as the incremental replication keypublish_up- Date and time from which the record becomes activepublish_down- Date and time from which the record stops being activecategory_id- Identifier of the category the record is filed undercategory_title- Name of the category the record is filed undercategory_alias- URL-safe alias of the category the record is filed undername- Name of the stagedescription- Description of the stageweight- Position of the stage in the lifecycle. Mautic requires it to be unique across stages, so it orders them
Categories
Categories
id — Sync: incremental on last_changed_atFields:id- Unique identifier of the categoryis_published- Whether the record is currently published and in usedate_added- Date and time the record was createdcreated_by- Identifier of the Mautic user who created the recordcreated_by_user- Name of the Mautic user who created the recorddate_modified- Date and time the record was last edited. Empty on a record that has never been edited since it was createdmodified_by- Identifier of the Mautic user who last edited the recordmodified_by_user- Name of the Mautic user who last edited the recordlast_changed_at- Date and time the record last changed, falling back to the creation date for a record that was never edited. Derived by this connector and used as the incremental replication keytitle- Name of the categoryalias- URL-safe alias of the categorydescription- Description of the categorycolor- Hex colour assigned to the categorybundle- Part of Mautic the category applies to, such as email, form or campaign
Contact Fields
Contact Fields
id — Sync: incremental on last_changed_atFields:id- Unique identifier of the fieldis_published- Whether the record is currently published and in usedate_added- Date and time the record was createdcreated_by- Identifier of the Mautic user who created the recordcreated_by_user- Name of the Mautic user who created the recorddate_modified- Date and time the record was last edited. Empty on a record that has never been edited since it was createdmodified_by- Identifier of the Mautic user who last edited the recordmodified_by_user- Name of the Mautic user who last edited the recordlast_changed_at- Date and time the record last changed, falling back to the creation date for a record that was never edited. Derived by this connector and used as the incremental replication keypublish_up- Date and time from which the record becomes activepublish_down- Date and time from which the record stops being activelabel- Name of the field as people see italias- Key the field’s value appears under in the contacts stream’s fields columndescription- Description of the fieldtype- Kind of field, such as text, number, date, select or countrygroup- Group the field is shown underorder- Position of the field within its groupobject- Whether the field belongs to contacts or to companiesdefault_value- Value used when none is givenis_required- Whether a value must be suppliedis_publicly_updatable- Whether a public request, such as the tracking pixel, may set this fieldis_unique_identifier- Whether two contacts sharing this value are merged into oneproperties- Type-specific configuration, such as the options of a select field (JSON object)
Point Groups
Point Groups
id — Sync: incremental on last_changed_atFields:id- Unique identifier of the point groupis_published- Whether the record is currently published and in usedate_added- Date and time the record was createdcreated_by- Identifier of the Mautic user who created the recordcreated_by_user- Name of the Mautic user who created the recorddate_modified- Date and time the record was last edited. Empty on a record that has never been edited since it was createdmodified_by- Identifier of the Mautic user who last edited the recordmodified_by_user- Name of the Mautic user who last edited the recordlast_changed_at- Date and time the record last changed, falling back to the creation date for a record that was never edited. Derived by this connector and used as the incremental replication keyname- Name of the point groupdescription- Description of the point group
Push Notifications
Push Notifications
id — Sync: incremental on last_changed_atFields:id- Unique identifier of the notificationis_published- Whether the record is currently published and in usedate_added- Date and time the record was createdcreated_by- Identifier of the Mautic user who created the recordcreated_by_user- Name of the Mautic user who created the recorddate_modified- Date and time the record was last edited. Empty on a record that has never been edited since it was createdmodified_by- Identifier of the Mautic user who last edited the recordmodified_by_user- Name of the Mautic user who last edited the recordlast_changed_at- Date and time the record last changed, falling back to the creation date for a record that was never edited. Derived by this connector and used as the incremental replication keypublish_up- Date and time from which the record becomes activepublish_down- Date and time from which the record stops being activecategory_id- Identifier of the category the record is filed undercategory_title- Name of the category the record is filed undercategory_alias- URL-safe alias of the category the record is filed undername- Internal name of the notificationheading- Heading shown to the recipientmessage- Body shown to the recipienturl- Address opened when the notification is clickedlanguage- Language code of the notificationread_count- Number of times the notification was readsent_count- Number of times the notification was sent
Text Messages
Text Messages
id — Sync: incremental on last_changed_atFields:id- Unique identifier of the text messageis_published- Whether the record is currently published and in usedate_added- Date and time the record was createdcreated_by- Identifier of the Mautic user who created the recordcreated_by_user- Name of the Mautic user who created the recorddate_modified- Date and time the record was last edited. Empty on a record that has never been edited since it was createdmodified_by- Identifier of the Mautic user who last edited the recordmodified_by_user- Name of the Mautic user who last edited the recordlast_changed_at- Date and time the record last changed, falling back to the creation date for a record that was never edited. Derived by this connector and used as the incremental replication keypublish_up- Date and time from which the record becomes activepublish_down- Date and time from which the record stops being activecategory_id- Identifier of the category the record is filed undercategory_title- Name of the category the record is filed undercategory_alias- URL-safe alias of the category the record is filed undername- Internal name of the text messagemessage- Body of the text messagelanguage- Language code of the text messagesent_count- Number of times the message was sent
Users
Users
id — Sync: incremental on last_changed_atFields:id- Unique identifier of the useris_published- Whether the record is currently published and in usedate_added- Date and time the record was createdcreated_by- Identifier of the Mautic user who created the recordcreated_by_user- Name of the Mautic user who created the recorddate_modified- Date and time the record was last edited. Empty on a record that has never been edited since it was createdmodified_by- Identifier of the Mautic user who last edited the recordmodified_by_user- Name of the Mautic user who last edited the recordlast_changed_at- Date and time the record last changed, falling back to the creation date for a record that was never edited. Derived by this connector and used as the incremental replication keyusername- Login name of the userfirst_name- Given name of the userlast_name- Family name of the useremail- Email address of the userposition- Job title of the usertimezone- Timezone the user works inlocale- Language the interface is shown inlast_login- Date and time the user last signed inlast_active- Date and time the user was last activesignature- Email signature of the userrole_id- Identifier of the role assigned to the userrole_name- Name of the role assigned to the userrole_is_admin- Whether the role grants full access to the instance. Only an administrator can create the API credential this connector uses
Webhooks
Webhooks
id — Sync: incremental on last_changed_atFields:id- Unique identifier of the webhookis_published- Whether the record is currently published and in usedate_added- Date and time the record was createdcreated_by- Identifier of the Mautic user who created the recordcreated_by_user- Name of the Mautic user who created the recorddate_modified- Date and time the record was last edited. Empty on a record that has never been edited since it was createdmodified_by- Identifier of the Mautic user who last edited the recordmodified_by_user- Name of the Mautic user who last edited the recordlast_changed_at- Date and time the record last changed, falling back to the creation date for a record that was never edited. Derived by this connector and used as the incremental replication keycategory_id- Identifier of the category the record is filed undercategory_title- Name of the category the record is filed undercategory_alias- URL-safe alias of the category the record is filed undername- Name of the webhookdescription- Description of the webhookwebhook_url- URL Mautic posts the payload toevents_orderby_dir- Order the batched events are sent intriggers- Event types that make the webhook fire (JSON array)
email_stats
email_stats
email_stats table.Key: id — Sync: incremental on idFields:id- Unique identifier of the send. Rows in this table keep changing after they are created, so an incremental sync keyed on this column records each row as it was when first read. Choose a full sync for this stream if those later changes have to stay current.email_id- Identifier of the email involvedlead_id- Identifier of the contact the row belongs tolist_id- Identifier of the segment the send was addressed to, when it came from a segment rather than a campaignip_id- Identifier of the IP address record involved, which resolves against the ip_addresses streamemail_address- Address the email was actually sent todate_sent- Date and time the email was sentis_read- Whether the recipient has opened the email at least oncedate_read- Date and time of the first openopen_count- Number of times the email has been openedlast_opened- Date and time of the most recent openopen_details- Details of each open, such as when and from where (JSON)is_failed- Whether delivery failedretry_count- Number of delivery attempts madeviewed_in_browser- Whether the recipient opened the web version instead of the email itselftracking_hash- Unique hash identifying this send in tracking linkssource- What caused this row, such as email, campaign or form — Mautic’s internal source namesource_id- Identifier of the record named by sourcetokens- Personalisation tokens resolved for this send (JSON object)copy_id- Identifier of the stored copy of the message body, shared by every send of the same content
email_replies
email_replies
email_stat_replies table.Key: id — Sync: incremental on idFields:id- Unique identifier of the rowstat_id- Identifier of the send record this row refers todate_replied- Date and time the reply arrivedmessage_id- Message-ID header of the reply
email_open_devices
email_open_devices
email_stats_devices table.Key: id — Sync: incremental on idFields:id- Unique identifier of the rowstat_id- Identifier of the send record this row refers todevice_id- Identifier of the device record involvedip_id- Identifier of the IP address record involved, which resolves against the ip_addresses streamdate_opened- Date and time the email was opened
page_hits
page_hits
page_hits table.Key: id — Sync: incremental on idFields:id- Unique identifier of the page view. Rows in this table keep changing after they are created, so an incremental sync keyed on this column records each row as it was when first read. Choose a full sync for this stream if those later changes have to stay current.page_id- Identifier of the landing page involvedlead_id- Identifier of the contact the row belongs toip_id- Identifier of the IP address record involved, which resolves against the ip_addresses streamemail_id- Identifier of the email involvedredirect_id- Identifier of the tracked link involveddevice_id- Identifier of the device record involveddate_hit- Date and time the page was openeddate_left- Date and time the visitor left the page. Written after the row is created, and empty when the visitor never triggered the tracking script againurl- Address involvedurl_title- Title of the page that was viewedreferer- Address the visitor arrived fromquery- Query string of the address (JSON object)source- What caused this row, such as email, campaign or form — Mautic’s internal source namesource_id- Identifier of the record named by sourcetracking_id- Anonymous tracking cookie value of the visitoruser_agent- Browser user agent string reported by the visitorbrowser_languages- Languages the visitor’s browser asked for (JSON array)page_language- Language of the page that was viewedremote_host- Hostname resolved for the visitor’s IP addresscity- City resolved from the visitor’s IP addressregion- Region resolved from the visitor’s IP addresscountry- Country resolved from the visitor’s IP addressisp- Internet provider resolved from the visitor’s IP addressorganization- Organisation resolved from the visitor’s IP addresscode- HTTP status code returned to the visitor
form_submissions
form_submissions
form_submissions table.Key: id — Sync: incremental on idFields:id- Unique identifier of the rowform_id- Identifier of the form involvedlead_id- Identifier of the contact the row belongs toip_id- Identifier of the IP address record involved, which resolves against the ip_addresses streampage_id- Identifier of the landing page the form was submitted fromdate_submitted- Date and time the form was submittedreferer- Address the visitor arrived fromtracking_id- Anonymous tracking cookie value of the visitor
asset_downloads
asset_downloads
asset_downloads table.Key: id — Sync: incremental on idFields:id- Unique identifier of the rowasset_id- Identifier of the asset involvedlead_id- Identifier of the contact the row belongs toip_id- Identifier of the IP address record involved, which resolves against the ip_addresses streamemail_id- Identifier of the email involveddate_download- Date and time the file was downloadedcode- HTTP status code returned to the visitorreferer- Address the visitor arrived fromsource- What caused this row, such as email, campaign or form — Mautic’s internal source namesource_id- Identifier of the record named by sourcetracking_id- Anonymous tracking cookie value of the visitorutm_source- Value of the utm_source column in asset_downloadsutm_medium- Value of the utm_medium column in asset_downloadsutm_campaign- Value of the utm_campaign column in asset_downloadsutm_content- Value of the utm_content column in asset_downloadsutm_term- Value of the utm_term column in asset_downloads
campaign_event_log
campaign_event_log
campaign_lead_event_log table.Key: id — Sync: incremental on idFields:id- Unique identifier of the rowcampaign_id- Identifier of the campaign involvedevent_id- Identifier of the event involvedlead_id- Identifier of the contact the row belongs toip_id- Identifier of the IP address record involved, which resolves against the ip_addresses streamchannel- Channel involved, such as email, sms or notificationchannel_id- Identifier of the record within that channeldate_triggered- Date and time the step actually ran. Empty while it is still scheduledtrigger_date- Date and time the step is due to runis_scheduled- Whether the step is still waiting to runsystem_triggered- Whether Mautic ran the step by itself rather than a person forcing itnon_action_path_taken- Whether the contact followed the negative branch of a decisionrotation- Which pass through the campaign this row belongs to, for campaigns a contact can re-entermetadata- Details of the step’s outcome (JSON object)
campaign_memberships
campaign_memberships
campaign_leads table.Key: campaign_id, lead_id — Sync: full tableFields:campaign_id- Identifier of the campaign involvedlead_id- Identifier of the contact the row belongs todate_added- Date and time the contact entered the campaigndate_last_exited- Date and time the contact last left the campaignmanually_added- Whether someone added this link by hand rather than it being applied by a filtermanually_removed- Whether someone removed this link by hand even though a filter still matchesrotation- Number of times the contact has gone through the campaign
segment_memberships
segment_memberships
lead_lists_leads table.Key: leadlist_id, lead_id — Sync: full tableFields:leadlist_id- Identifier of the segmentlead_id- Identifier of the contact the row belongs todate_added- Date and time the contact joined the segmentmanually_added- Whether someone added this link by hand rather than it being applied by a filtermanually_removed- Whether someone removed this link by hand even though a filter still matches
company_contacts
company_contacts
companies_leads table.Key: company_id, lead_id — Sync: full tableFields:company_id- Identifier of the company involvedlead_id- Identifier of the contact the row belongs todate_added- Date and time the contact was linked to the companyis_primary- Whether this is the contact’s main companymanually_added- Whether someone added this link by hand rather than it being applied by a filtermanually_removed- Whether someone removed this link by hand even though a filter still matches
contact_categories
contact_categories
lead_categories table.Key: id — Sync: incremental on idFields:id- Unique identifier of the rowlead_id- Identifier of the contact the row belongs tocategory_id- Identifier of the category involveddate_added- Date and time the row was recordedmanually_added- Whether someone added this link by hand rather than it being applied by a filtermanually_removed- Whether someone removed this link by hand even though a filter still matches
contact_event_log
contact_event_log
lead_event_log table.Key: id — Sync: incremental on idFields:id- Unique identifier of the rowlead_id- Identifier of the contact the row belongs toaction- Action performed, such as create, update or deletebundle- Part of Mautic the action happened inobject- Kind of record the action applied toobject_id- Identifier of the record the action applied toproperties- What the change was, before and after (JSON object)user_id- Identifier of the Mautic user who performed the actionuser_name- Name of the Mautic user who performed the actiondate_added- Date and time the row was recorded
contact_point_changes
contact_point_changes
lead_points_change_log table.Key: id — Sync: incremental on idFields:id- Unique identifier of the rowlead_id- Identifier of the contact the row belongs toip_id- Identifier of the IP address record involved, which resolves against the ip_addresses streamtype- Internal type of the changeevent_name- Human-readable name of the event that caused the changeaction_name- Human-readable name of the action that caused the changedelta- Points added, or removed when negativegroup_id- Identifier of the point group the change belongs to, when the instance keeps separate scores side by sidedate_added- Date and time the points changed
contact_stage_changes
contact_stage_changes
lead_stages_change_log table.Key: id — Sync: incremental on idFields:id- Unique identifier of the rowlead_id- Identifier of the contact the row belongs tostage_id- Identifier of the stage involvedevent_name- Human-readable name of the event that caused the changeaction_name- Human-readable name of the action that caused the changedate_added- Date and time the stage changed
contact_company_changes
contact_company_changes
lead_companies_change_log table.Key: id — Sync: incremental on idFields:id- Unique identifier of the rowlead_id- Identifier of the contact the row belongs tocompany_id- Identifier of the company involvedtype- Internal type of the changeevent_name- Human-readable name of the event that caused the changeaction_name- Human-readable name of the action that caused the changedate_added- Date and time the row was recorded
do_not_contact
do_not_contact
lead_donotcontact table.Key: id — Sync: incremental on idFields:id- Unique identifier of the rowlead_id- Identifier of the contact the row belongs tochannel- Channel involved, such as email, sms or notificationchannel_id- Identifier of the record within that channelreason- Why contact is blocked, as Mautic’s own code: 1 unsubscribed, 2 bounced, 3 marked as spamcomments- Free-text note recorded with the blockdate_added- Date and time the block was recorded
contact_devices
contact_devices
lead_devices table.Key: id — Sync: incremental on idFields:id- Unique identifier of the rowlead_id- Identifier of the contact the row belongs toclient_info- Everything detected about the browser (JSON object)device- Kind of device, such as desktop, smartphone or tabletdevice_brand- Manufacturer of the devicedevice_model- Model of the devicedevice_os_name- Operating system of the devicedevice_os_platform- Platform of the operating systemdevice_os_shortname- Short code of the operating systemdevice_os_version- Version of the operating systemdevice_fingerprint- Fingerprint used to recognise the device againtracking_id- Anonymous tracking cookie value of the visitordate_added- Date and time the row was recorded
contact_frequency_rules
contact_frequency_rules
lead_frequencyrules table.Key: id — Sync: incremental on idFields:id- Unique identifier of the rowlead_id- Identifier of the contact the row belongs tochannel- Channel involved, such as email, sms or notificationfrequency_number- How many messages are allowed in the periodfrequency_time- Length of the period, such as DAY, WEEK or MONTHpreferred_channel- Whether this is the contact’s preferred channelpause_from_date- Start of a period the contact asked not to be contacted inpause_to_date- End of that perioddate_added- Date and time the row was recorded
point_action_log
point_action_log
point_lead_action_log table.Key: point_id, lead_id — Sync: full tableFields:point_id- Identifier of the point actionlead_id- Identifier of the contact the row belongs toip_id- Identifier of the IP address record involved, which resolves against the ip_addresses streamdate_fired- Date and time the rule fired for this contact
point_event_log
point_event_log
point_lead_event_log table.Key: event_id, lead_id — Sync: full tableFields:event_id- Identifier of the event involvedlead_id- Identifier of the contact the row belongs toip_id- Identifier of the IP address record involved, which resolves against the ip_addresses streamdate_fired- Date and time the rule fired for this contact
stage_action_log
stage_action_log
stage_lead_action_log table.Key: stage_id, lead_id — Sync: full tableFields:stage_id- Identifier of the stage involvedlead_id- Identifier of the contact the row belongs toip_id- Identifier of the IP address record involved, which resolves against the ip_addresses streamdate_fired- Date and time the rule fired for this contact
tracked_links
tracked_links
channel_url_trackables table.Key: channel, channel_id, redirect_id — Sync: full tableFields:channel- Channel involved, such as email, sms or notificationchannel_id- Identifier of the record within that channelredirect_id- Identifier of the tracked link involvedhits- Total clicks on the link, counting repeatsunique_hits- Number of distinct contacts who clicked the link
link_redirects
link_redirects
page_redirects table.Key: id — Sync: incremental on idFields:id- Unique identifier of the link. Rows in this table keep changing after they are created, so an incremental sync keyed on this column records each row as it was when first read. Choose a full sync for this stream if those later changes have to stay current.redirect_id- Public token the redirect URL is built fromurl- Address the link sends the visitor tohits- Total clicks on the link, counting repeatsunique_hits- Number of distinct contacts who clicked the linkis_published- Whether the link is activedate_added- Date and time the row was recordeddate_modified- Date and time the link was last editedcreated_by- Identifier of the Mautic user who created the linkcreated_by_user- Name of the Mautic user who created the linkmodified_by- Identifier of the Mautic user who last edited the linkmodified_by_user- Name of the Mautic user who last edited the linkchecked_out- Date and time the link was locked for editingchecked_out_by- Identifier of the Mautic user editing the linkchecked_out_by_user- Name of the Mautic user editing the link
text_message_stats
text_message_stats
sms_message_stats table.Key: id — Sync: incremental on idFields:id- Unique identifier of the rowsms_id- Identifier of the text message involvedlead_id- Identifier of the contact the row belongs tolist_id- Identifier of the segment the send was addressed to, when it came from a segment rather than a campaignip_id- Identifier of the IP address record involved, which resolves against the ip_addresses streamdate_sent- Date and time the message was sentsource- What caused this row, such as email, campaign or form — Mautic’s internal source namesource_id- Identifier of the record named by sourcetokens- Personalisation tokens resolved for this send (JSON object)tracking_hash- Unique hash identifying this send in tracking linksis_failed- Value of the is_failed column in sms_message_statsdetails- Value of the details column in sms_message_stats
push_notification_stats
push_notification_stats
push_notification_stats table.Key: id — Sync: incremental on idFields:id- Unique identifier of the send. Rows in this table keep changing after they are created, so an incremental sync keyed on this column records each row as it was when first read. Choose a full sync for this stream if those later changes have to stay current.notification_id- Identifier of the push notification involvedlead_id- Identifier of the contact the row belongs tolist_id- Identifier of the segment the send was addressed to, when it came from a segment rather than a campaignip_id- Identifier of the IP address record involved, which resolves against the ip_addresses streamdate_sent- Date and time the notification was sentdate_read- Date and time the notification was displayedis_clicked- Whether the recipient clicked the notificationdate_clicked- Date and time of the first clickclick_count- Number of times the notification was clickedlast_clicked- Date and time of the most recent clickclick_details- Details of each click (JSON)retry_count- Number of delivery attempts madesource- What caused this row, such as email, campaign or form — Mautic’s internal source namesource_id- Identifier of the record named by sourcetokens- Personalisation tokens resolved for this send (JSON object)tracking_hash- Unique hash identifying this send in tracking links
dynamic_content_stats
dynamic_content_stats
dynamic_content_stats table.Key: id — Sync: incremental on idFields:id- Unique identifier of the row. Rows in this table keep changing after they are created, so an incremental sync keyed on this column records each row as it was when first read. Choose a full sync for this stream if those later changes have to stay current.dynamic_content_id- Identifier of the dynamic content block involvedlead_id- Identifier of the contact the row belongs todate_sent- Date and time the variant was first shownlast_sent- Date and time the variant was most recently shownsent_count- Number of times the variant was shownsent_details- Details of each display (JSON)source- What caused this row, such as email, campaign or form — Mautic’s internal source namesource_id- Identifier of the record named by sourcetokens- Personalisation tokens resolved for this send (JSON object)
dynamic_content_slots
dynamic_content_slots
dynamic_content_lead_data table.Key: id — Sync: incremental on idFields:id- Unique identifier of the rowdynamic_content_id- Identifier of the dynamic content block involvedlead_id- Identifier of the contact the row belongs toslot- Name of the slot on the page or emaildate_added- Date and time the row was recorded
video_hits
video_hits
video_hits table.Key: id — Sync: incremental on idFields:id- Unique identifier of the rowlead_id- Identifier of the contact the row belongs toip_id- Identifier of the IP address record involved, which resolves against the ip_addresses streamchannel- Channel involved, such as email, sms or notificationchannel_id- Identifier of the record within that channelguid- Identifier of the viewing sessionurl- Address involveddate_hit- Date and time the video started playingdate_left- Date and time the viewer leftduration- Total length of the video in secondstime_watched- Seconds of the video actually watchedreferer- Address the visitor arrived fromquery- Query string of the address (JSON object)user_agent- Browser user agent string reported by the visitorbrowser_languages- Languages the visitor’s browser asked for (JSON array)page_language- Language of the page that was viewedremote_host- Hostname resolved for the visitor’s IP addresscity- City resolved from the visitor’s IP addressregion- Region resolved from the visitor’s IP addresscountry- Country resolved from the visitor’s IP addressisp- Internet provider resolved from the visitor’s IP addressorganization- Organisation resolved from the visitor’s IP addresscode- HTTP status code returned to the visitor
ip_addresses
ip_addresses
ip_addresses table.Key: id — Sync: incremental on idFields:id- Unique identifier of the rowip_address- The IP address itselfip_details- Geolocation resolved for the address: city, region, country, provider and coordinates (JSON object)
audit_log
audit_log
audit_log table.Key: id — Sync: incremental on idFields:id- Unique identifier of the rowbundle- Part of Mautic the action happened inobject- Kind of record the action applied toobject_id- Identifier of the record the action applied toaction- Action performed, such as create, update or deletedetails- What changed, before and after (JSON object)user_id- Identifier of the Mautic user who performed the actionuser_name- Name of the Mautic user who performed the actionip_address- IP address the change was made fromdate_added- Date and time the row was recorded
focus_stats
focus_stats
focus_stats table.Key: id — Sync: incremental on idFields:id- Unique identifier of the rowfocus_id- Identifier of the Focus itemlead_id- Identifier of the contact the row belongs totype- What the contact did, such as view or clicktype_id- Identifier of the record that interaction refers todate_added- Date and time the row was recorded
tweet_stats
tweet_stats
tweet_stats table.Key: id — Sync: incremental on idFields:id- Unique identifier of the rowtweet_id- Identifier of the tweet template in Mauticlead_id- Identifier of the contact the row belongs totwitter_tweet_id- Identifier the network gave the posted tweethandle- Account the tweet was addressed todate_sent- Date and time the tweet was sentis_failed- Whether sending failedretry_count- Number of delivery attempts madefavorite_count- Number of favourites the tweet receivedretweet_count- Number of retweets the tweet receivedresponse_details- What the network answered (JSON)source- What caused this row, such as email, campaign or form — Mautic’s internal source namesource_id- Identifier of the record named by source
webhook_logs
webhook_logs
webhook_logs table.Key: id — Sync: incremental on idFields:id- Unique identifier of the rowwebhook_id- Identifier of the webhook involvedstatus_code- HTTP status the receiving endpoint returnedruntime- How long the delivery took, in secondsnote- Error text recorded when the delivery faileddate_added- Date and time the row was recorded