Survey123 Tricks of the Trade: Web form URL parameters

02-06-2019 08:00 AM
Esri Frequent Contributor
16 61 36.8K

[Updated February 28, 2020]

[Updated April 2, 2020]

[Updated July 13, 2020. Added autoRefresh]

[Updated March1, 2021. Added mode copy]



Many web applications support the notion of URL parameters and Survey123 web forms are no exception. URL parameters allow you to dynamically pass data into your survey. This data can be used to prepopulate questions, hide questions, change the language of a form and many other things with your survey form. In this blog post, I will explore the options available in detail.


Before I start, I want to clarify that in the past we already covered how to use the Custom URL Scheme in the Survey123 field app. The concept of a Custom URL Scheme is similar to URL parameters, but they are two different things: the Custom URL Scheme applies to the Survey123 field app and the URL parameters discussed in this post only apply to web forms. That is, to forms loaded within a web browser, as opposed to loaded into the Survey123 field app in your device.


With that, lets get started:


The Basics


Lets first get familiar with how surveys get loaded into the Survey123 web app. Take the following URL:


The first part of the URL refers to the Survey123 web app: We host the Survey123 web app in our ArcGIS Online servers, and it is used to render your surveys as web forms.  The second part of the URL is the unique identifier of your survey. In this particular case, it is: 1cb28b212b5542acbbdbaa35feba0765. The complete URL will open the Survey123 web app in your web browser and immediately present the survey 1cb28b212b5542acbbdbaa35feba0765, in this case it is an Oak Tree Health survey.


So far, no URL parameters have been used, but now we are going to add one parameter to automatically populate one of the questions. Try the following: Pared...


You will notice that now the Submitted By question is automatically adding the name Fernando Paredes in the survey.  Well, that was a URL parameter!  Note that immediately after the basic URL of the web form, I added a question mark (?). The question mark indicates that what follows are URL parameters. Next, I added the name of the parameter, which in this case is field:submittedBy and a value for that parameter: Fernando Paredes.


You can add multiple parameters by simply separating them with an ampersand (&). For example:


...?field:submittedBy=Fernando Paredes&field:commonName=Oak


Next, lets learn about the different URL parameters you can pass to Survey123 web forms.

Setting values on questions (field:fieldname)


In the previous section you saw how a URL parameter can set a value to a question in your form, but lets take a closer look at how it works. The syntax is simple:




The name of the parameter is made  out of two distinct parts. First, you have the field: suffix and then you have the name of the question where you want to put a value.  Figuring out the name of a question can be tricky. The question name should not be confused with the label of the question. The label is what users see in the form. The question name represents the column in your feature layer  where the response will be stored. 


If you author surveys in Survey123 Connect, I am sure you already know what  I am talking about: The question name is represented by the name column in the survey worksheet of your XLSForm.  If you design your forms in Survey123 web designer, then finding out the exact name of your questions deserves a more detailed explanation.


After adding a question into your survey in web designer, you need to set its label and other properties, but not the name. The name of your question is automatically assigned by Survey123 web designer.  Assigning a valid question name needs to follow very strict rules (the name cannot start with a number, cannot have special characters, or  spaces and must be unique within your entire form) and that is why we put that out of your way in designer. This simplifies  authoring for beginners, although in cases like this it obscures what is really going on.   In any event, you can look at the question names by using the 'Modify Schema' link during the publishing process. 


Modify Schema in Survey123 web designer


The Modify Schema dialog will let you define the exact names of your questions only when you add your questions to the form for the first time. Once you publish your survey, questions that already exist in your survey will appear as read-only in the Modify Schema dialog.   In my case, I really did not want to change anything, I simply wanted to get the names so I could use them with my URL parameters.


Question names are case sensitive. You must pass the exact name. For example, in the oak survey, field:commonName=Oak will work, but field:CommonName=Oak will not work.




Centering geopoint questions (center)


The center parameter lets you set the default location of the geopoint question in your survey.  It looks like this:



This parameter accepts a latitude/longitude coordinate pair where the values are separated by a comma.  Now. there are a couple of important things to remember when using this parameter:


  1. This URL parameter only takes effect if the geopoint question is flagged as required, AND
  2. If authoring from web designer, the option to 'Ask user's location when opening this question' must be disabled'.


