Saltar al contenido
Instalación por plataforma

Instalar en WooCommerce (WordPress)

Un archivo PHP con el script, clientes verificados y compras desde tu servidor.

Opción rápida

Pega el código de Instalación en el encabezado de tu tema o con un plugin de fragmentos de código que lo ponga en el <head> de todas las páginas. Con eso ya se miden las visitas.

Opción completa (recomendada)

Con un archivo propio, Albunea reconoce a tus clientes con sesión iniciada como verificados y recibe las compras desde tu servidor, aunque el navegador falle.

  1. Copia tu clave pública de Instalación y tu secreto del servidor de Ajustes › Secreto del servidor. El secreto se muestra una sola vez; si lo perdiste, genera otro.
  2. En wp-config.php agrega: define('ALBUNEA_SECRETO', 'alb_sec_…');
  3. Crea el archivo wp-content/mu-plugins/albunea.php con el código de abajo y cambia alb_pub_XXXXXXXX por tu clave.
  4. Revisa que el dominio de tu tienda esté en Ajustes › Dominios del panel. Albunea solo acepta datos que vienen de esos dominios; «*.tutienda.mx» incluye los subdominios.
  5. Abre tu tienda en otra pestaña y navega un poco. En el panel, en Instalación, verás «Última señal» con la página que acabas de abrir, normalmente en segundos.
wp-content/mu-plugins/albunea.php
<?php
/** Albunea para WooCommerce: script, identificación firmada (v2) y compras desde el servidor. */
const ALBUNEA_SITIO = 'alb_pub_XXXXXXXX';
const ALBUNEA_API   = 'https://www.getalbunea.com';

add_action('wp_enqueue_scripts', function () {
    wp_enqueue_script('albunea', ALBUNEA_API . '/s.js?k=' . rawurlencode(ALBUNEA_SITIO), [], null,
        ['strategy' => 'async', 'in_footer' => false]);
    $cola = 'window.albunea=window.albunea||function(){(albunea.q=albunea.q||[]).push(arguments)};';
    if (is_user_logged_in() && defined('ALBUNEA_SECRETO')) {
        $u  = wp_get_current_user();
        $ts = time();
        $id = ['externo' => (string) $u->ID, 'email' => $u->user_email, 'nombre' => $u->display_name,
               'ts' => $ts, 'firma' => hash_hmac('sha256', $u->ID . '.' . $ts, ALBUNEA_SECRETO)];
        $cola .= 'albunea("identificar",' . wp_json_encode($id, JSON_HEX_TAG | JSON_HEX_AMP) . ');';
    }
    wp_add_inline_script('albunea', $cola, 'before');
});

// Une la compra con la visita: guarda la cookie _alb en el pedido.
add_action('woocommerce_checkout_create_order', function ($pedido) {
    $vid = isset($_COOKIE['_alb']) ? sanitize_text_field(wp_unslash($_COOKIE['_alb'])) : '';
    if (preg_match('/^[A-Za-z0-9_-]{8,64}$/', $vid)) $pedido->update_meta_data('_albunea_v', $vid);
});

// Compra desde el servidor: nunca bloquea el pago (2 s máximo, sin esperar respuesta).
function albunea_evento_pedido(int $pedido_id, string $tipo): void {
    if (!defined('ALBUNEA_SECRETO')) return;
    $p = wc_get_order($pedido_id);
    if (!$p) return;
    $items = [];
    foreach ($p->get_items() as $it) {
        $items[] = ['item_id' => (string) $it->get_product_id(), 'item_name' => $it->get_name(),
                    'price' => (float) $p->get_item_subtotal($it, false), 'quantity' => (int) $it->get_quantity()];
    }
    $cuerpo = ['eventos' => [['t' => $tipo, 'p' => ['transaction_id' => (string) $p->get_id(),
        'value' => (float) $p->get_total(), 'currency' => $p->get_currency(), 'items' => $items]]]];
    if ($p->get_customer_id()) $cuerpo['perfil'] = ['externo' => (string) $p->get_customer_id()];
    if ($v = $p->get_meta('_albunea_v')) $cuerpo['v'] = $v;
    if (empty($cuerpo['perfil']) && empty($cuerpo['v'])) return;
    wp_remote_post(ALBUNEA_API . '/v1/servidor/eventos', ['timeout' => 2, 'blocking' => false,
        'headers' => ['Authorization' => 'Bearer ' . ALBUNEA_SECRETO, 'Content-Type' => 'application/json'],
        'body' => wp_json_encode($cuerpo)]);
}
add_action('woocommerce_checkout_order_processed', fn ($id) => albunea_evento_pedido((int) $id, 'pedido_creado'));
add_action('woocommerce_payment_complete', fn ($id) => albunea_evento_pedido((int) $id, 'purchase'));
add_action('woocommerce_order_status_completed', fn ($id) => albunea_evento_pedido((int) $id, 'purchase'));

Cambia alb_pub_XXXXXXXX por la clave pública de tu tienda: la encuentras en el panel, en Instalación.

Buenas prácticas

  • Si usas GTM4WP o Google Analytics for WooCommerce, ya llenan dataLayer con ver producto, agregar al carrito, iniciar el pago y compra; Albunea los toma sin más código.
  • Una compra mandada dos veces (desde el navegador y desde el servidor) se cuenta una sola vez, porque se deduplica por el número de pedido.
  • Pedidos con pago después (OXXO, depósito, contra entrega): el código manda «pedido_creado» al crear el pedido, para que la alerta de carrito en pausa no te avise de alguien que sí pidió.
  • Con WP Rocket o LiteSpeed, excluye de la caché las páginas con sesión iniciada para que la firma no quede guardada.

Guías relacionadas

Ver todo el centro de ayuda

¿No encontraste lo que buscabas?

Escríbenos a [email protected]. Te contesta una persona, en español.

Escríbenos