Skip navigation
All Places > ArcGIS Survey123 > Blog > 2016 > November

In this blog post I will describe how you can handle elevation values (Zs) in Survey123 for ArcGIS.  Typically, geopoint questions in your survey will always work in 2D. That is, only latitude and longitude will be stored.  While not obvious, it is actually fairly easy to configure your surveys to work with 3D geopoints.


Enabling Z-enabled feature services for your survey


Every survey you publish to ArcGIS is made out of two items: a Form and a Feature service item. The Form defines the questions in your survey, as well as the validation logic, look and feel etc. The Feature service is where all the answers to your questions go.  By default, when you publish your survey, a 2D Feature service is created, not allowing the storage of Z values.  To ensure your Feature service is Z-enabled you must explicitly flag your geopoint question as esriFieldTypePointZ in the bind::esri:fieldType column of your XLSForm. This will look something like this:


geopointLocationAsset LocationesriFieldTypePointZ
textAssetIDAsset ID
dateLastInspLast Inspected On


The bind::esri:fieldType column is used when you want to have full control over the Esri field types to be used in the geodatabase. Survey123 will do its best mapping XLSForm question types into Esri field types, but sometimes, like in this case, you may want to tweak things a bit. The Mapping XLSForm questions into ArcGIS Feature Service fields blog post describes in more detail other  reasons why you may want to use the bind::esri:fieldType column.


Once your esri:fieldType is set as above, a 3D Feature service will be created on your behalf. Not totally obvious, but easy once you know the trick. Isn't?


Capturing Z values in the Survey123 app


Capturing Z values in the Survey123 app is also pretty straight-forward but it is important to  understand a couple of things.  First of all, most consumer smartphones and tablets will provide a location including an elevation value, which Survey123 will automatically use. Like with any consumer device with an integrated GNSS receiver, the accuracy of the location coordinates -including the elevation- is not expected to give you a level of accuracy beyond a few meters at best. Properly using an external GNSS receiver along with your device will in most cases improve the location values passed into Survey123 for ArcGIS and provide more consistency to the measurements.  In the event that the device does not provide elevation values, Survey123 will automatically set the Z value to zero (0).


Photo courtesy of Leica Geosistems


Using an external GNSS receiver in combination with Survey123 will greatly improve  the accuracy of elevation values captured. In this photo, Survey123 is being used with a high precision GNSS receiver from Leica Geosystems.


The elevation values, as described above, are  typically provided by your own device. However, if the field user modifies the provided location by tapping on the geopoint map widget and setting a new location manually, the Z values from your device will be cleared allowing the field user to set the elevation value manually.   If no manual Z is set, again Survey123 will reset to the value to zero (0).



Managing Z values


Elevation values are always kept in the Z coordinate of the points you capture. In Esri jargon, you will be working with a 3D point feature, which tools like ArcGIS Pro, ArcGIS Earth and Web AppBuilder understand.  In 3D features, the elevation values are kept in binary format within the geometry field of your feature service. Now, very often you will also want to store the Z value as an attribute of the feature. Having a column in your feature for your elevation values allows you to more easily access Zs in non Esri tools. For example, you can export  your survey data to a CSV table and get the Z values shown in a column. Having elevation values as numeric values in an attribute is also useful within ArcGIS in cases where you want to perform QA/QC workflows or want to query and visualize these values.


To extract the Z value into an attribute of your feature, you will want to create a new question in your survey and populate it with an expression in the calculation column. The next table describes an example of how to do this:


hiddenLatitudeLatitudepulldata("@geopoint", ${location}, "y")esriFieldTypeDouble
hiddenLongitudeLongitudepulldata("@geopoint", ${location}, "x")esriFieldTypeDouble
hiddenElevationElevationpulldata("@geopoint", ${location}, "z")esriFieldTypeDouble


To learn more about the pulldata function, you can read this blog post: Pulling data from geopoint questions  Note that the pulldata function can be used to simply extract the Z value into a specific column that you define, but you can also use it to perform data validation right from the Survey123 app.  You may for example write an expression to warn the field user if a particular crop is reported at an elevation where we know that it does not grow naturally.

