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);
Currently, the Prebid Server cookie sync mechanism (
CookieSyncService) only supports usersyncers that are registered as bidders throughBidderCatalog.Usersyncerfunctionality 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:
Proposed Solution
Introduce a separate registry/catalog for usersyncers that is independent of bidders (
UseryncersCatalog).This catalog could be used by
UserSyncServiceinstead ofBidderCatalog. This could support two types of registration:1. Configuration-Based Registration
New top-level configuration section for standalone usersyncers:
2. Programmatic Registration
Modules can register usersyncers at runtime through registry API: