Skip to content

Support Non-Bidder Usersyncers in Cookie Sync #4468

@pkowalski-id5

Description

@pkowalski-id5

Currently, the Prebid Server cookie sync mechanism (CookieSyncService) only supports usersyncers that are registered as bidders through BidderCatalog. Usersyncer functionality is tightly coupled to the bidder concept, even though cookie syncing is conceptually independent of bidding. Non-bidding components (e.g., ID modules like ID5) that want to participate in cookie sync must define fake bidder configurations, pretending to be a bidder solely for cookie sync purposes may have unpredictable side effects during runtime.

Additionally, it would be convenient if modules loaded at runtime could register their usersyncers programmatically.

Current Workaround

To participate in cookie sync, non-bidder components must pretend to be bidders:

adapters:
  id5-sync:  # Not a real bidder, just needs usersync!
    enabled: false
    endpoint: http://fake-endpoint.com
    usersync:
      cookie-family-name: id5
      ...

Proposed Solution

Introduce a separate registry/catalog for usersyncers that is independent of bidders (UseryncersCatalog).
This catalog could be used by UserSyncService instead of BidderCatalog . This could support two types of registration:

1. Configuration-Based Registration

New top-level configuration section for standalone usersyncers:

usersyncers:
  id5:
    enabled: true
    cookie-family-name: id5
    redirect:
      url: https://id5-sync.com/sync/pbs/{{redirect_url}}
      uid-macro: '$UID'

2. Programmatic Registration

Modules can register usersyncers at runtime through registry API:

// Conceptual API
@Autowired
UsersyncersCatalog usersyncersCatalog;

// Create Usersyncer
Usersyncer usersyncer = Usersyncer.of(...);

// Register in catalog
usersyncersCatalog.register("id5", usersyncer);

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status

    Triage

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions