Skip To Content


Geopoint questions allow you to capture a specific location in a survey. While survey responses in Survey123 will always attempt to capture a device's location even if a geopoint question is not included, a visible geopoint question on the form will result in better capture of location information.

The following should be considered when using geopoints:

  • Only one geopoint question can be used per form, unless it's placed inside a repeat.
  • Survey123 will always display WGS84 latitude and longitude values.
  • By default, a geopoint question uses an online basemap. If your survey is to be used offline, see use offline basemaps.

Location accuracy threshold

By default, Survey123 does not check for accuracy in the position values it collects. If position accuracy is important to your survey results, you should define an accuracy threshold with location averaging. This can be done by entering a numerical value in the body::accuracyThreshold column of your geopoint question; this value will be the threshold of accuracy beyond which values are no longer captured when averaging a location.

Error message when response exceeds accuracy threshold of 62 m

When not averaging, the map panel in the Survey123 field app will display a warning if the position accuracy is larger than the defined threshold but doesn't prohibit the user from capturing locations. If you want to capture a location that meets the threshold, wait until there is no warning, and tap the location button. Positions that do not meet the accuracy threshold will be automatically ignored only while averaging.

3D feature services

By default, Survey123 geopoint questions don't support Z-axis (altitude) values; they only capture latitude and longitude in a two-dimensional feature service. You can change this by entering esriFieldTypePointZ into the bind::esriFieldType field of the question, which will enable the altitude value to be captured into the feature service. This will also allow the altitude field to be altered when specifying a geopoint value.


You can populate a geopoint question using the results of other questions. To do this, you first have to understand that the answer of a geopoint question is formatted as a space-separated list of longitude and latitude (in decimal degrees) values followed by optional values, starting with altitude and accuracy (in decimal meters). To populate the answer of a geopoint question, you need to adhere to this structure to produce a valid answer.

Because you can't do this directly when populating from select_one questions, it's recommended to use the substr() function to help construct a valid answer. For example, the name of the geopoint could be the following:


This value uses a fixed amount of characters for both latitude and longitude, padding the values with zeroes that would normally be truncated with an underscore between the two values, as spaces are not permitted in the name column. This creates a value that can be safely deconstructed with the substr() function to populate the following example of a geopoint question:

substr(${previous_question}, 0, 10) + " " + substr(${previous_question}, -10)

This example takes the first 10 characters of the value (the latitude) and the last 10 characters (the longitude value) and presents them separated by a space as a valid geopoint result.

You can also use the pulldata() function to populate a geopoint question using an attached CSV file. First add the CSV file to your survey's media folder, then add something similar to this into your calculation column:

pulldata('Intersections', 'Lat', 'IntersectionID', ${intersection}) + " " + pulldata('Intersections', 'Long', 'IntersectionID', ${intersection})

As with the substr() example, this combines the latitude and longitude values of a location with a space to create a valid answer for a geopoint question based on a previous question.

Examples of both of these in action can be found in the samples in Survey123 Connect.

Required and read-only

Geopoint questions automatically populate a survey with a location provided by the device if one is available. If a device doesn't provide a valid location in its survey response, Survey123 will return a location of 0,0; this point is in a stretch of ocean off the coast of Africa. Marking the geopoint question as required will prevent the survey from being submitted with this null value, only accepting the survey once either the device provides a location or one is manually submitted.

Marking a geopoint question as read-only will prevent the entering of manual answers. This can be useful for questions where an automatic response is necessary, and a manual response would cause issues with the data set. It's best used alongside one of the calculations described above, which would provide a discrete geopoint value that users would be unable to alter.

Extract geopoint values

To deconstruct a geopoint answer, you can use the pulldata()function to extract the values to populate the values of other questions.

Survey123 enhances the pulldata() function when an @ symbol is used at the beginning of the first parameter. This enhancement allows more than the standard four parameters to be retrieved. Additional parameters can be retrieved from a geopoint question using an enhanced pulldata() function. The following example extracts the horizontal accuracy value from a geopoint question:

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

The availability of geopoint properties is hardware dependant. The full list of properties that could be pulled from a geopoint (if available from the device) are listed in the following table:

Property nameDescriptionUnits


Longitude, positive value in eastern hemisphere, negative value in western hemisphere

Decimal degrees


Latitude, positive value in northern hemisphere, negative value in southern hemisphere

Decimal degrees


Altitude, meters above sea level



Horizontal accuracy of the x and y coordinates



Vertical accuracy of the z coordinate



Ground speed

Meters per second


Vertical speed

Meters per second


Direction of travel measured clockwise from north

Decimal degrees


Angle between magnetic and true north

Decimal degrees