Personyze Wiki Personyze Wiki docs
Español
  • English
  • Español
  • Français
  • Deutsch
  • Italiano
  • Nederlands
  • Português
  • Polski
  • 日本語
  • العربية
Open Personyze
Documentación/ Desarrolladores/ API REST — referencia de objetos
Desarrolladores

API REST — referencia de objetos

Referencia de todos los objetos de la API REST de Personyze — users, listas, acciones, placeholders, productos, artículos, interacciones, eventos, sesiones, estadísticas y summary_actions: métodos, columnas e indexación.

26 min read Actualizado hace 1 hora

Referencia de todos los objetos que expone la API REST de Personyze. Cada sección de abajo cubre un objeto: su finalidad, los métodos HTTP admitidos, las columnas (con notas de tipo e indexación) y ejemplos de curl listos para copiar y pegar.

Requisitos previos — léalos primero si aún no lo ha hecho:

Índice de objetos

Haga clic en un objeto para ir a su sección. Cada sección tiene su propia URL de ancla — puede enlazar directamente a la referencia de cualquier objeto.

Contenido CRUD (lectura/escritura)

Contienen sus campañas, su audiencia, su catálogo y su configuración. CRUD completo para External API user y superiores.

usersPerfiles de clientes. Los nombres de columna son dinámicos.
user_listsListas de usuarios con nombre (manuales o importadas).
user_list_usersPertenencia de usuarios a user_lists.
actionsAcciones de personalización. Por ahora, solo lectura por REST.
conditionsCondiciones de audiencia. Por ahora, solo lectura por REST.
placeholdersContenedores placeholder del DOM (donde se muestran las acciones).
containers_grab_variableRecoger valores del DOM/JS en el perfil del visitante.
productsFilas del catálogo de productos. Los nombres de columna son dinámicos.
articlesFilas del catálogo de artículos. Los nombres de columna son dinámicos.

Interacciones / eventos (sobre todo escritura)

Registros de solo inserción de las interacciones de los visitantes. Los usan sobre todo los SDK y las integraciones de back-end.

products_interactionsEventos de vista / carrito / compra sobre productos.
eventsRegistro de eventos genérico (solo lectura).
formsRegistro de envíos de formularios (solo lectura).
doDistribuidor de comandos sin respuesta.

Informes / archivo (solo lectura)

sessions_archiveUna fila por sesión de visitante, con metadatos de ubicación, dispositivo y navegador.
user_interestsIntereses, categorías y etiquetas deducidos por usuario.
products_stats_*Contadores de interacción por producto en seis periodos móviles.
summary_actionsKPI diarios agregados por acción.

Ayudas para el tracker / SDK

Los usan el tracker de JS, los SDK nativos y las integraciones para arrancar por sí mismos. Normalmente no los llaman directamente quienes consumen la API REST.

tracker_codeDevuelve el fragmento de JS que se inserta en una página del cliente (salida HTML).

users

Perfiles de clientes. Cada fila es un visitante o cliente. Los nombres de columna son dinámicos — además de las columnas de gestión documentadas, puede guardar las claves y valores personalizados que necesite su cuenta.

GET POST PUT DELETE

Columnas de identificación / gestión

Columna Notas
user_id Clave primaria interna de Personyze. Se asigna automáticamente al insertar. Indexada.
internal_id Su identificador externo (ID del CRM, ID de cuenta, SKU). Indexado.
fb_id ID de usuario de Facebook. Indexado.
email Email del visitante. Indexado.
last_session_time Segundos Unix. Indexado.
data_last_modified Segundos Unix. Indexado.
session_counter Total de sesiones registradas hasta ahora para este usuario.

Campos de perfil comunes (personalizados)

first_name, middle_name, last_name, sex, birthday, timezone, current_city, current_state, current_country, religion, political, interests, relationship_status, education_year, más custom_t_1custom_t_6 (texto), custom_i_1custom_i_4 (entero), custom_f_1custom_f_2 (decimal), custom_d_1, custom_d_2 (fecha) — y cualquier campo adicional que haya configurado en su cuenta.

Ejemplos

# Lookup by your external id
curl 'https://api:KEY@app.personyze.com/rest/users/where/internal_id=42'
# Recent active visitors (last 7 days)
curl 'https://api:KEY@app.personyze.com/rest/users
        /where/last_session_time>1730000000
        /columns/user_id,internal_id,email,first_name,last_session_time
        /order_by_desc/last_session_time
        /limit/1000'
# Create
curl -X POST 'https://api:KEY@app.personyze.com/rest/users' \
     -H 'Content-Type: application/json' \
     -d '{"internal_id":"acct-987","email":"alice@example.com","first_name":"Alice","custom_field_x":"vip"}'
# → 5712334  (new user_id)
# Update
curl -X PUT 'https://api:KEY@app.personyze.com/rest/users/where/internal_id=acct-987' \
     -H 'Content-Type: application/json' \
     -d '{"first_name":"Alicia"}'
# → 1  (rows affected)

Columnas indexadas / límites de recorrido

GET /rest/users sin una cláusula where requiere order_by sobre una columna indexada — user_id, last_session_time, data_last_modified, fb_id, email, o internal_id. De lo contrario: 400 Cannot do this operation on whole table.

Limitación de solicitudes

POST /rest/users se serializa por cuenta de Personyze: como máximo una inserción en curso a la vez. Las solicitudes que esperan más de 1 segundo se rechazan con 400 Too many simultaneous requests — reintente con espera exponencial.

user_lists

Listas de usuarios con nombre (p. ej. «VIPs», «Suscritos a la newsletter»). Una fila por lista. La pertenencia está en un objeto aparte — consulte user_list_users.

GET POST PUT DELETE

Columnas

Columna Notas
id Clave primaria. Se asigna automáticamente.
name Nombre visible de la lista. Indexado.

Ejemplos

# All lists
curl 'https://api:KEY@app.personyze.com/rest/user_lists'
# Create
curl -X POST 'https://api:KEY@app.personyze.com/rest/user_lists' \
     -H 'Content-Type: application/json' \
     -d '{"name":"VIPs"}'
# → 17
# Rename
curl -X PUT 'https://api:KEY@app.personyze.com/rest/user_lists/17' \
     -H 'Content-Type: application/json' \
     -d '{"name":"VIP customers"}'
# → 1
# Delete (also clears all memberships in user_list_users via FK cascade)
curl -X DELETE 'https://api:KEY@app.personyze.com/rest/user_lists/17'
# → 1

user_list_users

Pertenencia: qué usuarios pertenecen a qué user_lists. Una fila por cada par (user_list_id, user_id) de valores.

GET POST PUT DELETE

POST acepta un user_idexistente, o una clave de búsqueda (user_internal_id, user_email) — la API la resuelve en un user_id, y crea una fila users provisional si hace falta.

Columnas

Columna Notas
user_list_id FK → user_lists.id. Parte de la clave compuesta.
user_id FK → users.user_id. Parte de la clave compuesta.

Campos adicionales del cuerpo POST (se resuelven en user_id en el servidor y después se descartan)

Campo Se resuelve en
user_internal_id user_id del usuario con ese internal_id. Crea el usuario si no existe.
user_email user_id del usuario con ese email. Crea el usuario si no existe.

Ejemplos

# Members of list 17
curl 'https://api:KEY@app.personyze.com/rest/user_list_users/where/user_list_id=17/limit/1000'
# Add by user_id
curl -X POST 'https://api:KEY@app.personyze.com/rest/user_list_users' \
     -H 'Content-Type: application/json' \
     -d '{"user_list_id":17,"user_id":5712334}' 
# Add by external id (auto-creates a users row if needed)
curl -X POST 'https://api:KEY@app.personyze.com/rest/user_list_users' \
     -H 'Content-Type: application/json' \
     -d '{"user_list_id":17,"user_internal_id":"acct-987"}' 
# Add by email
curl -X POST 'https://api:KEY@app.personyze.com/rest/user_list_users' \
     -H 'Content-Type: application/json' \
     -d '{"user_list_id":17,"user_email":"alice@example.com"}' 
# Remove
curl -X DELETE 'https://api:KEY@app.personyze.com/rest/user_list_users
        /where/user_list_id=17&user_id=5712334'

actions

Acciones de personalización — lo que hacen sus campañas: mostrar HTML, mostrar un popup, enviar un email, enviar una notificación push, etc. Por ahora, solo lectura por REST (se crean y editan desde la GUI).

GET POST PUT DELETE

Columnas

Columna Notas
id Clave primaria.
version_tag production o testing.
name Nombre visible de la acción.
type_id El tipo de acción (HTML / popup / email / push / …). Se resuelve a partir del campo subyacente action_js_id.
placeholders Array JSON de los ID de placeholder a los que se dirige la acción.
content_type Tipo MIME / clase de contenido (de actions_js).
content_param Nombre de la clave del parámetro JS cuyo valor es el contenido que se muestra.
content_begin Calculado: fragmento de apertura del contenido mostrado (tras sustituir el envoltorio).
content_end Calculado: fragmento de cierre.
presenting_rules JSON: reglas de tiempo / frecuencia.
libs_app Bibliotecas de app de las que depende la acción.

Ejemplos

# All production actions
curl 'https://api:KEY@app.personyze.com/rest/actions
        /where/version_tag=production
        /columns/id,name,type_id,placeholders'
# One action's full content
curl 'https://api:KEY@app.personyze.com/rest/actions/where/id=42
        /columns/id,name,content_type,content_param,content_begin,content_end'

conditions

Condiciones de audiencia — el cuándo de las campañas. Solo lectura por REST.