The infinite monkey theorem states that a monkey hitting keys at random on a typewriter keyboard for an infinite amount of time will almost surely type a given text, such as the complete works of William Shakespeare.


You don't have an infinite amount of time to write your survey and hopefully your keystrokes will be less random than that of a monkey, so the time it will take you should be significantly less than infinity.


We have provided many resources to help you write your survey: blogs, samples, templates and documentation. Identifying which of these suits which users is as a challenge. Saying something is easy or difficult, alienates as many people as it helps.


Borrowing from (and bending) the infinite monkey theorem, we have chosen a classification scale to describe our content. If the goal is a survey (rather than the complete works of Shakespeare), and you have a computer and some sustenance - in this case bananas - you can build your survey. The question is how many bananas?


Every monkey needs to eat, and depending on how difficult / complex / time consuming a task is, more sustenance is required. Here is our banana rating for our Survey123 resources:


  •   One banana means you want to create a survey by clicking a few buttons and drag and dropping things in a window. The web is all you want to use, and your survey doesn't need calculations or complex relationships between questions.
  •   Two bananas means that you’re comfortable using Survey123 Connect, and making a more involved survey. You’re ready to implement more complex questions, some visual customization, and even include some simple relevant expressions and calculations. Your survey is still possible on paper, but in Survey123 it’s sharper and easier to use.
  •   Three bananas means that you’re creating surveys too complex for a paper form (or possible, but incredibly tedious). You might be implementing longer and more complex formulas, using hidden questions and values, and calculations referring to multiple answers that would otherwise have to be done manually.
  •   Four bananas means that you’re pushing the limits of what Survey123 is capable of right now. You’re implementing complex surveys, studying what the XLSForm standard is capable of, and speculating about features that Survey123 doesn’t yet support


Right now you can see the banana rating in the Samples that are available in Survey123 Connect.

Samples in Connect show a banana rating


New blogs will also use the banana rating to help convey the difficulty, complexity and time to digest for the content.

Public surveys are ideal for crowd-sourcing and citizen-science initiatives because an ArcGIS account is not needed to use the survey. Anyone can submit data. Public surveys are also handy when you need to gather information from the public, measure opinions about initiatives, provide the means to report issues, etc.


In the following example, you can see how Frederick County, in Maryland, provided a public survey for citizens and businesses to report property damage and loss after a flash flooding event in May 2018.  Public surveys like this can be put together very quickly and help you gather information right away.




A public survey can be embedded in a website as you can see, but can also be setup for people to use in the Survey123 field app. This is ideal in situations where participants will contribute to your survey again and again, or while disconnected from the network.  A good scenario may involve a public survey so a group of volunteers can repeatedly report environmental issues found.  The Arizona Department of Environmental Quality (ADEQ) chose to make a survey public and encouraged volunteers to download it into the Survey123 app.



The New York Department of Environmental Quality offers a logbook so anglers can report stripped bass catches to help protect the fishery.  The logbook was made with a Survey123 made public, which gets downloaded into the Survey123 app.   This is part of the Stripped Bass Cooperative Anglers Program.



In the City of Sharon, Pennsylvania, an army of volunteers mapped thousands of houses using a public survey.



How to make a survey public?


Making a survey public is straight-forward. First go into the web site and select your survey from the gallery.  Open the Collaborate tab and share the survey with everyone.


If the option to share with everyone is not shown, then either permissions to share with Everyone have been revoked from your ArcGIS account, or sharing with Everyone has been disabled in your ArcGIS organization all together. Ask your ArcGIS administrator for details.


Sharing your survey with everyone is just a first step. If nobody knows about your survey, nobody will contribute data to it. Keep reading to understand how people can open your public survey.


How to promote and open a public survey?


From the Collaborate tab, you can easily obtain URLs to open your public survey.



You can use the survey URL to create HTML links in your own web site, or include them in e-mails, blogs etc.  Note that you can obtain URLs that will open your survey in a web browser, or alternatively URLs that will automatically open your survey within the field app.


Your survey in a web browser: The use of the URLs to open the survey in a web browser is particularly straight-forward: you can embed the link pretty much anywhere, including a tweet, your facebook page... and contributors will not need anything but a web browser to submit data: It will work in desktops, tablets and even smartphones. 


