Skip to main content

evoLeadGate: reference

The "Lead magnet" element

The builder labels are in Spanish. English glosses are given in brackets. Defaults are those of a freshly added element.

Formulario tab (Form)

Option What it does Default
ID del formulario (form ID) Unique identifier of the form. It is normalised to lower case with hyphens, without accents or spaces (letters a-z and digits only). Stored on every lead and sent in the analytics events. Without it, the form is not shown. empty
Campos adicionales (extra fields) List of fields (see below). The email is always requested and is not part of this list. Maximum 20; extra ones are ignored. one sample "Nombre" field
Archivo de descarga (download file) The file that is delivered. It must be in images/evoleadgate-privado/. It accepts the path the picker stores (images/evoleadgate-privado/…); a path to any other folder is discarded. empty

Textos tab (Texts)

Option What it does Default
Título (title) Heading above the form. empty
Elemento del título (title element) HTML tag of the heading: H2, H3, H4 or Div. H3
Descripción (description) Rich text under the heading. empty
Texto del botón de envío (submit button text) Button label. site-language text ("Download")
Mensaje de éxito (success message) Message after submitting. site-language text

Entrega y avisos tab (Delivery and notices)

Option What it does Default
Entrega (delivery) "Descarga inmediata y email" or "Solo por email (doble opt-in)". See "Delivery modes" below. Instant download and email
Emails de aviso (notification emails) One or more recipients for each lead notice, separated by commas, semicolons, spaces or line breaks. Invalid addresses are dropped. If empty, the default notification email from the options is used. empty

Consentimiento tab (Consent)

Option What it does Default
Texto de privacidad (privacy text, required) Label of the privacy checkbox, which the visitor must tick. site-language text ("I accept the privacy policy")
Texto del enlace (link text) Text of the link to the policy. site-language text ("View policy")
Enlace a la política de privacidad (privacy policy link) URL of the policy. It opens in a new tab. Without it, no link is shown. empty
Texto de comunicaciones comerciales (marketing text, optional) Label of the marketing checkbox. If empty, the checkbox is not shown. It is shown unticked. empty

The exact text of each checkbox is stored with the lead at the moment of submission.

Analítica tab (Analytics)

Option What it does Default
Evento de Analytics (Analytics event) Name of the event pushed to the dataLayer. generate_lead
Conversión de Google Ads (Google Ads conversion) Format AW-XXXXXXX/label. Leave empty if you do not use Google Ads. empty
Evento de Meta Ads (Meta Ads event) Name of the event sent to fbq. Lead

Ajustes and Avanzado tabs (Settings and Advanced)

The usual YOOtheme options: top and bottom margin, maximum width, block and text alignment, animation and visibility. Margins default to "default" at the top and bottom. The Advanced tab holds the standard builder options.

The "Campo" child element (Field)

Option What it does
Etiqueta (label) Text the visitor sees. The internal field name is derived from it (lower case, no accents, underscores, unique within the form). Fields without a label are ignored.
Tipo (type) Texto (text), Teléfono (phone), Desplegable (dropdown) or Casilla (checkbox).
Obligatorio (required) Marks the field as required.
Texto de ayuda (placeholder) Placeholder inside the field. Text and phone only.
Opciones (options) One option per line. Dropdown only. Up to 50 options of up to 100 characters; duplicates are dropped.

Server-side validation, always against the signed definition of the form:

Type Rule
Email Lower-cased, 190 characters at most, valid email format.
Text 255 characters at most.
Phone 6 to 30 characters from digits, +, (, ), -, . and spaces.
Dropdown The value must be one of the defined options.
Checkbox Stored as 1 when ticked and empty otherwise. If required, it must be ticked.

Delivery modes

Mode Value Behaviour
Instant download and email instant_email After submitting, the visitor sees a download button. They also get an email with the link.
Email only (double opt-in) email_only After submitting, the visitor only sees that an email was sent. There is no link on screen. The first valid use of the link marks the lead's email as verified.

In both modes:

  • the notice goes to the form's notification emails or, if there are none, to the default email in the options. With no recipient at all, the notice status is stored as skipped;
  • the delivery email goes to the address typed in that same form;
  • a mail failure does not stop the lead from being saved; it is recorded as failed in the lead's status;
  • the download link works as many times as needed until it expires. Each download is logged;
  • the file is served by PHP as an attachment, without exposing its real path. An expired link answers 410; an unknown link, or a file that is gone, answers 404.