GET POST PUT DELETE

Columnas

Columna Notas
id Clave primaria.
name Nombre visible de la condición.

Ejemplos

# All tracker/offline conditions
curl 'https://api:KEY@app.personyze.com/rest/conditions/limit/1000'

placeholders

Contenedores de tipo placeholder — huecos del DOM donde las acciones muestran contenido. Gestione el catálogo de placeholders definidos para su sitio.

GET POST PUT DELETE

Columnas

Columna Notas
id Clave primaria.
name Nombre visible.
html_id Selector o id del DOM donde se monta el placeholder.
units_count_max Número máximo de unidades de acción que pueden llenar este placeholder. Por defecto 1.

Ejemplos

# All placeholders
curl 'https://api:KEY@app.personyze.com/rest/placeholders'
# One
curl 'https://api:KEY@app.personyze.com/rest/placeholders/14'
# Create
curl -X POST 'https://api:KEY@app.personyze.com/rest/placeholders' \
     -H 'Content-Type: application/json' \
     -d '{"name":"Hero banner","html_id":"#hero","units_count_max":1}'
# → 88
# Update
curl -X PUT 'https://api:KEY@app.personyze.com/rest/placeholders/88' \
     -H 'Content-Type: application/json' \
     -d '{"units_count_max":3}'
# → 1
# Delete
curl -X DELETE 'https://api:KEY@app.personyze.com/rest/placeholders/88'
# → 1

Alcance del endpoint.El manejador limita todas las consultas a container_types='placeholder', así que los demás tipos de contenedor (p. ej. «grab variable») no se ven desde este endpoint — consulte containers_grab_variable.

containers_grab_variable

Contenedores «grab variable» — llevan valores del DOM/JS de la página del visitante a su perfil. Cada contenedor dice «vigila esta variable / este elemento del DOM; cuando aparezca, guárdalo como campo del perfil.»

GET POST PUT DELETE

Columnas

Columna Notas
id Clave primaria.
name Nombre visible.
is_active 1 / 0.
variable_path Ruta del DOM o expresión JS que se recoge.
mask Regex/plantilla opcional que se aplica a la cadena recogida.
constant_value Valor alternativo / forzado opcional.
watch_variable Volver a recoger cada vez que cambia la variable (1 / 0).
profile_column Columna del perfil en la que se escribe el valor.

Ejemplos

# All grab-variable containers
curl 'https://api:KEY@app.personyze.com/rest/containers_grab_variable'
# Create
curl -X POST 'https://api:KEY@app.personyze.com/rest/containers_grab_variable' \
     -H 'Content-Type: application/json' \
     -d '{"name":"Cart total",
          "variable_path":"window.dataLayer[0].cart.total",
          "mask":"^([0-9.]+)$",
          "watch_variable":1}'
# → 153
# Update
curl -X PUT 'https://api:KEY@app.personyze.com/rest/containers_grab_variable/153' \
     -H 'Content-Type: application/json' \
     -d '{"is_active":0}' 
# Delete
curl -X DELETE 'https://api:KEY@app.personyze.com/rest/containers_grab_variable/153'

products

Catálogo de productos. Cada fila es un SKU. Los nombres de columna son dinámicos — además de las columnas de gestión documentadas, puede guardar los campos personalizados que necesite su catálogo.

GET POST PUT DELETE

Columnas de identificación / gestión

Columna Notas
id Clave primaria. Se asigna automáticamente.
internal_id Su SKU / identificador externo.
data_last_modified Segundos Unix.
is_in_stock 'yes' / 'no' enum (no 1/0).

Campos de producto comunes (personalizados)

title, description_short, description_long, price, sale_price, image_big_url, image_medium_url, image_small_url, cart_url, brand, manufacturer, category, inventory, expiration_date, size, color, rank, is_new, age_from, age_to, available_location, not_available_location, etc. El conjunto real de campos depende de la configuración de su cuenta.

Entradas renombradas (en POST / PUT)

Entrada Se guarda como
image_1 image_big_url
image_2 image_medium_url
image_3 image_small_url

Ejemplos

# In-stock products in a category
curl 'https://api:KEY@app.personyze.com/rest/products
        /where/category=tools&is_in_stock=yes
        /columns/id,internal_id,title,price,inventory
        /order_by/title
        /limit/100'
# Lookup by internal_id
curl 'https://api:KEY@app.personyze.com/rest/products/where/internal_id=SKU-1234'
# Insert (or "patch" — duplicate internal_id will UPDATE rather than fail)
curl -X POST 'https://api:KEY@app.personyze.com/rest/products' \
     -H 'Content-Type: application/json' \
     -d '{"internal_id":"SKU-1234",
          "title":"Cordless Drill",
          "price":129.99,
          "is_in_stock":"yes",
          "image_1":"https://cdn.example.com/big.jpg"}'