If the geopoint question is not required or the user location is used, the values from this URL parameter will be overridden at runtime when the end-user opens the question.


Hiding questions and survey elements (hide)


The hide parameter is handy when you want to control visual aspects of your survey. You can load a survey and hide questions, the navigation bar and more.  This parameter takes as an input more or more values, separated by a comma.


Parameter Value Description

navbarHides the navigation bar. That is, the bar at the top of the survey that includes options to login/logout and to change the language. This is particularly useful when you embed your survey within a website. Example.
headerHides the survey header. The header typically includes the title of the survey or alternatively a banner image. This is particularly useful when you embed your survey within a website. Example.
descriptionThe description element is optionally included if you author your survey in web designer.
footerHides the footer element, which includes the Powered by Survey123 link, or an alternative link if you modified it. Also useful when embedding your survey within a website. Example.
themeUse the theme value to disable any custom theme applied to your survey.  Example.
field:fieldNameThis value is used to hide specific questions within your survey. If you want to hide multiple questions, simply add their names separated by a comma. If you want to hide a question within a group, reference it by its full path: field:groupname/questionname. Example hiding the Submitted by and Survey Date questions.


The hide parameter is very flexible, allowing you to hide multiple elements at once. That is, you can hide the navigation bar, the footer, description and as many questions in the survey as you like.   To hide multiple elements, you simply need to keep adding comma separated values to hide the different components. For example:




Another interesting thing you can do is hide a question and at the same time set its default value through a URL parameter. For example, you can hide the Submitted by question in the Oak survey and also set a value for it through your URL parameter.


Adjusting the width of the survey in the screen (width)


The width parameter sets the width, in pixels, of the survey in the screen. For example:


Automatically reload the survey after a record is submitted (autoRefresh)


Using the autoRefresh parameter your survey will reload immediately after a survey is submitted. This is very useful when people are expected to repeatedly send data from a survey.


Do not forget that the parameter is case sensitive. Works with version 3.10 and above.


Edit existing records and opening surveys in view-only mode (mode)


The mode parameter supports the values edit and view.  Combined with the globalid parameter, you can easily open specific records in edit or view modes. For example, here is how you can update an existing record:


There is a lot you can do with this (mode=edit) alone. Go to for more details.


Similarly, you can also open a survey in view-only mode.



If you get an error like shown below when opening a record in view mode, you will need to adjust the sharing.



When a survey is shared for viewing, the Survey123 web app uses a special feature layer view built so users cannot edit your data. This feature layer view is created only when you share your survey results for viewing. That is done through the Collaborate tab in the Survey123 website, by selecting the Viewer section and then sharing with the appropriate groups (and clicking save... ).



Copying (cloning) existing records


The mode parameter supports a third value: copy.  It is used to load the smart form with information from an existing record and to create a new record when the user submits:



Redirect the Survey123 web app to your own ArcGIS Enterprise (portal)


While the Survey123 web app is hosted in ArcGIS Online, there is no reason why you can't load surveys from your own ArcGIS Enteprise instance.  You do this through the portal URL parameter, which takes as a value the URL of your own ArcGIS Enterprise  Web Adaptor. For example:




The above URL will load into your web browser the survey with identifier acb28b212b5542acbbdbaa35feba0765 as found in the ArcGIS Enterprise instance.


Set the app that will open your survey (open)


You can use the open URL parameter to determine the app to use with survey. Valid values for this parameter include: web, native and menu.




Parameter Value  Description

webOpens your survey in the Survey123 web app, as a web form. This is the default. Example.
nativeWill open your survey in the Survey123 field app. This option will only work if the Survey123 field app is already installed in the device. Example.
menuWill open web page to let the end user decide if the survey should be open in the Survey123 field app or within a web browser. Example.


Set the language of your survey (locale)


You can use the locale parameter to define the language of your survey. For more details on mutiple-language surveys refer to 

The locale parameter accepts ISO language codes. For example: locale=zh-cn  or locale=en.

Below is a clever example where this parameter is used to help end users switch the language of the survey right from within a note in the form.  You can see the different links added. Each of these links uses the locale parameter to reload the form in a different language within the web browser.



New Contributor

Excellent post, Ismael. Very helpful! One thing I'm struggling with that isn't addressed above:

