This post describes how you can use:
- Survey123 to capture the information needed to create ArcGIS Online user accounts
- ArcGIS Dashboards to optionally approve those account requests
- ArcGIS Hosted Notebooks and the Python API to automate the creation of approved user accounts
How Does It Work -
You can leverage Survey123 to collect requests from users for an account. Once they complete the form, the data is stored in a feature layer. You can use this feature layer in a Dashboard, where appropriate staff can approve or deny the requests. Then, you can schedule an ArcGIS Notebook to run on a specified interval to create the accounts for approved requests.

Potential Use Cases –
Based on working with organizations in Emergency Management, my colleague and I would highly recommend that you deploy this solution if:
- You’re an administrator creating accounts manually on an ad-hoc basis, and/or during specific scenarios where you have an influx of new users
- You need an organized way to capture more information about potential users requesting accounts
- You’re an administrator who wants to distribute the administrative burden of account creation to non-admins in a safe way
- You are a Hub Premium Community administrator who wants to prevent the public from creating community accounts by removing the community account creation option from the sign-in prompt but you still need an efficient process to provision community accounts.
Step 1: Build and Share your Survey123
Check out this sample survey. If you’re using Survey123 connect, you can use this template xls to create your Survey and Hosted Feature Layer.
Since ArcGIS Online requires certain information to create an account, your survey must capture the following information from users:
- First name
- Last name
- Email address
Then, you could capture additional, useful information about users, such as:
- Phone number
- Job title or Organization
- Zip-code
- Interests
Finally, you’ll need a couple of hidden questions for the ArcGIS Hosted Notebook to leverage during account creation:
- Username – this text field could be calculated in the survey, based on the submitter’s inputs OR populated by your ArcGIS Notebook when the account is created
- Member Created – this text field will default to No, so your ArcGIS Hosted Notebook can determine which requests still need accounts
- Request Status – this field would default to New, so you can track which requests need to be approved in the Approval App described below.
- Notes – this text field will allow you ArcGIS Hosted Notebook to add notes about potential errors
Pro-Tips
- Consider if your survey should support multiple languages. You can add additional languages in Survey123 Connect or in the web designer.
- Make your survey as easy to use as possible! For example:
- Collecting a phone number? Use an input mask
- Collecting a point location? Use an address question (web designer) or the geocode appearance (Survey123 Connect)
- Collecting information based on their location? Use pulldata functions to calculate their zip code, congressional district, and more!
- For all surveys, prepopulate & hide as many fields as possible
Publish & share your survey
Publish your survey to create the form item and hosted feature layer. Before you share the survey and appropriate layer with the public, brush up on best practices for securing data in public surveys! Whether you’re using Survey123 Connect or the Survey123 web designer, you want to ensure that you’re collecting data responsibly.
Step 2: Configure the Approval App (optional)
If you want accounts to be created automatically, skip to step 3. If you want to review and approve individual requests before account creation, follow the steps below!
We usually go with an ArcGIS Dashboard table element so we can update attributes directly. You could use an embedded Survey123 in your ArcGIS Dashboard or use ArcGIS Experience Builder edit widget or survey widget. The objective is simply to create an application that enables certain users to change the status of the request from “New” to “Approved”
Prep your Approval View
Start by creating a view of your access request feature layer so you can enable query and attribute editing. This view could be filtered to show only the requests where Request Status = New or show all requests. The view needs to be editable, and have update enabled.

Configure Form for Editing
Next, add your view to a webmap so you can configure the form for editing. Your form should enable the user to edit the Request Status field. You can use Arcade to calculate the “Approved By” field as the User’s name and Approved Date field to now.

After configuring the form, go to “properties”, expand “information” and click “Save” to save the form configuration to the layer. This step enables us to access the form via the ArcGIS Dashboard, without a webmap.

Build and share your Approval App
Now you are ready to create an ArcGIS Dashboard with a table element. Connect the table element to the Approval View created earlier. Configure the table element to show features, pick the columns you want to see, and toggle on “Allow attribute updating”
Now, users can view the access requests and click the pencil icon to approve. If you want, you can configure additional elements, like an indicator sum of requests.


Don’t forget to share your ArcGIS Dashboard and the Approval View with any users who need to approve requests. This app enables you to share the administrative responsibility of approving accounts without granting actual administrative privileges! Wow!
Step 3: Deploy your ArcGIS Hosted Notebook
To use an ArcGIS Hosted Notebook to create accounts, you’ll need to use an account with the necessary administrative privileges in the ArcGIS Online Organization where the accounts will be created.
Getting Started
Check out this sample and download a copy to deploy in your organization. This notebook is often used to create accounts in an ArcGIS Hub Online Community Organization because the administrator has prevented the public from creating community accounts – If this is the case for you, check out how the sample notebook authenticates into two organizations: gis provides access to our Feature Layer, and hub_gis is where we will create the accounts.
If you are creating accounts in one ArcGIS Online Organization, remove the definition of hub_gis below, and replace all instances of hub_gis with gis.

Establish Initial Variables
Next, you’ll need to establish some initial variables. Replace the user_management_layer <item id> with the item ID of the feature layer containing your account request information. Additionally, if you would like all new accounts placed into one centralized group (such as a Followers group for an initiative), update the followers_group_id <item id> with the appropriate group ID. If you don’t need to add uses to a central group, feel free to comment out that line.

Then, if you configured the Approval App, you will query your account request feature layer for records where the Request Status field equals ‘Approved’ and Member Created equals ‘No’ – so the script will create accounts only for requests that have been approved but not processed.
If you did NOT configure an approval app, change the query below to “member_created = ‘no’” so requests will be processed without manual intervention

Define and Create the User Account
To complete the updates to the script, replace “_mycommunity” with the username identifier of your choice and update the new_usertype and new_role for the user type and role you’d like to assign to your users.

To explain the rest of the notebook: from here, it will check if the user already exists before creating their account, optionally add them to groups, and update the account request feature layer.

Remember: if you are NOT creating accounts in a Hub Premium Community Organization, change all instances of hub_gis to gis.
Save and Schedule
Finally, you can save your changes and schedule a notebook task so this process runs on a recurring basis – we typically see this as a nightly process but pick a time-frame that works for your organization’s needs.
Item Summary
If you’ve made it this far, you should have created the following items
Name | Item Type | Sharing Level |
Access Request Form | Survey123 Form | Public |
Public Submission View | Hosted Feature Layer (View) | Public |
Access Request Layer | Hosted Feature Layer | Not shared |
Approval View | Hosted Feature Layer (View) | Shared with Owner or Group |
Approval App | ArcGIS Dashboard | Shared with Owner or Group |
Account Creator | ArcGIS Hosted Notebook | Not shared |
Closing Thoughts
Hopefully the solution outlined above enables your users to receive accounts more efficiently and frees up some of your time to focus on higher-value GIS tasks!
If you have questions or challenges implementing this workflow, post a comment below. We’d also love to hear about any modifications you make!
As we publish additional related resources, we’ll add links to those here.