Rankerize Logo
Volver al blog

como medir fuente y medio en formularios ninja forms

28 de agosto de 2025Lectura de 5 min
como medir fuente y medio en formularios ninja forms

Resumen para IA / TL;DR

Cómo medir fuente y medio para Ninja Forms 📊 https://www.youtube.com/watch?v=pGi_BGRWzQM&ab_channel=rankerize Aquí puedes empezar con una breve explicació... Este artículo detalla cómo el SEO, GEO y las estrategias de contenido avanzado pueden transformar la visibilidad de tu marca en Google, ChatGPT y Gemini.

César Andrés Jiménez Arcia

Escrito por César Andrés Jiménez Arcia

Especialista SEO y Fundador en Rankerize. Ver perfil experto

Cómo medir fuente y medio para Ninja Forms 📊

Aquí puedes empezar con una breve explicación de por qué es importante medir la fuente y el medio de los envíos de formularios. Menciona los beneficios, como entender de dónde vienen tus leads y optimizar tus campañas de marketing. Puedes incluir una frase como “Si alguna vez te has preguntado de dónde provienen los envíos de tus formularios de Ninja Forms, ¡este tutorial es para ti!”.

ninja forms

¿Qué son la fuente (source) y el medio (medium)? 🤔

Es crucial aclarar estos conceptos antes de ir a lo técnico.

  • Fuente (source): Es el origen de donde vino la visita, por ejemplo, Google, Facebook, un correo electrónico, etc.

  • Medio (medium): Es la categoría general de la fuente, como “orgánico”, “pago” (CPC), “social”, “email”, etc.

1) JavaScript (first-touch + autollenado)

Pega tal cual en el footer del theme (o en un HTML widget global), una sola vez:

javascript
<script>
(function () {
  var COOKIE = "rkz_attrib";
  var DAYS = 90;

  function cookieDomain(){
    var h = location.hostname.split('.');
    return (h.length >= 2) ? "."+h.slice(-2).join('.') : location.hostname;
  }
  function setCookie(name, value, days){
    var d = new Date(); d.setTime(d.getTime()+days*864e5);
    document.cookie = name+"="+encodeURIComponent(JSON.stringify(value))+
      "; expires="+d.toUTCString()+"; path=/; domain="+cookieDomain()+"; SameSite=Lax";
  }
  function getCookie(name){
    var m = document.cookie.match(new RegExp('(^| )'+name+'=([^;]+)'));
    if (!m) return null;
    try { return JSON.parse(decodeURIComponent(m[2])); } catch(e){ return null; }
  }

  var p   = new URLSearchParams(location.search);
  var ref = document.referrer || "";
  var hasUTM   = ["utm_source","utm_medium","utm_campaign","utm_term","utm_content"].some(k => p.has(k));
  var hasAdsId = p.has("gclid") || p.has("fbclid") || p.has("msclkid");

  function classify(){
    var src  = (p.get("utm_source") || "").toLowerCase();
    var med  = (p.get("utm_medium") || "").toLowerCase();
    var camp = (p.get("utm_campaign") || "").toLowerCase();
    var r    = ref.toLowerCase();

    var channel = "Directo";
    if (hasAdsId || ["cpc","ppc","paid","sem"].includes(med)) channel = "Paid Search";
    else if (r.includes("google.") || r.includes("bing.") || r.includes("yahoo.") || r.includes("duckduckgo")) channel = "Orgánico";
    else if (r.includes("facebook") || r.includes("instagram") || r.includes("t.co") || r.includes("x.com") || r.includes("linkedin")) channel = "Social";
    else if (ref) channel = "Referido";

    var source = src || (ref ? (new URL(ref)).hostname.replace(/^www\./,"") : "direct");
    var medium = med || (channel==="Orgánico" ? "organic" : channel==="Social" ? "social" : channel==="Paid Search" ? "cpc" : "direct");
    return { source, medium, campaign: camp, channel };
  }

  // Set first-touch once, or refresh if llega con nuevas UTM/IDs
  var attrib = getCookie(COOKIE);
  if (!attrib || hasUTM || hasAdsId) {
    var c = classify();
    attrib = { source:c.source, medium:c.medium, campaign:c.campaign, channel:c.channel,
               landing: location.href, referrer: ref, ts: new Date().toISOString() };
    setCookie(COOKIE, attrib, DAYS);
  }

  function fill(){
    var a = getCookie(COOKIE) || {};
    var value = [a.source, a.medium, a.campaign].filter(Boolean).join(" / ");
    document.querySelectorAll("input.js-medio").forEach(function(el){
      if (!el.value) el.value = value || "Desconocido";
    });
  }
  document.addEventListener("DOMContentLoaded", fill);
  document.addEventListener("nfFormReady", fill);
})();
</script>
  

2) PHP (respaldo server-side)