# → 51234
# Update by internal_id
curl -X PUT 'https://api:KEY@app.personyze.com/rest/products/where/internal_id=SKU-1234' \
     -H 'Content-Type: application/json' \
     -d '{"price":119.99,"is_in_stock":"no"}' 
# Delete
curl -X DELETE 'https://api:KEY@app.personyze.com/rest/products/where/internal_id=SKU-1234'

Comportamiento de upsert en POST.POST aplica parche si está duplicado: un internal_id existente actualiza la fila en lugar de fallar. Para importaciones masivas desde una URL de feed, use la sincronización programada de feeds desde la GUI de Personyze en lugar de llamadas REST fila a fila.

articles

Catálogo de artículos (entradas de blog, noticias, entradas de base de conocimiento). La misma forma que products pero para contenido editorial.

GET POST PUT DELETE

Columnas de identificación / gestión

Columna Notas
id Clave primaria. Se asigna automáticamente.
internal_id Su identificador externo (slug, id del CMS).
data_last_modified Segundos Unix.
is_published 'yes' / 'no' enum.

Campos de artículo comunes (personalizados)

title, description_short, description_long, image_big_url, image_medium_url, image_small_url, author, publish_date, category, tags, rank, etc. La lista real depende de la configuración other_columns_info de su sitio.

Entradas renombradas

Entrada Se guarda como
image_1 image_big_url
image_2 image_medium_url
image_3 image_small_url

Ejemplos

# Recent published articles
curl 'https://api:KEY@app.personyze.com/rest/articles
        /where/is_published=yes
        /columns/id,internal_id,title,author,publish_date
        /order_by_desc/publish_date
        /limit/100'
# Lookup by internal_id
curl 'https://api:KEY@app.personyze.com/rest/articles/where/internal_id=how-to-personalize'
# Insert
curl -X POST 'https://api:KEY@app.personyze.com/rest/articles' \
     -H 'Content-Type: application/json' \
     -d '{"internal_id":"how-to-personalize",
          "title":"How to personalize your site",
          "author":"Alice",
          "is_published":"yes",
          "image_1":"https://cdn.example.com/big.jpg"}' 
# Update
curl -X PUT 'https://api:KEY@app.personyze.com/rest/articles/where/internal_id=how-to-personalize' \
     -H 'Content-Type: application/json' \
     -d '{"is_published":"no"}' 
# Delete
curl -X DELETE 'https://api:KEY@app.personyze.com/rest/articles/where/internal_id=how-to-personalize'

Las interacciones con artículos van en el endpoint do.POST aplica parche si está duplicado (igual que products). Para registrar las interacciones de los visitantes con artículos (visto / comentado / me gusta), use do con los comandos Article … — hoy no hay un objeto REST dedicado.

products_interactions

Registro de interacciones con productos: vistas, añadidos al carrito, compras, «favorito», «entregado». Sobre todo de inserción. Respaldado por una tabla de archivo.

GET POST PUT DELETE

Columnas

Columna Notas
user_id FK → users.user_id. Indexado.
product_internal_id FK → products.internal_id. Columna inicial de un índice compuesto [product_internal_id, user_id, transaction_time].
quantity Por defecto 1 al insertar.
status Uno de viewed, delivered, extra (≈ añadido al carrito), favorite, goal (compra). Indexado.
action_id Si la interacción se atribuyó a una acción de Personyze, su ID. Si no, null.
transaction_time Segundos Unix — momento del pedido o de la transacción.
time Segundos Unix — cuándo se registró la fila. Indexado.
amount Valor monetario (según la configuración de moneda del sitio).

Inserción: identificar al usuario

POST acepta uno cualquiera de estos para identificar al usuario:

Campo Se resuelve en
user_id (numérico) Búsqueda directa por clave primaria.
user_internal_id user_id del usuario con ese internal_id. Crea automáticamente una fila users provisional si no existe.
user_email user_id del usuario con ese email. Se crea automáticamente si no existe.

Ejemplos

# All purchases in a window, paged
curl 'https://api:KEY@app.personyze.com/rest/products_interactions
        /where/status=goal&time>1730000000
        /order_by_desc/time
        /limit/1000'
# A specific user's history with a product
curl 'https://api:KEY@app.personyze.com/rest/products_interactions
        /where/product_internal_id=SKU-1234
        /columns/user_id,status,quantity,amount,transaction_time'
# Log a purchase
curl -X POST 'https://api:KEY@app.personyze.com/rest/products_interactions' \
     -H 'Content-Type: application/json' \
     -d '{"user_internal_id":"acct-987",
          "product_internal_id":"SKU-1234",
          "quantity":2,
          "status":"goal",
          "transaction_time":1734000000,
          "amount":259.98}' 
# Delete by composite key
curl -X DELETE 'https://api:KEY@app.personyze.com/rest/products_interactions
        /where/user_id=5712334&product_internal_id=SKU-1234&status=viewed'

Columnas indexadas

user_id, [product_internal_id, user_id, transaction_time], status, time. Las consultas sin una cláusula where sobre una de ellas (o un order_by sobre ellas) se rechazan como recorridos de tabla completa.

events

Registro de eventos genérico — una fila por cada evento registrado por el tracker de JS, el SDK o el endpoint do . Por ahora, solo lectura por REST.

GET POST PUT DELETE

Columnas

Columna Notas
id Clave primaria.
user_id FK → users.user_id. Indexado.
time Segundos Unix.
visit_id FK → fila de visita.
container_id FK → containers.id (el origen del evento). Indexado.
container_types El tipo del contenedor (click event, submit event, etc.).
value Cadena con los datos del evento.
first_visit_id Primer visit_id de la sesión.
session_start_time Segundos Unix.

Ejemplos

# Recent events for a user
curl 'https://api:KEY@app.personyze.com/rest/events
        /where/user_id=5712334
        /order_by_desc/time
        /limit/100'
# Events from a specific container in a window
curl 'https://api:KEY@app.personyze.com/rest/events
        /where/container_id=1234&time>1730000000&time<1731000000
        /columns/id,user_id,time,value
        /order_by_desc/time
        /limit/1000'

Cuándo usar events y cuándo summary_actions.La tabla es grande; las consultas deben filtrar por una columna indexada (id, user_id, container_id, …) o la solicitud se rechaza. Para KPI agregados a lo largo del tiempo, use summary_actions en su lugar — tiene contadores diarios precalculados por acción.

forms

Registro de envíos de formularios. Una fila por cada envío de formulario registrado por el tracker. Por ahora, solo lectura por REST.

GET POST PUT DELETE

Columnas

Columna Notas
user_id FK → users.user_id. Indexado.
time Segundos Unix.
action_id Acción de Personyze que activó o contiene este formulario, si la hay.
session_start_time Segundos Unix.
más data (JSON) Los datos enviados del formulario, empaquetados como JSON. Se leen en línea (sus claves aparecen como columnas en la respuesta).

El identificador de cliente data El JSON se expande automáticamente en claves de primer nivel al leer — pida los campos personalizados concretos por su nombre.

Ejemplos

# Submissions for a user
curl 'https://api:KEY@app.personyze.com/rest/forms
        /where/user_id=5712334
        /order_by_desc/time
        /limit/100'
# Submissions tied to a specific action
curl 'https://api:KEY@app.personyze.com/rest/forms
        /where/action_id=42&time>1730000000
        /columns/user_id,time,email,name,message
        /limit/1000'

Las columnas indexadas incluyen user_id, action_id, y time. Las consultas deben filtrar por una de ellas.

do

Distribuidor de comandos sin respuesta: envíe una sola actualización del perfil de usuario o un evento de interacción sin hablar el protocolo del tracker. El cuerpo es un array de comandos; cada uno se procesa por separado.

GET POST PUT DELETE

Forma de la solicitud

[
    [<key-type>, <key-value>, <command>, <arg1>, <arg2>, ...],
    [<key-type>, <key-value>, <command>, <arg1>, <arg2>, ...],
    ...
]
  • <key-type>: "user_id", "internal_id", o "email". Opcional — omítalo en los comandos que no se dirigen a un usuario.
  • <key-value>: el identificador correspondiente.
  • <command>: una cadena (sin distinguir mayúsculas de minúsculas). Consulte la lista de abajo.
  • <arg…>: argumentos posicionales propios de cada comando.

Un POST correcto no devuelve nada; los fallos lanzan un error (todo el lote se interrumpe en el primer error).

Comandos

Perfil de usuario

["internal_id", "acct-987", "User profile", "first_name", "Alice", "custom_t_1", "VIP"]

Después del nombre del comando, los argumentos alternan field, value, field, value, …

Interacciones con productos

["internal_id", "acct-987", "Product viewed",          "SKU-1234"]
["internal_id", "acct-987", "Product added to cart",   "SKU-1234", "quantity", 2]
["internal_id", "acct-987", "Product liked",           "SKU-1234"]
["internal_id", "acct-987", "Product purchased",       "SKU-1234", "quantity", 2, "amount", 259.98]
["internal_id", "acct-987", "Product removed from cart","SKU-1234"]
["internal_id", "acct-987", "Product unliked",         "SKU-1234"]

Después del SKU, pares clave-valor opcionales: "quantity", "amount", "action_id", "transaction_time".

Interacciones con artículos

["email", "alice@example.com", "Article viewed",   "how-to-personalize"]
["email", "alice@example.com", "Article liked",    "how-to-personalize"]
["email", "alice@example.com", "Article commented","how-to-personalize"]
["email", "alice@example.com", "Article unliked", "how-to-personalize"]
["email", "alice@example.com", "Article goal",     "how-to-personalize"]

Ejemplos

# Tag a user as VIP
curl -X POST 'https://api:KEY@app.personyze.com/rest/do' \
     -H 'Content-Type: application/json' \
     -d '[["internal_id","acct-987","User profile","custom_t_1","VIP","first_name","Alice"]]' 
# Log a purchase + a profile update in one round-trip
curl -X POST 'https://api:KEY@app.personyze.com/rest/do' \
     -H 'Content-Type: application/json' \
     -d '[
       ["email","alice@example.com","Product purchased","SKU-1234","quantity",2,"amount",259.98],
       ["email","alice@example.com","User profile","customer_segment","loyal"]
     ]' 

Cuándo usar do y cuándo los endpoints con tipo.Las claves de búsqueda (internal_id / email) crean automáticamente una fila users provisional si ningún usuario coincide. Para registrar interacciones a gran volumen, es preferible products_interactions (con tipo e indexado) o la API de eventos por lotes del SDK.

sessions_archive

Una fila por sesión de visitante (un periodo continuo de actividad). Respaldado por la tabla de archivo de larga duración — mucho más ancha que events, con metadatos de ubicación, dispositivo, pantalla y navegador.

GET POST PUT DELETE

Identificación / gestión

Columna Notas
first_visit_id Clave primaria. El id de la primera fila visit de esta sesión.
user_id FK → users.user_id. Indexado.
session_start_time Segundos Unix.
last_session_time Segundos Unix.
session_counter Qué número de sesión es para este usuario (1, 2, 3, …).
total_visits Páginas vistas en la sesión.
time_in_focus Segundos en que la pestaña estuvo realmente enfocada.
time_total Segundos desde el inicio hasta la última actividad.

Geo / idioma / dispositivo

Columna Notas
time_zone Desfase horario del visitante (horas).
country_code, region_code, city Geo (a partir de la IP). city se une desde la tabla de consulta compartida, así que es un nombre legible (null si no hay coincidencia).
lang_0, lang_1, lang_2 Las tres primeras entradas de Accept-Language.
screen_width, screen_height, screen_depth Píxeles / profundidad de bits.

Contadores de interacción

Columna Notas
total_goal_value, total_n_goals Agregados de objetivos de la sesión.
page_click, page_right_mouse, page_key_up, page_scroll Recuentos por evento.

URL de entrada y referente

Columna Notas
url_prefix, url_host_port, url_path, url_query, url_fragment URL de la primera página de la sesión, dividida en partes. url_prefix es la codificación del esquema + www.
referrer_prefix, referrer_host_port, referrer_path, referrer_query, referrer_fragment La misma forma, para el referente.
referrer_type Etiqueta numérica (búsqueda / social / directo / …).
search_word Consulta de búsqueda cuando se llega desde un buscador.

UTM / campaña publicitaria

ad_campaign, ad_source, ad_medium, ad_term, ad_content — los parámetros UTM estándar tal como se capturan al llegar.

Ejemplos

# Sessions for a user, most recent first
curl 'https://api:KEY@app.personyze.com/rest/sessions_archive
        /where/user_id=5712334
        /columns/first_visit_id,session_start_time,total_visits,country_code,city
        /order_by_desc/session_start_time
        /limit/100'
# Single session by primary key
curl 'https://api:KEY@app.personyze.com/rest/sessions_archive
        /where/first_visit_id=900000000123
        /columns/user_id,session_start_time,total_visits,total_goal_value'

Columnas indexadas: first_visit_id, user_id, además de varias más. Las consultas deben filtrar por una columna indexada o la solicitud se rechaza como recorrido de tabla completa.

user_interests

Intereses, categorías, etiquetas y etiquetas de familia/cruzadas/upsell por usuario, deducidos por el proceso del tracker. Una fila por (user_id, value, class, time). Solo lectura.

GET POST PUT DELETE

Columnas

Columna Notas
user_id FK → users.user_id. Indexado.
value El token de interés (p. ej. nombre de categoría, etiqueta, palabra clave).
class interest, category, tag, family, cross category, upsale category.
rank Decimal. Puntuación de relevancia dentro de la clase.
n_times Cuántas veces se ha observado este valor para el usuario.
time Segundos Unix — cuándo se actualizó el interés por última vez. Indexado.

Columnas indexadas: user_id, time. Las consultas deben filtrar por una columna indexada.

Ejemplos

# All interests for one user, strongest first
curl 'https://api:KEY@app.personyze.com/rest/user_interests
        /where/user_id=5712334
        /columns/value,class,rank,n_times,time
        /order_by_desc/rank
        /limit/100'
# Only categories, recently updated
curl 'https://api:KEY@app.personyze.com/rest/user_interests
        /where/user_id=5712334&class=category
        /order_by_desc/time
        /limit/50'

products_stats_*

Contadores de interacción agregados por producto que mantiene el proceso de resúmenes fuera de línea. Se exponen seis periodos móviles en rutas separadas — elija el que corresponda a su horizonte de informes. Todos comparten la misma forma de columnas e índices; solo cambia el periodo.

GET POST PUT DELETE

Endpoints

Ruta Periodo
/rest/products_stats_1day último día
/rest/products_stats_2day últimos 2 días
/rest/products_stats_4day últimos 4 días
/rest/products_stats_week últimos 7 días
/rest/products_stats_recent reciente (móvil — definido por el proceso)
/rest/products_stats_all todo el historial

Identificación

Columna Notas
internal_id Clave primaria. El identificador externo del producto (el SKU / id del catálogo que usted aportó). Indexado.

Contadores por producto (número de interacciones con este producto dentro del periodo)

Columna Notas
n_viewed Número de eventos de vista. Indexado.
n_delivered Número de recomendaciones entregadas (mostradas). Indexado (compuesto con n_viewed).
n_extra Interacciones «extra» (p. ej. añadir al carrito). Indexado (compuesto con n_viewed).
n_favorite Marcado como favorito / en la lista de deseos. Indexado (compuesto con n_viewed).
n_goal Objetivos completados (compras). Indexado (compuesto con n_viewed).

Estadísticas de distribución de todo el catálogo

El mismo valor en todas las filas — describe todo el catálogo dentro de este periodo. Para cada métrica M ∈ {viewed, delivered, extra, favorite, goal}:

Columna Notas
overall_n_<M> Suma de todos los productos.
overall_avg_<M> Media de todos los productos.
overall_avg_nonzero_<M> Media de los productos que tuvieron al menos un evento.
percentile_<M> El percentil de esta fila para la métrica.

Los 3 últimos usuarios con objetivo (los compradores más recientes de este producto)

Columna Notas
last_goal_user_id_0, last_goal_user_id_1, last_goal_user_id_2 Indexadas individualmente.
last_goal_user_time_0, last_goal_user_time_1, last_goal_user_time_2 Segundos Unix.

Columnas indexadas

internal_id, n_viewed, n_delivered, n_extra, n_favorite, n_goal, last_goal_user_id_0, last_goal_user_id_1, last_goal_user_id_2. Las consultas deben filtrar por (u ordenar con order_by) una de ellas.

Ejemplos

# Top 50 most-viewed products this week
curl 'https://api:KEY@app.personyze.com/rest/products_stats_week
        /where/n_viewed>0
        /columns/internal_id,n_viewed,n_delivered,n_extra,n_goal,percentile_viewed
        /order_by_desc/n_viewed
        /limit/50'
# Lookup one product's lifetime stats
curl 'https://api:KEY@app.personyze.com/rest/products_stats_all
        /where/internal_id=SKU-12345'
# What a specific user purchased recently (matches against last 3 goal users)
curl 'https://api:KEY@app.personyze.com/rest/products_stats_recent
        /where/last_goal_user_id_0=5712334
        /columns/internal_id,n_goal,last_goal_user_time_0'

summary_actions

KPI diarios agregados por acción — una fila por (day, action_id) para las acciones vinculadas a una campaña concreta (condition_id). Solo lectura.

GET POST PUT DELETE

Requisito estricto de indexación.Solo está indexada la columna day . Toda solicitud debe incluir where/day… — no sirve usar solo order_bycomo vía de escape.

Identificación

Columna Notas
day Marca de tiempo Unix (segundos) de las 0:00 (12 AM) del día en Greenwich (GMT+0000).
action_name Nombre de la acción.
action_id ID de la acción.
campaign_name Nombre de la campaña a la que pertenece la acción.
campaign_id ID de la campaña a la que pertenece la acción.

Exposición de la acción

Columna Notas
n_executed Cuántas veces se ejecutó (las acciones se consideran ejecutadas aunque el contenido visual aún no se haya mostrado).
n_delivered Cuántas veces recibimos de la página del navegador la confirmación de que el contenido se hizo visible.
n_extra Depende del tipo de acción. En las acciones HTML: número de clics. En las acciones de formulario: número de envíos.
n_failed Solo se cuenta en las acciones de email. Cuántas veces falló el envío de un email (p. ej. dirección no válida).
n_closed Cuántas veces el usuario hizo clic en el botón «cerrar» después de que el contenido de la acción se hiciera visible.
n_sessions_executed En cuántas sesiones distintas hubo al menos un n_executed para esta acción.
n_sessions_delivered En cuántas sesiones distintas hubo al menos un n_delivered.
n_sessions_extra En cuántas sesiones distintas hubo al menos un n_extra.
n_sessions_failed En cuántas sesiones distintas hubo al menos un n_failed.
n_sessions_closed En cuántas sesiones distintas hubo al menos un n_closed.

Atribución de productos (cuando esta acción recomendó productos)

Columna Notas
products_goal_n_times Cuántos productos (de todos los visitantes) llegaron a «comprado» durante una sesión en la que se ejecutó esta acción. Cuenta cada evento de compra de producto, así que un pedido con 3 artículos suma 3.
products_goal_n_sessions En cuántas sesiones distintas se compró al menos un producto después de ejecutarse esta acción.
products_goal_value Suma de los valores monetarios de todos los productos comprados contados en products_goal_n_times.
products_recom_viewed_n_times Cuántas veces se vio después un producto que esta acción había recomendado.
products_recom_viewed_n_sessions En cuántas sesiones distintas se vio al menos un producto recomendado.
products_recom_extra_n_times Cuántas veces un producto recomendado se añadió después al carrito (o alcanzó de otro modo la interacción «extra»).
products_recom_extra_n_sessions En cuántas sesiones distintas al menos un producto recomendado alcanzó la interacción «extra».
products_recom_extra_value Suma de los valores monetarios de todos los productos recomendados con interacción «extra».
products_recom_goal_n_times Cuántas veces se compró después un producto recomendado.
products_recom_goal_n_sessions En cuántas sesiones distintas se compró al menos un producto recomendado.
products_recom_goal_value Suma de los valores monetarios de todos los productos recomendados comprados.

Atribución de artículos

La misma forma que la atribución de productos, pero para artículos: articles_recom_viewed_n_times, articles_recom_viewed_n_sessions, articles_recom_extra_n_times, articles_recom_extra_n_sessions, articles_recom_extra_value, articles_recom_goal_n_times, articles_recom_goal_n_sessions, articles_recom_goal_value.

Eventos de objetivo personalizados por cuenta

Una cuenta puede configurar hasta 12 eventos de objetivo. Por cada contenedor de evento configurado en su cuenta con un valor distinto de cero en goal_event_index (N de 1 a 12), aparecen cuatro columnas adicionales en la respuesta:

  • goal_event_N_name — Nombre visible del evento de objetivo configurado. Se devuelve como una cadena literal, igual en todas las filas.
  • goal_event_N_n_times — Cuántas veces se activó este evento de objetivo durante una sesión en la que se ejecutó la acción.
  • goal_event_N_n_sessions — En cuántas sesiones distintas se activó este evento de objetivo al menos una vez después de ejecutarse la acción.
  • goal_event_N_value — Suma de los valores monetarios notificados para este evento de objetivo en las veces contadas en goal_event_N_n_times (cero salvo que el contenedor del evento de objetivo esté configurado para capturar un valor).

Ejemplos

# Last 30 days, daily KPIs per action
curl 'https://api:KEY@app.personyze.com/rest/summary_actions
        /where/day>1730000000
        /columns/day,action_name,n_executed,n_delivered,n_extra,products_goal_value
        /order_by_desc/day
        /limit/1000'
# A specific action's lifetime
curl 'https://api:KEY@app.personyze.com/rest/summary_actions
        /where/action_id=42&day>1700000000
        /order_by/day
        /limit/1000'

tracker_code

Devuelve el fragmento de JS que se inserta en su sitio para arrancar el tracker de Personyze. El contenido se deriva de la configuración de su cuenta (ID de cuenta, host de seguimiento, indicadores async/no-hide).

GET POST PUT DELETE

Respuesta

Un fragmento text/html sin más (o JS dentro de<script>) listo para pegar en un <head>. El cuerpo no es JSON — es el único endpoint REST que devuelve HTML sin procesar.

Ejemplo

curl 'https://api:KEY@app.personyze.com/rest/tracker_code'
<script>(function(s){
    s.async = true;
    s.src = '//lcounter.personyze.com/stat-track-lib.js';
    s.onload = function() {
        _S_T.async = true;
        _S_T.setup(5919, "example.com www.example.com");
    };
    (document.querySelector('head') || document.documentElement).appendChild(s);
}(document.createElement('script')))</script>

Convenciones del fragmento del tracker.El fragmento incluye su ID de cuenta y la lista de nombres de host permitidos registrados para esa cuenta. No lo edite a mano; vuelva a obtenerlo cuando añada dominios nuevos desde la GUI. Para los clientes de SDK nativos (iOS / Android), este endpoint no es relevante — el SDK habla directamente el protocolo del tracker mediante endpoints internos.

Próximos pasos

📖 Sintaxis de los parámetros de rutaA fondo: where/columns/order_by/limit con todos los operadores y ejemplos. Leer →
🔑 AutenticaciónGestión de la clave de API, formato de la cabecera, códigos de error, configuraciones con varias cuentas. Leer →
🛠 Recursos para desarrolladoresSDK, repositorios de GitHub y otras herramientas para desarrolladores. Leer →
Did this page answer your question?
Thank you — that goes to whoever maintains this page.