Descripción general de la URL seleccionada

La URL seleccionada te permite elegir qué contenido mostrarle a un usuario en función de sus datos de almacenamiento compartido, sin revelar los datos almacenados subyacentes.

En los casos en que desees mostrar contenido basado en datos de varios sitios de una manera que sea positiva para la privacidad, puedes usar la API de Select URL. La API de Select URL funciona bien para casos de uso como los siguientes:

  • Pruebas A/B del contenido para lograr una experiencia del usuario coherente en varios sitios
  • Mostrar un botón de acceso diferente para los usuarios que tienen una cuenta y los que no.
  • Rotar las creatividades publicitarias para limitar la frecuencia con la que un usuario ve el mismo anuncio en varios sitios

¿Qué es la API de Select URL?

La API de Select URL te permite elegir entre un conjunto de URLs según los datos de varios sitios. La API se compila sobre Shared Storage y usa un SharedStorageWorklet para leer los datos disponibles entre sitios y seleccionar una de las URLs proporcionadas. La URL seleccionada se muestra al llamador de una manera que evita que se lea, excepto dentro de un marco cercado. La URL también se puede renderizar en un iframe hasta al menos el 2026.

Diagrama que muestra el iframe de shoes.example incorporado en los sitios de diferentes publicadores, incluidos news.example y blog.example. El sitio shoes.com puede acceder a su propio almacenamiento no particionado desde cada sitio de nivel superior.

En el diagrama anterior, el sitio shoes.example se puede incorporar en otros sitios de publicador, como news.example, y seguir accediendo a los mismos datos con la URL de selección con almacenamiento compartido para elegir el contenido adecuado que se incorporará.

Cómo funciona la función Seleccionar URL

Puedes usar la API de Select URL para seleccionar una URL que se renderizará en un marco protegido o un iframe con datos entre sitios. Usa JavaScript para leer y escribir datos entre sitios en Shared Storage y, luego, selecciona una URL de una lista proporcionada según tus datos almacenados.

Cualquier sitio o origen inscrito puede escribir datos en Shared Storage. Luego, los sitios solo pueden leer esos datos con la API de Select URL.

La URL renderizada puede incluir cualquier tipo de contenido: anuncios, artículos, imágenes, HTML, llamados a la acción (como botones) y mucho más.

En este ejemplo, administras un sitio de viajes y publicas una campaña publicitaria con tres creatividades de anuncios diferentes. Deseas secuenciar estas creatividades en función de las interacciones del usuario (vista o clic).

Tres creatividades de anuncios, que se muestran a los usuarios en función de su interacción anterior
La primera creatividad para un usuario nuevo dice: “Comienza tu próxima aventura”. Con solo una vista y sin clics, la siguiente creatividad que ve el usuario dice "Explora escapadas de fin de semana". Después de ver la creatividad o hacer clic en ella, la tercera creatividad les pide a los usuarios que hagan clic para obtener un descuento en el hotel. Si el usuario hace clic en el primer anuncio, el siguiente que verá es la tercera creatividad.

Cuando un sitio observa por primera vez un espacio de anuncios ganador, puedes almacenar un ID y el estado de clic de esa creatividad en el almacenamiento compartido.

Por ejemplo:

await sharedStorage.set('last-creative', 'globe');
await sharedStorage.set('click', 'true');

Esto significa que, cuando ganes una subasta de anuncios en otros sitios que visite este usuario, podrás mostrar un anuncio diferente en función de esos datos.

Explicación del almacenamiento compartido con tres creatividades de anuncios y la interacción del usuario.

Tu código JavaScript se ejecuta en un SharedStorageWorklet para recuperar esta información, pero no puede interactuar ni comunicarse fuera del iframe o el marco cercado en la página superior.

Como otro ejemplo, puedes probar qué artículo tendría un mejor rendimiento en un contexto incorporado. Para probar esto, puedes asignar un usuario a un grupo de experimentos cuando lo veas en tu sitio y, luego, almacenar ese ID de grupo en el almacenamiento compartido para acceder a él en un contexto de varios sitios. En otro sitio, puedes usar la API de Select URL para elegir la URL más adecuada que se renderizará en un marco cercado, según el grupo de experimentos de ese usuario almacenado con el almacenamiento compartido.

El uso de la URL seleccionada te permite tomar decisiones fundamentadas en función de los datos de varios sitios, sin compartir información del usuario (como el historial del navegador o otros detalles personales) con un sitio de incorporación ni extraer datos a tus propios servidores.

Presupuestos