Deja solo este snippet en functions.php de tu child theme (

php
<?php
// Rellena el campo 'medio' al enviar (server-side)
add_filter('ninja_forms_submit_data', function($form_data){

  // 1) Intenta desde cookie (first-touch)
  $value = '';
  if (!empty($_COOKIE['rkz_attrib'])) {
    $json = json_decode(stripslashes($_COOKIE['rkz_attrib']), true);
    if (is_array($json)) {
      $src = sanitize_text_field($json['source'] ?? '');
      $med = sanitize_text_field($json['medium'] ?? '');
      $cmp = sanitize_text_field($json['campaign'] ?? '');
      $value = trim(implode(' / ', array_filter([$src, $med, $cmp])));
    }
  }

  // 2) Fallback: UTM o referrer
  if ($value === '') {
    $utm_source   = sanitize_text_field($_GET['utm_source']   ?? '');
    $utm_medium   = sanitize_text_field($_GET['utm_medium']   ?? '');
    $utm_campaign = sanitize_text_field($_GET['utm_campaign'] ?? '');
    if ($utm_source || $utm_medium || $utm_campaign) {
      $value = implode(' / ', array_filter([$utm_source, $utm_medium, $utm_campaign]));
    } else {
      $ref = strtolower(sanitize_text_field($_SERVER['HTTP_REFERER'] ?? ''));
      if (!$ref) $value = 'Directo';
      elseif (strpos($ref,'google')!==false || strpos($ref,'bing')!==false || strpos($ref,'yahoo')!==false || strpos($ref,'duckduckgo')!==false) $value='Orgánico';
      elseif (strpos($ref,'facebook')!==false || strpos($ref,'instagram')!==false || strpos($ref,'x.com')!==false || strpos($ref,'t.co')!==false || strpos($ref,'linkedin')!==false) $value='Social';
      else $value='Referido';
    }
  }

  // 3) Escribe en el campo key = 'medio' si está vacío
  if (!empty($form_data['fields']) && is_array($form_data['fields'])) {
    foreach ($form_data['fields'] as &$field) {
      if (($field['key'] ?? '') === 'medio' && empty($field['value'])) {
        $field['value'] = $value ?: 'Desconocido';
      }
    }
  }

  return $form_data;
}, 999);
?>

Pruebas (rápidas)

  1. UTM: abre la página del formulario con
    ?utm_source=google&utm_medium=cpc&utm_campaign=prueba
    → envía → el envío debe mostrar google / cpc / prueba en medio.

  2. Orgánico: entra desde una búsqueda de Google sin UTM → Orgánico.

  3. Social: entra desde un enlace en Facebook/Instagram → Social.

  4. Directo: escribe la URL a mano → Directo.

Sigue leyendo

Otros artículos que te pueden servir

Agencia SEO para directores de marketing: guia practica para elegir, medir y escalar en B2B
sept de 2025

Agencia SEO para directores de marketing: guia practica para elegir, medir y escalar en B2B

Agencia SEO para directores de marketing: guía práctica para elegir, medir y escalar en B2B “A veces nos enamoramos de nuestro servicio y no escuchamos a nuestro usuario.”— experiencia real en proyectos B2B 1) El error más caro: enamorarte del servicio y no del dolor del cliente Señales de que estás “hablando interno” y no [&hellip;]

Leer artículo →
Tono de comunicación: guía práctica para definirlo, medirlo y mantenerlo coherente
sept de 2025

Tono de comunicación: guía práctica para definirlo, medirlo y mantenerlo coherente

Tono de comunicación: guía práctica para definirlo, medirlo y mantenerlo coherente 1) Voz vs tono: diferencias, cuándo cambian y por qué importan En contenido, la voz es quién eres; el tono es cómo te expresas según la situación. La voz de marca es estable (personalidad, principios, valores). El tono se modula por canal, contexto y [&hellip;]

Leer artículo →
Posicionamiento web guía práctica para ganar primeras posiciones
sept de 2025

Posicionamiento web guía práctica para ganar primeras posiciones

Posicionamiento web en 2025: guía práctica para ganar primeras posiciones (sin humo) 1) Qué es el posicionamiento web (y por qué hoy importa más que nunca) Cuando hablo de “posicionamiento web” hablo de aparecer donde la gente ya está buscando. No es interrumpir con anuncios: es estar presente con la mejor respuesta. El SEO (optimización [&hellip;]

Leer artículo →
Intención de búsqueda y keywords: La estrategia SEO que más convierte
mar de 2025

Intención de búsqueda y keywords: La estrategia SEO que más convierte

Más allá del volumen de búsqueda: cómo identificar la intención real detrás de cada keyword y crear contenido que no solo posiciona, sino que convierte visitantes en clientes.

Leer artículo →
¿Cómo aparecer primero en Google? Guía práctica
mar de 2025

¿Cómo aparecer primero en Google? Guía práctica

¿Cómo aparecer primero en Google? Guía práctica 2025 Si tienes un negocio, un blog o una tienda online, seguramente te has preguntado: ¿Cómo aparecer primero en Google? La respuesta no es mágica, pero con la estrategia correcta puedes mejorar tu posición y atraer más clientes potenciales. En esta guía, te explico paso a paso lo [&hellip;]

Leer artículo →
Mobile-First Indexing: Por qué tu web debe ser perfecta en móvil
mar de 2025

Mobile-First Indexing: Por qué tu web debe ser perfecta en móvil

Google usa la versión móvil de tu sitio como base para el indexado y ranking. Descubre qué es el Mobile-First Indexing, cómo afecta tu SEO y cómo optimizarlo.

Leer artículo →
Dos caminos, un resultado

¿Quieres resultados para tu propio sitio?

Prueba nuestra plataforma Flow para gestionar tu propio SEO con IA, o pide una demostración por WhatsApp para que nuestros expertos lo hagan por ti.

Sin compromisos. Primera consulta gratuita.