The link to open the survey in the Survey123 field app deserves a more detailed explanation.


Your survey in the Survey123 field app: First of all, for the Survey123 field app link to work, you want people install first the Survey123 app. In the next screenshot for example you can see how we encourage people though an invitation email to download and install the app first.  You will also observe that the URLs provided from the Collaborate tab have been embedded in the e-mail as HTML links.



If you decide to promote your public survey through a web site, you can follow a similar approach: Tell people to download the app first, and then load the survey. Here is an example from the County of San Bernardino, in California.


You can also get creative and describe the process through a video, like shown below.



It is also important to remember that public surveys can only be open in the Survey123 field app by using the provided link. It is not possible to download public surveys from the Download Gallery. We did this on purpose, because we do not want people to get distracted with random public surveys in the gallery.


How to secure data  in a public survey?


By definition, a public survey is accessible to anyone who wants to submit data to it, but that does not mean that anyone should be able to look at the data itself. If your public Survey123 form contains sensitive information, you should configure your survey to prevent users in the public domain from downloading, querying or changing already submitted data.


If you published your public survey using Survey123 designer check the Securing data in public surveys (Survey123 web designer) blog post. If your survey was created in Survey123 Connect, check Securing data in public surveys (Survey123 Connect) .



How to track contributions to your public survey?


In most crowd-sourcing projects and certainly in citizen-science initiatives, it is important to track who is contributing what. It is important for a couple of reasons: First, to help out curate the data. Second, to recognize the work of the best contributors so they can be recognized and rewarded.    In a typical Survey123 survey, you will always know exactly who is contributing data, when and what data is contributed by whom... as long as they use ArcGIS accounts. In a public survey, however, you are granting permission to anyone to contribute so all of those submitting data without an ArcGIS account will be counted as one: as the general public.


It is always possible to include a question in your survey where contributors can provide their identity. The new e-mail question type included with Survey123's Web Designer is perfect for that.


You can track the activity of your survey' contributions by using the Survey123 website. The Overview tab will give you key stats:


The Survey123 website lets you quickly understand when data is contributed and by who


The screenshot above illustrates one of the several ways in which the Survey123 website will help you  understand contributed data. The line chart shows the number of surveys submitted over time.


Below a view of the Analyze tab, which summarizes every question added to your survey.  There are multiple options to control how the information will be visually represented (as a bar, pie or column chart as well as maps) as well as filters to display the specific questions and time windows to be summarized.



From the Survey123 website you can also download the data of your survey in CSV, Shapefile and FileGeodatabase formats.

I got the data I needed. And now what?


First of all, you may want to stop accepting data from contributors. Unsharing your survey from the Collaborate  tab is a definitive way to stop incoming contributions while preserving your data for further visualization and analysis.


The Survey123 website gives you several options to understand contributed data, but at some point may want to also share the results of your work. I personally like the use of Story Maps, Web AppBuilder and the Configurable Application Templates included with ArcGIS.  All submitted data to a survey is kept in a feature layer, which you can use from any of this apps.


This quick video can give  you some ideas to get started. One of my favorites to make  the results of your survey shine is Story Maps



We hope you enjoy public surveys.  Go play!

Around 11:30 A.M. on November 7, 1492, a young boy saw a large stone plummet from the sky and land in a wheat field near the town of Ensisheim in Alsace, France. This fall is the earliest one witnessed in the Western world from which meteorite samples have been preserved.

Our Survey123 for ArcGIS 1.9 release celebrates the luck of this boy, who was fortunate enough to see the meteorite close… but not too close.

As usual, to experience the best out of the newest release you will want to keep your Survey123 components up to date:


  • The build number of Survey123 Connect for ArcGIS is now 1.9.24 and can be downloaded on Windows, Mac and Ubuntu Linux.
  • The latest Survey123 field app is now available in the app stores (Google Play, iTunes, Windows and Amazon) and its build number is 1.9.24 as well.
  • The Survey123 website is all up to date for you, but you will need to clear your browser cache before you can see all the goodies!.


Public Surveys:

