This is a complex area with a variety of solutions.
One possible solution is to just focus on your unit of interest: pages.
In general, GrowthBook doesn't care what unit you are working with. You could work with pages, devices, users, etc. all the same, so long as you are firing experiment impressions and bucketing on that ID
AND have metrics set up that are at that ID level.
For example, you could randomize pages by some page ID, and then analyze user behavior on that page that gets tracked at the page ID level. This will require you to create a page ID, fire a tracking callback whenever you randomize the page into one treatment or another, get features using that page ID, and then connecting GrowthBook to your data warehouse with a
page
ID type. You then would need to create metrics that were at this
page
level, whether it was aggregating over user behavior on that page or some other metric, but basically you need to create a metric on that same
page
ID level.
There are some statistical nuances I could get in to here, but if you wanted to randomize at the page level (e.g. load version X or Y for all pages that get loaded), then this is one possible approach.