Configuring Leadlovers as a Source
In the Sources tab, click on the “Add source” button located on the top right of your screen. Then, select the Leadlovers option from the list of connectors. Click Next and you’ll be prompted to add your access.1. Add account access
You’ll need the Web API token of the Leadlovers account that holds the data. Sign in to Leadlovers, open General settings, go to Account data, click Preferences and copy the Web API token. The token does not expire, is personal to the account, and reaches only that account’s data — so each source needs the token of its own Leadlovers account. The following configurations are available:- Web API Token: The Leadlovers Web API token, used to authenticate every API call.
-
Initial sync date: The earliest lead registration date from which records will be synced. It applies to the
leadsstream only, which is the sole endpoint with a server-side date filter.
Leadlovers answers a rejected token with a generic error and the message “Token inválido”. If the extraction fails on the very first stream, regenerate the token in Preferences and update it here.
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.
The
email_sequences, levels, forms and pages streams request one page per machine, and students and courses request one page per product. On accounts with many machines or products they take proportionally longer, so deselect them if you don’t need the funnel or members-area structure.The
zaplovers_numbers and zaplovers_templates streams depend on the ZapLovers WhatsApp add-on. When the account does not have it, the connector logs a warning and skips those streams instead of failing the run.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.
leads supports incremental sync, by the lead’s registration date. Every other stream is read in full on each run, because the Leadlovers API offers no date filter on those endpoints. Note that a lead edited after it was captured keeps its original registration date, so an incremental leads sync brings new leads but not later edits to old ones — schedule an Additional Full Sync if you need those updates.
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.
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
Available streams
The table below lists every stream, its slug (the exact identifier to pass when creating the source via API) and a short description.Fields by stream
Below you’ll find all available data streams from Leadlovers and their corresponding fields. Lists of objects — a lead’s tags, a product’s courses, a student’s progress, a course’s modules — are delivered as JSON strings.User
User
Identity of the Leadlovers user the Web API token belongs to. One record per source.Key Fields:
user_code: Unique identifier of the Leadlovers useruser_name: Name of the useruser_email: Contact email address registered for the useruser_access_email: Email address the user signs in withuser_photo: URL of the user’s profile picture
Account Data
Account Data
Plan, quota and expiry data for every account tied to the token. Useful to watch how close the account is to its lead limit.Key Fields:
user_code: Identifier of the Leadlovers user that owns the accountorder: Sequence number of the plan or bonus within the account
plan_name: Commercial name of the contracted planplan_leads: Maximum number of leads allowed by the planactive_leads: Number of leads currently counted against the plan quotaleads: Total number of leads stored in the accountpurchase: Timestamp the plan or bonus was purchasedexpiration: Timestamp the plan or bonus expirespointer_plan_or_bonus: Whether the entry refers to the main plan or to a bonusregister_type: Internal code describing how the entry was registered
Machines
Machines
The funnels of the account. Machines are the parent of the sequences, forms and pages streams.Key Fields:
machine_code: Unique identifier of the machinemachine_name: Name given to the machinemachine_image: URL of the cover image displayed for the machine
views: Total number of page views accumulated by the machineleads: Total number of leads currently stored in the machine
Leads
Leads
The account’s lead book. Synced incrementally by registration date, the only server-side date filter the API offers.Key Fields:
email: Email address of the lead; the account’s natural keyname: Full name of the leadphone: Phone number registered for the leadregistration_date: Timestamp the lead was registered, used as the incremental replication key
birthday: Birth date declared by the leadcity: City declared by the leadstate: State declared by the leadcompany: Company the lead is associated withgender: Gender declared by the leadphoto: URL of the profile picture associated with the leadscore: Engagement score accumulated by the lead
Dynamic Fields
Dynamic Fields
Custom fields added to the account’s lead records.Key Fields:
id: Unique identifier of the dynamic fieldname: Internal name of the fieldlabel: Label shown to the visitor when the field is filled intag: Merge tag used to reference the field in emails and pages
type: Input type of the field (text, list, date, and so on)status: Whether the field is currently active in the accountregister_date: Timestamp the dynamic field was created
Dynamic Field Options
Dynamic Field Options
Selectable options of the dynamic fields that render as dropdowns or radio buttons.Key Fields:
id: Unique identifier of the optiondynamic_field_id: Identifier of the dynamic field the option belongs tovalue: Value stored on the lead when the option is selected
score: Score added to the lead when the option is selectedstatus: Whether the option is currently activeregister_date: Timestamp the option was created
Email Sequences
Email Sequences
Email sequences configured inside each machine.Key Fields:
machine_code: Identifier of the machine the sequence belongs tosequence_code: Unique identifier of the email sequence inside the machinesequence_name: Name given to the email sequence
Levels
Levels
The individual emails that make up a sequence, in the order they are sent.Key Fields:
machine_code: Identifier of the machine the level belongs tosequence_code: Identifier of the email sequence the level belongs tomodel_code: Unique identifier of the email model used by the level
sequence: Position of the level within the sequencesubject: Subject line of the email sent at this level
Lead Sequences
Lead Sequences
Where each lead currently sits inside the account’s email sequences. The API returns the leads nested under each sequence; the connector expands that into one row per lead and sequence, so the table can be joined directly against
machines and email_sequences.Key Fields:machine_code: Identifier of the machine holding the sequencemachine_name: Name of the machine holding the sequencesequence_code: Identifier of the email sequence the lead is placed insequence_name: Name of the email sequence the lead is placed inlead_code: Identifier of the lead within the machinelead_id: Global identifier of the lead in the Leadlovers account
email: Email address of the leadname: Full name of the leadphone: Phone number of the leadbirthday: Birth date declared by the leadphoto: URL of the profile picture associated with the leadcity: City declared by the leadstate: State declared by the leadcompany: Company the lead is associated withgender: Gender declared by the leadscore: Engagement score accumulated by the leadsource: Origin the lead was captured fromlevel: Position of the lead inside the email sequencestatus: Current status of the lead in the sequencemessage: Free-text message stored with the leadtags: Tags applied to the lead, as a JSON array of objectsregistration_date: Timestamp the lead was registered in the account
Lead Sequences History
Lead Sequences History
The historical view of the same relationship: sequences a lead has been through, not only the current placement. Same fields as
lead_sequences.Key Fields:machine_code: Identifier of the machine holding the sequencesequence_code: Identifier of the email sequence the lead went throughlead_code: Identifier of the lead within the machine
lead_id,email,name,phone,birthday,photo,city,state,company,gender,score,source,level,status,message,tags,registration_date: same meaning as in thelead_sequencesstream
Forms
Forms
Capture forms configured inside each machine, with their conversion counters.Key Fields:
machine_code: Identifier of the machine the form belongs toform_code: Unique identifier of the formform_name: Name given to the form
views: Number of times the form was displayedconversions: Number of leads captured through the formpage_html: Raw HTML snippet used to embed the form on a page
Pages
Pages
Pages published inside each machine, with their view and conversion counters.Key Fields:
page_code: Unique identifier of the pagemachine_code: Identifier of the machine the page belongs topage_name: Name given to the pagepath: Public URL path of the page
views: Number of times the page was visitedconversions: Number of leads captured on the pagepage_image: URL of the page’s preview thumbnailpage_root: Identifier of the template the page was created fromuser_id: Identifier of the Leadlovers user that owns the page
Products
Products
Products (members areas) registered in the account.Key Fields:
product_id: Unique identifier of the productproduct_name: Name given to the productproduct_hash: Opaque hash of the product, used by the students and courses endpointscourses: Courses published inside the product, as a JSON array of objects
Students
Students
Students enrolled in each product’s members area, including their progress per course.Key Fields:
product_id: Identifier of the product the student is enrolled inid: Unique identifier of the studentname: Full name of the studentemail: Email address used by the student to sign in
date_register: Date the student was enrolledlast_access: Date of the student’s most recent access to the productphoto: URL of the student’s profile picturecourses: Per-course progress of the student, including completed classes and completion percentage, as a JSON array of objects
Courses
Courses
The full structure of each course published inside a product, read one course at a time.Key Fields:
id: Unique identifier of the courseproduct_id: Identifier of the product the course belongs totitle: Title of the coursemodules: Modules of the course and the classes inside each one, as a JSON array of objects
image: URL of the course cover imageenabled: Whether the course is currently published to studentscoach_id: Identifier of the user assigned as the course coachcoach_name: Name of the user assigned as the course coachmoderation_enabled: Whether student comments on the course are moderatedregister_date: Timestamp the course was created
ZapLovers Numbers
ZapLovers Numbers
WhatsApp sender numbers approved for the account. Requires the ZapLovers add-on.Key Fields:
sender_phone: Approved WhatsApp sender number, in the country code + area code + number format
ZapLovers Templates
ZapLovers Templates
WhatsApp message templates approved for each sender number. Requires the ZapLovers add-on.Key Fields:
sender_phone: Sender number the template is approved forid: Unique identifier of the templatename: Name of the template
language: Language code the template was approved instatus: Approval status of the template with WhatsAppcompoments: Body, header and button components of the template, as a JSON array of objects (spelled as the API returns it)