Many of you have been awaiting this one for a long time, so we are particularly proud of announcing that as of Survey123 1.9 you can now share your surveys publicly!  This means people can submit data to your surveys without having to login with an ArcGIS account. This is ideal for crowd-sourcing and citizen science projects where you work with non-sensitive data and where understanding who is submitting what, is not critical.


This is our first cut at Public Surveys. We know we need to add some refinements, but we did not want to hold anything for you and get your feedback early. To learn about Public Surveys in more detail you can have a look at this blog post: Getting Started with Public Surveys 


Enhancements to the Survey123 website:

The Survey123 website can be accessed via Through the website, you can create your own surveys, manage who can access them and analyze contributions.  There are three key enhancements in this release of the Survey123 website:


  • You can now share your surveys publicly (as described above)
  • Added support for e-mail type of questions.
  • Analyze and Data tabs now include a date range filter to more easily create reports and understand submitted data. This filter option is quite handy if you want to better understand data captured. Your date filters will also be honored  when you export your survey results in pdf format.
  • Easier sharing of surveys using direct links and QR codes


If you cannot see the above changes in the website make sure you clear your browser cache.


Survey123 field app, Support for Enterprise Logins:

This is the first release of the Survey123 field app that works against ArcGIS organizations setup with Enterprise logins. Support is limited to authentication via SAML providers. Windows Integrated Authentication and PKI authentication are not supported.


If you want to use Windows Active Directory credentials to login into Survey123, you will need to configure your ArcGIS Online or Portal for ArcGIS to use Enterprise Logins through an ADFS SAML as described in this topic.

Survey123 field app, better support for Leica and Juniper Android devices:

The Survey123 for ArcGIS field app now runs on Leica Zeno 20 and Juniper Cedar CT7 and CT4 devices. This is great news for organizations who want to use Survey123 with high-end rugged field devices. Previous versions of Survey123 could not run on Zeno 20 and CT's due to specific limitations in the Android 4.1 operating system installed on these devices.

To make it easier for users of these devices to download Survey123, we also have published the Survey123 app into the Amazon app store.

Survey123 field app, enhancements:

Now supports three new appearances: spinner, numbers and calculator. More about these in an upcoming blog post.

Other fixes and enhancements.


 BUG-000100131    When a cascading select question is set as repeating in a Survey123 for ArcGIS survey, navigating between multiple data points within the question deletes the information from previously answered questions
 ENH-000099729    Optional fields that contain response constraints that are left blank restrict users from submitting survey responses in Survey123.
 BUG-000099277    In Survey123 for ArcGIS, using the uuid() operator with repeats in a calculation only populates on the first record collected within the repeat.
 BUG-000098967    Survey123 Android and iOS - wrong position of the arrow_HE
 BUG-000098966    Survey123 for ArcGIS app page is LTR on iOS and Android_HE platforms.
 BUG-000098833    In Survey123 for ArcGIS v1.7, answers to cascading selects are removed when a survey is saved as a draft and then reopened.
 BUG-000098492    Default date and time values do not auto-populate when using repeats in Survey123 for ArcGIS.
 BUG-000098360    When downloading data from a Survery123 survey that was made using Survey123 for ArcGIS Hub, the field names are converted to {field_1}, {field_2}, ... instead of honoring the name in the data table.
 BUG-000098205    The Survey123 for ArcGIS app fails to launch on Leica Zeno 20 running the Android 4.2.2 operating system.
 BUG-000097678    Enterprise logins do not work for iOS and Android devices in the Survey123 for ArcGIS app.
 ENH-000097137    Documentation for Survey123 for ArcGIS Supported Operating systems is unclear as to what is considered a supported configuration
 BUG-000096040    MOR_LOC_LT: Truncated string in Settings-Map in Survey123 Connect
 BUG-000095634    MOR_I18N: Untranslated Settings tabs in Survey123 for ArcGIS Connect
 BUG-000095604    MOR_I18N: Untranslated buttons "Cancel" and "Choose" when browse for Library Folder
 BUG-000094990    MOR_I18N: Untranslated buttons "Cancel" and "Choose" when browse for Library Folder in Survey123 for ArcGIS app.
 BUG-000094965    MOR_I18N: Untranslated string "Map Library Folder" in Settings
 ENH-000093961    Enable auto populating for repeat questions based on the initial entry in Survey123 for ArcGIS app.
 ENH-000092045    Add Survey123 for ArcGIS (Android) app to Amazon Marketplace.
 ENH-000099729    Constraints are being evaluated against empty fields.