Analytics events

After a successful submission, the form script does this in the browser:

Action Condition
dataLayer.push({event: <Analytics event>, form_id, event_id}) Always.
gtag('event', 'conversion', {send_to: <Google Ads conversion>}) When "Conversión de Google Ads" has a value and gtag is a function.
fbq('track', <Meta Ads event>, {}, {eventID: event_id}) When fbq is a function.
dataLayer.push({event: 'file_download', form_id}) When the download button is clicked (instant delivery only).

event_id is the lead's UUID, so it matches the event_id shown in the lead detail and can be used to deduplicate conversions.

The script does not read the consent state. It checks whether gtag and fbq exist: your site loads the pixels, for example from YOOtheme's scripts panel in the marketing category, and they only exist if the visitor accepted them. The script does not load third-party scripts; what gtag and fbq do depends on how you load them.

Joomla event for integrations

Each new lead fires a Joomla event after it is saved and the emails have been sent:

Name onEvoleadgateLeadCreated
Plugin group evoleadgate (imported before the event is dispatched)
Argument lead: an array with every column of the lead plus its id

The argument also carries the stored IP, the user agent, the consents, the attribution data and the download token. Treat it as personal data and as a credential. If your plugin throws an exception, it is ignored and the lead is still saved.

A minimal subscribed plugin:

public static function getSubscribedEvents(): array
{
    return ['onEvoleadgateLeadCreated' => 'onLead'];
}

public function onLead(\Joomla\Event\Event $event): void
{
    $lead = $event->getArgument('lead'); // ['id' => ..., 'email' => ..., 'form_id' => ..., ...]
}

REST API (read-only)

Provided by the package's web services plugin. It uses the X-Joomla-Token header and needs a user with the core.manage permission on com_evoleadgate. Responses are not cached.

Method and route What it returns
GET /api/index.php/v1/evoleadgate/leads List of leads, newest first. Parameters: filter_form (form ID), page[limit] (1 to 100, default 20), page[offset]. Attributes: form_id, email, verified, delivery, created. Includes meta.total-items.
GET /api/index.php/v1/evoleadgate/leads/{id} One lead: form_id, email, fields, source_url, consent_privacy, consent_marketing, consented_at, verified, delivery, utm_source, utm_medium, utm_campaign, created.

Neither includes the IP or the user agent. There are no write routes. A user without the permission gets 403.

Tools for evoMCP (optional)

If you have evoMCP installed, the package's evomcp plugin registers these tools under the "evoLeadGate" component. They need core.manage on com_evoleadgate plus the permissions of the MCP connection.

Tool Permission What it does
evoleadgate_list_leads read Lists leads with filters (form, email, verified, dates) and pagination up to 100. Flagged as personal data.
evoleadgate_get_lead read One lead with its fields, consents, UTM and email status. It does not include the IP or the user agent.
evoleadgate_lead_stats read Leads per form and per day, with no personal data.
evoleadgate_delete_leads write Deletes up to 50 leads with their downloads. It also needs core.delete and always requires human approval. It supports dry_run.

Component entry points

For information only: the form script uses them, and they are not meant to be called by hand.

Entry Use
GET /index.php?option=com_evoleadgate&format=json&task=lead.token Returns a current CSRF token. The script requests it on load so the form works with a cached page.
POST /index.php?option=com_evoleadgate&format=json&task=lead.submit Receives the submission. Responses: 200 with ok, event_id, delivery and, for instant delivery, download_url; 422 with per-field errors; 400 if anti-spam blocks the submission or the signed configuration is invalid; 403 if the CSRF token fails; 503 if the file is no longer available.
GET /?option=com_evoleadgate&task=lead.download&token=<token> Serves the file to a valid link.

The form configuration travels in a hidden field signed with HMAC-SHA256 using the site secret, with no expiry. Changing Joomla's secret invalidates any form still in a cache until it is rendered again.

Limits

Limit Value
Extra fields per form 20
Dropdown options 50, up to 100 characters each
Files per form 1
Text fields 255 characters
Email 190 characters
Leads per REST API call 100
Leads per delete from evoMCP 50