How do I open an individual completed survey via URL?

For example, field personnel are busy completing surveys. I have a dashboard that shows progress and I want to open existing surveys in the Survey 123 web app via a pop-up link from my dashboard. It doesn't appear there is a unique ID assigned to each survey, other than the Global ID. I'm not sure how to form a URL to open an individual survey via it's unique ID.

Any ideas welcome! Thank you.

Esri Esteemed Contributor

Hi Mike,

There isn't currently a URL parameter to specify opening a survey in a viewing mode.  That being said, we are considering adding this to the parameter list in the future.

New Contributor III

Hi Mike, Check this Post, I think it's the solution you're looking for:

Survey123 Tricks of the Trade: Editing records in a web form

Jeffry J.

New Contributor III

Fantastic post, Ismael Chivite‌ -- and I have a related question.

I want to use a URL to open a survey in the web app, but it's a form that uses the Inbox for feature service editing. There is a parameter called objectID mentioned here: 

However, I cannot find an example, or get my link to launch a particular survey instance from the Inbox. It will only open the form in Collect mode, with a blank survey.

My link (with a fake survey itemID): arcgis-survey123://?itemID=12iw1ux9eunueq0iie12393183&field:objectID=459

Please let me know if you have a working example of using URLs with the Inbox functionality.

Esri Esteemed Contributor

Hi Mikaila,

Opening the field app to edit a feature is not yet supported.

New Contributor III

Updating for posterity. We went with the webform, as that's the only option to open an existing record for editing directly. (Without going through the Inbox.)

I found this workflow fit the bill perfectly:

New Contributor II

Hey folks!
This post is very helpful for my project, but I have two questions:

1. I'm trying to hide some questions which are grouped and then the syntax with hide= doesn't work. Is there any option to do this or to hide whole group of questions ?
2. I want to open my survey in edit mode and with hidden questions with hide+ in URL in Survey123 field app on mobile device. Is it possible someway ?

Thank you


Esri Esteemed Contributor

Hi Grzegorz,

1.  For questions in a group, you need to supply the full 'path' to the question; i.e., hide=field:groupname/questionname

2.  The field app does not support editing nor the hiding of questions in the URL parameters.

by Anonymous User
Not applicable

Hey All!

I have been sucessful in opening a survey from Explorer and have experimented with the preset values via the URL scheme. Are you able to push data attributes from a feature to a field in Survey123? For instance, I added a URL link to the pop up of test station asset in my webmap that is viewed in Explorer called "Inspect this Asset". I would like to be able to pull the Asset ID from the Test Station feature selected in Explorer and populate a corresponding field in my Survey 123 Asset Inpsection form.

Any insight on this would be much appreciated!


Tyler Suda

New Contributor II

Thank you James! It helped me lot Otherwise, now I have situation like this...

...which is fine for me, but I'm jus wondering, can I completely hide this groups somehow ?



New Contributor III

Hello all,

Is it possible to pass multiple filed parameters from the map into one field in the survey?

For example: In my map I have a field called "From Location" and a field called "To Location". I would like to pass both into one field in the Survey123 form called "From/To".

So far I have tried something like "field:from_to=({From_Location}&" "&{To_Location})"

Please let me know if this is possible and what my syntax should look like.

Thank you

Esri Esteemed Contributor

Hi Tyler,

It is possible to add field values to the URL that opens the Survey.  use the syntax


as a parameter in the URL

Esri Esteemed Contributor

Hi Vance,

In this context, you would only want the text you want to fill the Survey question.  One small difficulty might be that you are using a space, which may cause problems.  You could try substituting that with a %20 (the URL encoding for a space) or, if this is being used in an online context, use the new UrlEncode Arcade function - Text Functions | ArcGIS for Developers 

Esri Regular Contributor

Hi Mike,

We will have a new URL pattern ?mode=view&objectId= to support reviewing an existing record in the web app, it will be available in the 3.6 release which is planned before October. Hope this helps.



New Contributor III

Is it possible to pass sign in credentials trough a URL?

i would like to see if it is possible to have a QR code log in the user with a pre-defined account so that using the form becomes quicker.


Esri Regular Contributor

Hi David Cook‌,