What is coming next?


We are now working towards our 1.10 release, which we plan to make available before the end of the year.  In this upcoming release our main goal is to:


  • Overhaul our support for submission_url, which at the moment is quite limited. This work in 1.10 is for all of you who want to configure Survey123 smart forms on top of existing ArcGIS feature services.
  • Expand the Collaborate tab in the survey123 web site so you can let specific groups of people look at the Analyze and Data tabs.


We have also started work to address a few other big items which will be made available in early 2017:


  • Support for editing workflows
  • Streamlined setup for ArcGIS Enterprise users (setup for on-premises deployments including the survey123 web site)
  • Complete localization of the help and survey123 web site


We all hope you enjoy this release. As usual, please keep reporting any issues and successes through the Survey123 GeoNet Group or Esri Technical Support. We take your feedback very seriously.

[Last Updated February 23, 2019]


In a previous post, we explored how expressions in the calculation column of your XLSForm could be used to programmatically set values on a geopoint question. In this occasion, we will do the opposite. That is, we will describe how you can extract data out of a geopoint. Here are some good reasons why you may want to do this:


  • Store geopoint properties as attributes: Often times, keeping the X/Y coordinates of a point encoded in a geometry field is not ideal.  By pulling data out of a geopoint question you can store the X/Y coordinates in specific fields. You can also extract and store other values from your geopoint properties such as the elevation, speed or horizontal accuracy if present. Having all these values as attributes can help during QA/QC as well as data exchange processes.  Storing metadata about your locations is particularly important if you are  using an external GNSS receiver with Survey123, because all that metadata is critical to understand the quality of your data.
  • Build data validation rules: You can use geopoint properties in your form to create data validation rules in your form. For example, you can create a rule to warn users if a particular horizontal accuracy has not been reached, or if the location has been captured while the field user was traveling at an excessive speed.


What a geopoint is made of?


We all know that geopoint questions store location information, but what is really inside a geopoint value? At a minimum, unless a geopoint question is empty, you will always find the latitude and longitude of a location. Survey123 never works with projected coordinates: geopoint values are always in geographic coordinates using WGS84.  Now, you could potentially find much more than just a latitude/longitude pair within a geopoint value. The most common properties include:



Property NameDescriptionUnits
xLongitude, positive in eastern hemisphere, negative in western hemisphere

Decimal degrees


Latitude, positive in northern hemisphere, negative in southern hemisphere

Decimal degrees


Altitude, meters above sea level



Horizontal accuracy of the x and y coordinates


Vertical accuracy of the z coordinate

speedGround speed

Meters per second

verticalSpeedVertical speed

Meters per second


Direction of travel measured clockwise from north

Decimal degrees


Angle between magnetic and true north

Decimal degrees


Returns the category of the position source.  Unknown (0), User (1), System Location (2), External Device (3), and Network Device (4).



Returns the type of position fix the coordinate has. Potential results are NoFix (0), GPS (1), DifferentialGPS (2), PrecisePositioningService (3), RTKFixed (4), RTKFloat (5), Estimated (6), Manual (7), Simulator (8), and SBAS (9).


If a geopoint question contains all the properties above or a subset, depends on the following:


  • If the location is set by the end user by manually tapping on the map, then only the x an y properties will be populated. It is possible to also let the user type the elevation, which ultimately would populate the z property. 
  • If the location is set by the device, the number of properties with data will depend on the device and also on how that location was obtained.  The accuracy of the values found in each property is as well completely dependent on the device providing the location information to Survey123.


If relying on consumer devices to retrieve the location properties above, you should take values with a grain of salt. Your average iPad or Android smartphone could often give you a reasonable x,y and horizontal accuracy but everything else could or could not be trustworthy. In fact, many consumer devices do not even populate most of the properties above. I do not want to say consumer devices will give you useless geopoint  properties, but you should proceed with caution understanding through trial and error what devices and in what conditions will give you accurate information. 


