Assuming the users are authenticated, you can have a dedicated table for pages with:
And a dedicated pivot table page_user to store visits:
The pages table would be filled upfront.
Now for the pivot table, you should think of how to store visits. If you do it in every controller associated to every route, you would be repeating yourself a lot. So, that's where a middleware can be handy. In the middleware code, you can store visits for each authenticated user.
If you need to keep track of only one visit per user, you need to make sure you don't store a visit twice.
Then, it would be pretty easy to get the visitors for a page, if you have a visitors belongsToMany relationship defined, you can do something like:
$page = App\Page::where('name', 'aRandomPageName')->first();
foreach($page->visitors as $visitor) {
// send the email / notify
}