The web app accepts the paramter ?token= , so you can append a valid token to skip the sign in screen. In this way, you need to take care of the token so it will not be utilized by malicious users.

New Contributor II

Hello James, has there been any progress on this initiative since your last post on March 21, 2019?

I am developing an application that will use S123 for field data collection then a back office process that will have Supervisors review field surveys and approve them using a web app.

The issue i have is we are using select multiple, and when the data is pulled into the web app the coded values are stored won't make sense to the folks approving Surveys. 

The next best option would be launching a web form using the globalid or objectid for a specific survey  where they could review in the web form and mark surveys complete in the back office web app.

Any updates or advice?

New Contributor III

Yes! They added this feature with the Hobbitses release. View mode for web forms.  

New Contributor II


I have tried these parameters inlcuding ?mode=view&objectId=,  ?mode=view&globalid=, along with several others and I get a message that says "Viewing is not possible because the objectId parameter was not provided."

However I am using the field name as it appears in the featuer service rest end, not sure what I am doing wrong here.

Ultimately I would like to use the globalid...

Any thoughts?

New Contributor II

Hi Ismael & James,

I'm using the open URL parameter to determine the app to use with a survey ... used in a webmap popup in Collector.

The customer wants to remove the prompt that pops up “Did you mean to switch apps" and I can't figure out how to do this ... they are using Collector Classic on Windows 10.

In testing I've set up a link for opening the sample survey in this blog post - if I using the url schema format for the  the native app it opens Survey123 without prompting on iOS (new Collector). However not on Windows with Collector Classic ... still prompts. Here's my link:


Not sure if this is a Windows feature vs iOS ... if you can let me know if it's possible or not, I'll pass it on to the customer.

I've noticed the url parameter for the web form as documented in the post does not prompt if the user is already signed into ArcGIS on either iOS or Windows.

Thank you, appreciate your feedback!


Esri Esteemed Contributor

Hi Susan,

I believe what you're describing is an OS feature - you can see a similar dialog when opening a Zoom or MS Teams meeting via URL.

New Contributor II

Thanks James for the feedback, I figured as much. Sue

Esri Regular Contributor


Thank you for the feedback. Please be advised that there will be a change in the coming 3.9 release where objectId URL parameter is going to be replaced by globalId, see  for details.

New Contributor II

Hi James. 

I'm doing some research for some line attribute but can't find the solution. Basically here is the worflow:

From collector app, select one of the lines (see 1st screenshot). In the pop out window there is a link that will open a survey in S123. Once the app is open there are attributes passed from Collector but doesn't fill out the "Polyline" (see 2nd screenshot). It's supported to do something like passing the line attribute from Collector to the "Polyline" in S123? 

collectorSurvey123 for


Esri Esteemed Contributor

Hi Cesar,

Passing a line or polygon is somewhat complicated.  The basic syntax is the same for other fields (the
field:<FIELDNAME>=<VALUE> syntax), but Survey123 expects the line to come in as a sequence of <lat> <lon> values separated by a semi-colon:

<lat1> <lon1>;<lat2> <lon2>;<lat3> <lon3>;...

This can be generated by an Arcade expression when the basemap of the web map is in WGS1984 (SRID 4326) 

New Contributor II

Oh ok... so it is possible, but not for me!

I don't have any experience with arcade, so I guess need to figure it out a workaround.


Regular Contributor

I doubt this, but is it possible to just completely submit the survey through a URL? You can already popuate pretty much every field. For example, could I just do something like:

That would be pretty cool because then, with just a very small amount of HTML and the tiniest amount of Javascript, you could leverage Survey123 as a form handler for a completely custom HTML form.

New Contributor II

I'm having an issue with Survey123 edit mode in Operation Dashboard.  When I select a record from my list it opens the survey and populates all the fields except a select few.  Not really sure what I'm doing wrong.

New Contributor III

Could you share your url and the field types of the record being passed and the form field?

I vave seen that this can be due to syntax of the url. The preceding info will work I to the syntax error.

David A. Cook III


Fuss & O'Neill

Office: 860-646-2469;5397

Mobile: 860-912-4819

Sent via mobile device

New Contributor III

Thanks very much for creating this blog post Ismael Chivite‌.  I've used the info in this post to help me create a simple Jupyter Notebook that contains a procedure and python code for automatically converting Survey123 Dropdown field choices into individual scannable QR Codes. Might be useful for those that are wanting to build a solution to track people entering and exiting buildings. The notebook has been created and tested using the new ArcGIS Notebooks public beta for ArcGIS Online.  Github repository here if anyone is interested.

New Contributor II

How do you generate the token when configuring the URL? 

Occasional Contributor II

I open the survey hiding the navbar but it returns and stays if I try to advance beyond a required question without answering it.

Occasional Contributor II

I have the following url that parses the coordinates of a selected polygon to a geoshape question.  It works well in the Survey123 app but not to the webform. The geoshape coordinates don't seem to be written{dcdbid}&amp;field:ct={title_t}&amp;field:volume={volume}&amp;field:folio={folio}&amp;field:LandholderLiaisonParcels_polygon={expression/expr2}

Here is the Acracde expression

var geom = Geometry($feature);
var firstpart = geom.rings[0];
var originShift = 2.0 * PI * 6378137.0 / 2.0;

var outparts = [];
var counter = 0;
for (var pt in firstpart){
var long = (firstpart[pt].x / originShift) * 180.0;
var lat = (firstpart[pt].y / originShift) * 180.0;
lat = 180.0 / PI * (2.0 * Atan( Exp( lat * PI / 180.0)) - PI / 2.0);

var lat =Round(lat, 5)
var long =Round(long, 5)
var ptstr = Concatenate(lat, " ", long);
outparts[counter]= ptstr;
counter = counter + 1;
return Concatenate(outparts, ";")

Am I missing something?

Esri Contributor

Hi Keith,

This is an issue of the web app, thanks for catching it. I will log an issue for this.

If you think this is a critical issue for you, I encourage you to contact Esri Support. Our Support team will assign an official bug number for your records. This number can be used to search for and subscribe to the bug on the Esri Support site. If the issue is reported by other customers it will be attached to the same bug report, which helps us assess the impact of the issue and prioritize it accordingly.



Esri Contributor

Hi Chris,

Passing Geoshape value through URL param is not supported by the web app right now. This feature will be supported in the next few releases.



Esri Contributor

Hi John,

This is not supported by Survey123. If you don't mind could you please share your use case with us? What is the reason that you don't want to use the web app or field app to submit the data?



New Contributor II

I am having difficulty with the globalid parameter in my submission URL.

I have culverts with a related table for inspection data. I have created attachments on that related table for photos. I have put the url to a survey123 web form in the culvert popup. The web form it brings up contains the related table fields to be filled out (it's an inspection). Within the related table (repeat) I have created the ability to take multiple photos using a ${Choice1} = 'Y' type of function in the relevant field in the XLS.

So it takes me to the web form successfully, and everything even works fine unless I attempt to submit more than one photo, in which case I get this error: Failed to submit. - Invalid parent globalId.

This is what my URL scheme looks like:

Has anyone run into this? Are multiple photos not supported in a web form right now?

Thanks so much.

Edit: I have found a similar issue & possible solution at this link, but am not entirely sure how to interpret some of these instructions. Can anyone provide assistance? James Tedrick‌ in this article you said, "Yes the fields can be hidden.  I will note that the workaround of having 2 different fields to normalize is no longer needed.  Make sure the hidden parentglobalid question has an esrifieldtype of esriFieldTypeGUID." Does this mean I need to create an additional text field in my related table & calc the globalID from the parent feature into it?

Esri Esteemed Contributor

Hi Justin,

You may want to open an Esri Support ticket - based on your description, I:

1) created a sample form with an image question in a repeat

2) recorded a submission

3) configured a web map pop-up to open the submission via URL in edit mode

4) added 2 images successfully

A couple of things to note:

- The conversation you linked to regarding passing globalIDs is specific to the field app and is outdated

- I see you are using ArcGIS Enterprise.  Which version? Is the feature service a hosted feature service or ties to an enterprise geodatabase (if the latter, what DBMS)?

New Contributor II

Thanks so much for the response, James!

I've actually spent the last few days on and off with Support. They haven't found a solution just yet but I know it's probably just some small thing. I didn't want to use images in an additional repeat table - as I really would prefer them to be attachments. So I'm using multiple questions.

Ohhh that conversation was only pertaining to the field app? That's my mistake then. However I'm still not entirely certain that my submission URL is correct:

We are using Enterprise 10.7.1. I published the parent feature class (from a SQL Server enterprise gdb) & the related table together in a service, and built the survey off of that service, although I have now removed all the information pertaining to the parent feature class so it's just questions pertaining to the related table.

I've been trying different things all day, and now, actually, the message I'm getting when the web form opens is "Editing is not possible because the globalId parameter was not provided".

I feel like I'm missing something obvious.

Edit: Did some additional experimentation & tests and am back to the "Failed to submit. Operation rolled back. Invalid parent globalId." message. Ismael ChivitePhilip Wilson Anyone have any clue? Thank you!!

Esri Contributor


I am trying to insert a pair of coordinates to center a geopoint question. In the blog, the coordinate pair appears in lat lon -format. I have created an Arcade to bring up coordinates from existing geopoints by using a sentence as follows

concatenate(['', Round(Ge...

URL appears as,8697922.32...

The coordinates appear in WebMercator format and do not work as parameters. Survey centers in a wrong place.

latitude: 89.99999&;Longitude: -37.67738

I tried to add WKID as advised for Web map url parameters (Use URL parameters to modify maps—ArcGIS Online Help | Documentation).

concatenate(['', Round(Ge...

URL appears as,8697922.32...

That does not work either as Survey123 interprets the WKID as elevation and centers in a wrong place.

latitude: 89.99999;Longitude: -37.67738 elevation (m): 4326.00000

Should I make a coordinate conversion to WGS84 or use WKID definition in another way?

Ideally I'd like to include level as well, otherwise the map centers on the coordinate but does not zoom. The Survey thus shows the entire planet with my coordinates centered. 

Esri Contributor

Hi Chris,

The Geoshape value is now supported in the web app URL field:fieldname=. Please see the note in the Parameters for web app section in this documentation: Integrate with other apps—ArcGIS Survey123 | Documentation



Esri Contributor

Hi Jussi,

Survey123 web app currently does not support projected coordinates in the URL, so the (x,y,WKID) method mentioned in the ArcGIS Online Doc does not work for the web app. For the current web app version, we only support the geographic coordinates in the URL, and it can take(x,y) for the 2D point or (x,y,z) for the 3D point, that is why in your example the 4326 becomes elevation.



Occasional Contributor II

Is it possible to have the ULR parameters reflected in the QR code in the web version of Survey123? I would like a member of the public to access a survey that I created with some of the attribute fields pre-populated.


Esri Frequent Contributor

It is not possible to have the Survey123 website create a custom QR code, but you can with third party tools such as QR Code Generator 

New Contributor III
I'm trying to use the code Chris posted to pass a polygon to a geoshape field, but when I click the link it just flashes, doesn't open the survey or anything. I can see the coordinates in the URL when I hover, but it just won't do anything. What am I missing please?
New Contributor III
To further elaborate it does work, but only for polys under a certain area, looks like about 250 acres. It doesn't seem to matter about number of vertices, curiously. Has anyone else experienced this with large polys? Thanks, cob
New Contributor

Ismael, could you please explain how to edit existing records in a survey within Experience Builder? I saw your UC2020 presentation but I am not able to recreate it.

If I use the "Send data to survey" option in Experience Builder, it simply populates the fields. If I hit "Submit" it just creates another feature.

Occasional Contributor

Hey all,

Just to be clear, does opening a feature from Collector through to Survey123 mobile iOS application in editing mode not work?

Below are the URL parameters I am using but Survey123 opens up to an empty inbox:

var url_scheme = ""; // open feature layer

var url = url_scheme + "&q:globalid%3Dglobalid&action=edit&folder=inbox"; // supposed to open existing feature up in survey123

var url = url + "&center=" + lat + "," + lon; // sends through the coords

var url = url + "&callback="; // send user back to Collector

Esri Contributor

Hi Keith


The issue related to the hidden navbar appears when the error msg appears has already been fixed. Could you please help us verify the fix if it is possible? Please feel free to leave comments if the issue still exists.



Regular Contributor

Is there a way to duplicate a record?

Is there was a way to use the &mode=edit parameters to pull the information in about an existing record yet create a new one (duplicate it)?