By connecting Survey123 to an external GNSS receiver, not only you can significantly improve the location accuracy of your data, but also get many more properties associated with your geopoint values.  Here is a list of the most important properties you can get. The complete list is available in our help.



Property NameDescription
positionSourceInfo.deviceNameThe name of your external GNSS device


Indicates how your GNSS is connected to your device.  Unknown (-1), Bluetooth (0), Serial Port (1), and Bluetooth LE (2).
positionSourceInfo.antennaHeightThe user defined GNSS antenna height.
positionSourceInfo.altitudeTypeIndicates the selected altitude type: altitude above mean sea level (0) and height above ellipsoid (1).
geoidSeparationReturns the difference between the WGS-84 earth ellipsoid and mean sea level as reported by the GNSS receiver. This is also sometimes referred to as orthometric height.
accuracyTypeRMS (0) and DOP (1)
positionAccuracyReturns the mean radial spherical error. Encompasses both horizontal and vertical error.
differentialAgeReturns the age of the differential signal and correction used by the GNSS receiver to differentially correct the position.
referenceStationIdReturns the differential reference station ID (DSID) of the station used by the GPS receiver.
satellitesVisibleReturns the number of satellites visible at the time of location capture.
satellitesInUseReturns the number satellites being used to return the position data.



Reading geopoint properties using the pulldata function


All the geopoint properties described above can be extracted using the pulldata function. For example:


pulldata("@geopoint", ${location}, "horizontalAccuracy")


The "@geopoint" parameter  to the pulldata function indicates that values will be extracted from a geopoint value.

The second parameter indicates the question in your XLSForm that holds the actual geopoint value. You will want to make sure that the question you reference is actually of type geopoint.

The third and last parameter defines the geopoint property you want to extract. You will want to make sure the property name is included in the table above and make sure that you specify it with the proper capitalization: HorizontalAccuracy is not the same as horizontalAccuracy.



Learning by Example:


Here is a simple XLSForm that will extract the X,Y and horizontal accuracy of your geopoint and store these values as attributes. Using this technique, you have complete freedom as to which fields in your feature service will be  used to store the geopoint properties.  You use the Name column in the XLSForm to define which field will keep the data.


decimalLatitudeLatitudepulldata("@geopoint", ${location},"y")
decimalLongitudeLongitudepulldata("@geopoint", ${location},"x")
decimalHorAccMetersAccuracypulldata("@geopoint", ${location},"horizontalAccuracy")


Realistically, I would never store geopoint properties as illustrated in the example above. Mostly because I would not want end-users to get distracted with questions in the survey that get automatically populated with these properties. I would not want end-users to modify these calculated values either. 


A more  refined approach would be to set  the Type of question as hidden. In this way, the Latitude, Longitude and accuracy questions will not be shown in the form, but their information would still be sent to the feature service on submit. To ensure  the actual values are stored as numbers in the feature service, I would also set the esriFieldType column to esriFieldTypeDouble as shown here:


hiddenLatitudeLatitudepulldata("@geopoint", ${location},"y")esriFieldTypeDouble
hiddenLongitudeLongitudepulldata("@geopoint", ${location},"x")esriFieldTypeDouble
hiddenHorAccMetersAccuracypulldata("@geopoint", ${location},"horizontalAccuracy")esriFieldTypeDouble


When working with horizontal accuracy, you should also learn about the meaning of the accuracyThreshold column.


You can use very similar expressions in your constraints and relevant statements. In the next example, we will pop a message in case that the geopoint value was captured while moving faster than 0.2 meters per second.


calculatespeedSpeedpulldata("@geopoint", ${location},"speed")
noteDo not move while fixing location!0.2<number(${speed})


Like every time you use pulldata() it is best practice to use this function alone. This is why I broke down my last example into two separate questions: One calculate question to invoke pulldata() and a separate question where I compare the output of the pulldata function with a number.


In this blog post I simply wanted to introduce the use of the pulldata("@geopoint") function. With it, you can build expressions to persist location metadata as GIS attributes, but also to create powerful data validation rules in your smart forms.