Para mitigar el riesgo de filtración de datos entre sitios, la API de Select URL usa un sistema de asignación de presupuestos con una combinación de presupuestos a largo y corto plazo:

  • Presupuesto a largo plazo: El presupuesto a largo plazo es de 12 bits por sitio de emisor por día cuando se usa selectURL(). Este presupuesto solo se cobra si el marco que aloja la URL seleccionada realiza una navegación de nivel superior, en la que el costo se calcula como log2(number of URLs). Por lo tanto, si proporcionas 8 URLs para elegir, el costo es de 3 bits. Cualquier presupuesto restante del día se calcula como 12 - (sum of bits deducted in the last 24 hours). Si no queda suficiente presupuesto, se muestra la URL predeterminada (la primera URL de la lista) y se registra 1 bit si se navega a la URL predeterminada.
  • Presupuestos a corto plazo: Los presupuestos a corto plazo son límites adicionales por carga de página hasta que se apliquen por completo los marcos de límite y mientras estén disponibles los informes a nivel del evento. Hay un presupuesto de 6 bits por sitio de llamada, por carga de página que limita la cantidad de información que un solo sitio de llamada puede filtrar con selectURL(). También hay un presupuesto de 12 bits en total por carga de página, que es un límite combinado para todos los sitios de llamada en una página.

    Las consultas guardadas te permiten volver a usar un resultado selectURL() anterior en la misma página, lo que reduce el uso del presupuesto a corto plazo. Cuando se llama a selectURL() con un nombre de consulta guardado por primera vez, el índice resultante se almacena durante el ciclo de vida de la página. Cuando se llame a selectURL() con el mismo nombre de consulta guardado para las llamadas de seguimiento, se mostrará el índice almacenado y no se ejecutará la operación registrada. En este caso, el presupuesto solo se cobra en el primer uso, pero no en los reusos dentro de la misma carga de página, ya que no se revela información nueva.

    Para implementar consultas guardadas, agrega la propiedad savedQuery con el nombre de la consulta que elegiste al objeto de opciones, como se muestra en este ejemplo.

    const topProductUrls = [
      { url: 'https://ad.example/default-top-product.html' },
      { url: 'https://ad.example/experiment-top-product.html' }];
    const relatedProductUrls = [
      { url: 'https://ad.example/default-related-product.html' },
      { url: 'https://ad.example/experiment-related-product.html' }];
    
    // This is the first call to `selectURL()` with `savedQuery: 'control_or_experiment'`
    // on this page, so it will be charged to both per-page budgets.
    const topProductsConfig = await sharedStorage.selectURL(
      'productExperiment', topProductUrls, {
        savedQuery: 'control_or_experiment',
        keepAlive: true,
        resolveToConfig: true
    });
    document.getElementById('topProductsFencedFrame').config = topProductsConfig;
    
    // This next call with this savedQuery won't charge either of the per-page budgets.
    const relatedProductConfig = await sharedStorage.selectURL(
      'productExperiment', relatedProductUrls, {
        savedQuery: 'control_or_experiment',
        resolveToConfig: true
    });
    document.getElementById("relatedProductFencedFrame").config = relatedProductConfig;
    

Casos de uso de la API de URL seleccionados

Si estás compilando un sitio web con funciones que deben funcionar en diferentes dominios, es posible que tengas uno de los siguientes casos de uso:

  • Rotación de creatividades de anuncios: Limita la frecuencia con la que un usuario ve el mismo anuncio en varios sitios. Para ello, almacena datos, como el ID de la creatividad, los recuentos de vistas y la interacción del usuario, para determinar qué creatividades ven los usuarios en diferentes sitios. Esto te permite equilibrar las vistas y evitar la saturación excesiva de cierto contenido para limitar una posible experiencia negativa del usuario. Para obtener más información sobre este caso de uso, consulta Rota las creatividades de anuncios.
  • Seleccionar la creatividad del anuncio por frecuencia: Almacena los recuentos de vistas del navegador en el almacenamiento compartido para limitar la frecuencia con la que un usuario ve el mismo anuncio en varios sitios. Para obtener más información sobre este caso de uso, consulta Cómo seleccionar una creatividad de anuncio por frecuencia.
  • Personaliza la experiencia del usuario para clientes conocidos: Ofrece una experiencia coherente en tus diferentes dominios. Comparte contenido personalizado y llamados a la acción según el estado de registro de un usuario o cualquier otro estado, y ofrece una experiencia coherente en tus diferentes dominios. Para obtener más información sobre este caso de uso, consulta Cómo personalizar la experiencia del usuario para clientes conocidos.
  • Realiza pruebas A/B: En una prueba A/B, se comparan dos o más versiones de una configuración para determinar cuál tiene el mejor rendimiento. Puedes asignar un usuario a un grupo de experimentos y, luego, almacenar ese grupo en el almacenamiento compartido para el acceso entre sitios. Esto te permite recopilar estadísticas sobre el comportamiento de los usuarios en tu red de sitios sin hacer un seguimiento de las personas. Para obtener más información sobre este caso de uso, consulta Cómo ejecutar pruebas A/B.

La API de Select URL con almacenamiento compartido te permite desarrollar estos casos de uso, ya que tienes acceso al mismo almacenamiento en diferentes sitios de nivel superior.

Experimenta con la demostración

Puedes experimentar con la URL de selección con la demo de almacenamiento compartido.

Esta demostración se crea desde la perspectiva de un anunciante, una tecnología publicitaria, un distribuidor de contenido o cualquier otro servicio de terceros que desee almacenar información en diferentes sitios de publicadores. En la demostración, el mismo código de terceros se ejecuta en los sitios del publicador A y del publicador B para cada caso de uso. Visita la página de cada publicador para ver cómo se comparten los datos en un contexto entre sitios.

También puedes revisar el código de la demostración en GitHub.

Estado de la API

La API de Select URL está en disponibilidad general. Para usar la API de Select URL o habilitarla para el desarrollo local, sigue las instrucciones para inscribirte en Privacy Sandbox.

Propuesta Estado
Informes a nivel del evento para la selección de contenido (selectURL()) Disponible hasta, al menos, 2026
Presupuesto por sitio
Explicación
Disponible en M119
Cómo depurar worklets de almacenamiento compartido con DevTools
Sección
Disponible en M120

Interactúa y comparte comentarios

Ten en cuenta que la propuesta de la API de Select URL está en discusión y desarrollo activo, y está sujeta a cambios.

Nos encantaría conocer tu opinión sobre la API de Select URL.

Mantente al tanto

  • Lista de distribución: Suscríbete a nuestra lista de distribución para recibir las actualizaciones y los anuncios más recientes relacionados con las APIs de Select URL y Shared Storage.

¿Necesitas ayuda?