I put on the listing page a floating element on bottom with a ‘claim listing’ button. When the user clicks that, they are then shown the signup flow.
On the data type I use for the business, I have a field called ‘owner’ which is a User type. So when they select the business, I add that user to the ‘owner’ field. You could also do what you thought
But there is no need to do anything else you mention
This is because there is no need to create a User account for each business in the database in advance. Simply create the user when they claim the listing.
In reality, you’ll also need a system in place to verify they actually own the listing. Play like the big boys and send out a snail mail to their business address with a verification code (Google does this for registering a business account on Google). Or you could find an alternative approach, but you definitely don’t want to be having ‘blue tick mark’ issues with people claiming a listing they don’t actually own.
With your approach, is there any custom states setup and privacy settings so that they can only edit their details?
Just wondering how your workflow works for that because all I can envisage so far is a button that signs up the user but not sure how I restrict them to only edit the business details of the business they claim.