Skip to main content

Import field reference

The column contract for every import format: the sheet each one expects, its columns, which are required, and the defaults Erde fills in. Use it to prepare a file before you open the app, or to understand a validation message.

The multi-sheet laboratory deliverable has its own page — Lab Report (EDD) format. For the end-to-end workflow (validate, review, commit, roll back) see Import data.

The fastest way to get a correctly shaped file is still Download Template on the import create form — it produces the exact columns below for the type you pick.

How to read these tables

In the Required columnMeaning
YesYou must provide a value in every data row.
Default: xOptional. A blank cell is filled with x.
Cond.Required only under the condition in the notes.
NoOptional.

A few conventions hold across all formats:

  • A required column (its header must be present on the sheet) is a separate, stricter check than a required value. A missing required header fails the import before any row is read. Most of the time the two coincide; where they differ it is noted.
  • Enum columns take a value's code or name — see Codes and names. The value lists live in Enumerations and codes.
  • Lookup columns resolve against your project's reference data (matrices, units, organizations, and so on) by name or code. Equipment resolves by code or asset tag.
  • Column order does not matter; column names do. Unrecognized columns are ignored with a warning.
  • Dates and times use your locale's parseable formats; date-time columns accept a combined value.

Sample

Sheet: one sheet named Samples (required). One sample per row.

ColumnRequiredTypeNotes
CodeYestextSample code, unique within the Project.
NameNotextDisplay name.
LocationCodeNolookupThe Location. Optional, but a value you supply must resolve.
SampleTypeDefault: NormalenumSample type.
MatrixYeslookupThe sample Matrix.
StatusNoenumSample status.
ArchiveStatusNoenumSample archive statusArchived or Disposed. Leave blank for a normal sample. Separate from Status.
IsCompositeDefault: falseboolWhether the sample is a composite.
SampleDateNodateCollection date.
SampleTimeNotimeCollection time.
SampleEndDateNodateEnd date for a composite/duration sample.
SampleEndTimeNotimeEnd time.
SampleMethodNolookupSampling method.
ProjectTaskNolookupThe project task the sample belongs to.
ParentSampleCodeNotextParent sample code (stored as text; field samples link by value, not FK).
ParentSampleDateNodateParent sample date.
SampledByNotextWho collected it.
CoordinateX / CoordinateYNonumberSample location coordinates (paired).
CoordinateSystemNolookupCoordinate system for X/Y.
ElevationNonumberSample elevation.
ElevationUnitNoenumElevation unit.
VerticalDatumNolookupVertical datum for the elevation.
DepthStart / DepthEndNonumberSample depth interval.
DepthUnitNoenumUnit for the depth interval.
WeatherConditionsNotextFree text.
NotesNotextFree text.

Location

Sheet: one sheet named Locations (required). Creates new locations, with an optional primary coordinate on the same row. To add coordinates to existing locations in bulk, use Coordinate.

Core columns

ColumnRequiredTypeNotes
CodeYestextLocation code, unique within the Site. A code that already exists is skipped (not re-created).
NameNotextDisplay name.
LocationTypeYeslookupThe location type.
StatusDefault: ActiveenumLocation status.
SiteAreaNolookupSite area assignment.
SiteAreaNotesNotextNotes on the site-area assignment.
EstablishedDateNodateDate established.
DecommissionedDateNodateDate decommissioned.
IsAccessibleDefault: trueboolWhether the location is accessible.
AccessNotesNotextAccess notes.
OwnerOrganizationNolookupOwning organization (must be active).
DescriptionNotextFree text.

Inline primary-coordinate columns (optional)

Fill these to create the location's primary coordinate in the same row. They are all-or-nothing: the block runs only when CoordinateX, CoordinateY, or Elevation is present.

ColumnRequiredTypeNotes
CoordinateX / CoordinateYCond.numberA complete X/Y pair (easting/northing or lon/lat per the coordinate system). One axis without the other is incomplete.
CoordinateSystemCond.lookupRequired when X/Y are present, unless the Site has a default coordinate system.
HorizontalAccuracyNonumberHorizontal accuracy value.
HorizontalAccuracyUnitNoenumUnit for horizontal accuracy.
ElevationNonumberElevation value.
ElevationUnitNoenumElevation unit.
VerticalAccuracyNonumberVertical accuracy value.
VerticalAccuracyUnitNoenumUnit for vertical accuracy.
VerticalDatumCond.lookupRequired when Elevation is present, unless the Site has a default vertical datum.
MeasurementStatusDefault: MeasuredenumMeasurement status of the coordinate. Used only when coordinate/elevation data is present.
CollectionMethodNoenumCollection method.
MeasurementDateNodateDate measured.
MeasuredByNotextWho measured.
SurveyOrganizationNolookupSurveying organization (must be active).
CoordinateNotesNotextNotes on the coordinate.

Coordinate

Sheet: one sheet named Coordinates (required). Attaches coordinates to existing locations — one coordinate per row.

ColumnRequiredTypeNotes
LocationCodeYeslookupThe existing Location to attach to — must already exist.
CoordinateX / CoordinateYCond.numberA complete X/Y pair. At least one of a coordinate pair or an elevation is required per row.
CoordinateSystemCond.lookupRequired with an X/Y pair, unless the Site has a default.
HorizontalAccuracyNonumberHorizontal accuracy value.
HorizontalAccuracyUnitNoenumUnit for horizontal accuracy.
ElevationCond.numberElevation value (or supply a coordinate pair).
ElevationUnitNoenumElevation unit.
VerticalAccuracyNonumberVertical accuracy value.
VerticalAccuracyUnitNoenumUnit for vertical accuracy.
VerticalDatumCond.lookupRequired when Elevation is present, unless the Site has a default.
IsPrimarySpatialDefault: falseboolMark as the location's primary spatial coordinate.
IsPrimaryElevationDefault: falseboolMark as the location's primary elevation.
MeasurementStatusDefault: MeasuredenumMeasurement status.
CollectionMethodNoenumCollection method.
MeasurementDateNodateDate measured.
MeasuredByNotextWho measured.
SurveyOrganizationNolookupSurveying organization (must be active).
NotesNotextFree text.

Water Level

Sheet: one sheet named Water Levels (required). One reading per row. See Water levels.

ColumnRequiredTypeNotes
LocationCodeYeslookupMonitoring location (code or alias).
WellNolookupWell at the resolved location.
MeasurementDateYesdate-timeWhen the level was measured.
UnitDefault: ftenumUnit for the length values below.
MethodNoenumMeasurement method.
EquipmentNolookupInstrument (by code or asset tag).
MeasuringPointElevationNonumberMeasuring-point elevation.
DepthToWaterNonumberDepth to water.
GroundwaterElevationNonumberGroundwater elevation.
LnaplThickness / DepthToLnaplNonumberLNAPL thickness / depth (paired).
DnaplThickness / DepthToDnaplNonumberDNAPL thickness / depth (paired).
TotalDepthNonumberTotal depth.
IsDryNoboolWell-dry flag.
DryReasonNotextReason if dry.
IsValidDefault: trueboolValidity flag.
QualifierNotextData qualifier.
MeasuredByNotextWho measured.
NotesNotextFree text.

At least one measurement value is required per row, and the NAPL thickness/depth pairs must be supplied together — both enforced at validation.

Well Purge

Sheet: one sheet named Well Purges (required). One purge event per row. See Well purges.

ColumnRequiredTypeNotes
LocationCodeYeslookupMonitoring location.
WellNolookupWell at the location.
MethodNoenumPurge method.
CriterionNoenumPurge criterion.
EquipmentNolookupInstrument (by code or asset tag).
PurgeStartYesdate-timePurge start.
PurgeEndNodate-timePurge end (must be after start).
TargetVolume / PurgedVolumeNonumberTarget / actual purge volume.
VolumeUnitNoenumUnit for the volumes.
PurgeRateNonumberPurge rate.
PurgeRateUnitNoenumUnit for the purge rate.
PumpDepthNonumberPump intake depth.
PumpDepthUnitNoenumUnit for pump depth.
WentDryNoboolWell-went-dry flag.
IsValidDefault: trueboolValidity flag.
QualifierNotextData qualifier.
PurgedByNotextWho purged.
NotesNotextFree text.

Amount/unit pairs must be supplied together, enforced at validation.

Field Parameter

Sheet: one sheet named Field Parameters (required). This format has dynamic parameter columns — see below. See Field parameters.

Fixed columns

ColumnRequiredTypeNotes
LocationCodeYeslookupMonitoring location.
WellNolookupWell at the location.
DateYesdateReading date.
TimeYestimeReading time.
RecordedByNotextWho recorded.
EquipmentNolookupMeter/probe (by code or asset tag).
ProbeDepthNonumberSonde depth in the water column.
ProbeDepthUnitNotextUnit for probe depth.
IsUnstableDefault: falseboolSession marked unstable.
StabilizedAtNodate-timeStabilization time.
ReadingInvalidDefault: falseboolThis reading is invalid.
ReadingNotesNotextReading-level notes.
NotesNotextSession-level notes.

Dynamic parameter columns

Every header that is not one of the fixed columns above is treated as a parameter column, and its cell holds that parameter's value for the row.

  • Header format: ParameterName or ParameterName(unit) — for example Temperature(°C), pH, Dissolved Oxygen(mg/L). The parameter is resolved by name (then code) against your active parameters; an unknown parameter fails the row.
  • Unit: the (unit) hint is resolved by name or code. With no hint, or an unrecognized one, Erde falls back to the parameter's default unit (with an informational note); a parameter with no default unit and no usable hint fails.
  • Two columns that resolve to the same parameter in one row is an error.
  • At least one parameter value is required per row. A blank parameter cell simply means no reading for that parameter on that row.

Logger

File: exactly one file. Logger telemetry is staged as a per-location (or single-stream) summary and streamed straight to the database on commit — it is not one staged row per reading. CSV is unbounded; an Excel logger file is capped at 100,000 rows. See Continuous loggers and the load modes.

Logger files have reserved column names rather than a fixed schema. Two independent choices shape the file:

Layout (auto-detected):

LayoutColumnsMeaning
WideTimestamp, one column per channel (e.g. Water Level (ft), Temperature (°C))The channel header may embed a unit in parentheses; each cell is that channel's reading.
TallTimestamp, Parameter, Value, optional UnitOne reading per row. Detected when both Parameter and Value columns are present.

Load mode (chosen by whether a LocationCode column is present):

ModeLocationCode columnBehavior
Bulk — one file, many locationsPresentOne summary row per location; auto-creates logger streams. Up to 5,000 distinct location codes per import.
Single streamAbsentThe whole file loads into the one stream you pick on the form.

Timestamp is always required. A reading whose timestamp or value can't be parsed is skipped and counted, and reported in the summary's Skipped count.

Field artifacts: Well, Borehole, Sediment Core, Test Pit

These are multi-sheet workbooks — a parent sheet plus child sheets, with an optional Locations sheet — uploaded as one Excel workbook or one CSV per sheet (name each CSV after its sheet). See Locations and field artifacts.

Linkage. Child rows attach to their parent by a parent-code column; parent rows attach to a location by LocationCode:

FormatParent sheetChild sheetsParent-code link
WellWellsIntervalsWellCode
BoreholeBoreholesLithology Intervals, Sampling Runs, Groundwater ObservationsBoreholeCode
Sediment CoreSediment CoresLithology IntervalsSedimentCoreCode
Test PitTest PitsLithology Intervals, Groundwater ObservationsTestPitCode

Which sheets are required. At least one of the parent or child sheets must be present — a child-only upload appends to parents that already exist in the Site (resolved by code). The optional Locations sheet (documented at the end) can create the parent locations in the same import. Only one sheet of each type is allowed.

The depth/dimension unit for a parent and its child intervals comes from the parent row (DepthUnit, or DimensionUnit for Test Pit) — child sheets carry no separate unit column. All Status columns are header-required but default, so a blank status cell is filled.

Wells sheet

ColumnRequiredTypeNotes
LocationCodeYeslookupParent location.
CodeYestextWell code.
BoreholeNolookupAssociated borehole.
PermitNumberNotextPermit number.
WellTypeYeslookupWell type.
StatusDefault: ActiveenumWell status.
PrimaryAquiferNolookupPrimary aquifer.
InstallationStartDate / InstallationEndDateNodateInstallation dates.
DrillingOrganization / DrilledBy / DrillingMethodNolookup / text / lookupDrilling details.
DecommissionDateDecommissionReportNumberNomixedDecommissioning details.
Depth / DepthUnitNonumber / enumTotal depth and its unit (also the unit for child intervals).
Diameter / DiameterUnitNonumber / enumBorehole diameter.
TocElevation / TocElevationUnit / TocVerticalDatumNomixedTop-of-casing elevation.
SurfaceCompletionType / StickupHeight / StickupHeightUnitNomixedSurface completion.
ScreenTopSlotSizeUnitNomixedInline screen shortcut: any value here creates a screen interval on the well.
NotesNotextFree text.

Intervals sheet (Well)

One sheet for both casing/screen and annular intervals, discriminated by IntervalType. Fields meant for the other type are rejected on the wrong row.

ColumnRequiredTypeNotes
WellCodeYestextParent well.
IntervalTypeYesenumCasing vs Annular.
Top / BottomYesnumberInterval depth range (parent's depth unit).
CasingTypeCond.enumCasing / Screen / Sump — for casing rows.
InnerDiameter / OuterDiameterNonumberDiameters.
CasingMaterial / ScreenType / Aquifer / SlotSizeNomixedCasing/screen fields (casing rows only).
AnnularMaterial / PlacementMethod / Quantity / QuantityUnitNomixedAnnular fields (annular rows only).
NotesNotextFree text.

Boreholes sheet

ColumnRequiredTypeNotes
LocationCodeYeslookupParent location.
CodeYestextBorehole code.
BoreholeTypeYeslookupBorehole type.
StatusDefault: ActiveenumBorehole status.
DrillingStartDateDrillingMethodNomixedDrilling details.
Depth / DepthUnit, Diameter / DiameterUnitNonumber / enumTotal depth and diameter (depth unit also drives child intervals).
TerminationNotes / RefusalTypeNotext / enumTermination.
WaterColumnDepth / WaterColumnDepthUnitNonumber / enumWater column depth.
LoggedByNotextLogged by.
DecommissionDateDecommissionReportNumberNomixedDecommissioning details.
NotesNotextFree text.

Sampling Runs sheet (Borehole)

ColumnRequiredTypeNotes
BoreholeCodeYestextParent borehole.
RunNumberYestextRun number.
DepthStart / DepthEndYesnumberRun depth range (parent's depth unit).
SamplerTypeYesenumSampler type.
RecoveryLengthNonumberRecovered length.
ConditionNoenumSample condition.
Description / LoggedBy / LoggedAtNotextRun details.

Sediment Cores sheet

ColumnRequiredTypeNotes
LocationCodeYeslookupParent location.
CodeYestextSediment core code.
StatusDefault: ActiveenumSediment core status.
CollectionStartDateCoringMethodNomixedCollection details.
DepthStart / DepthEnd / DepthUnitYesnumber / enumCore depth range and unit (required on this parent; the unit drives child intervals).
Diameter / DiameterUnitNonumber / enumDiameter.
RefusalType / TerminationNotesNoenum / textTermination.
RecoveredLengthNonumberRecovered length.
WaterColumnDepth / WaterColumnDepthUnitNonumber / enumWater column depth.
LoggedBy / StorageLocation / DisposedDate / DisposedByNomixedHandling/storage.
NotesNotextFree text.

Test Pits sheet

ColumnRequiredTypeNotes
LocationCodeYeslookupParent location.
CodeYestextTest pit code.
StatusDefault: OpenenumTest pit status.
ExcavationDate / BackfillDateNodateKey dates.
ExcavationOrganization / ExcavatedBy / ExcavationMethodNomixedExcavation details.
Length / Width / DepthNonumberDimensions (share DimensionUnit).
DimensionUnitNoenumShared linear unit for length/width/depth.
TerminationReason / TerminationNotesNoenum / textTermination.
BackfillMethod / BackfillNotes / LoggedByNomixedBackfill and logging.
NotesNotextFree text.

Lithology Intervals sheet (Borehole, Sediment Core, Test Pit)

Prefixed by the parent-code column for its format (BoreholeCode, SedimentCoreCode, or TestPitCode).

ColumnRequiredTypeNotes
(parent code)YestextParent borehole / sediment core / test pit.
DepthStart / DepthEndYesnumberInterval depth range (parent's depth unit).
DescriptionCond.textInterval description. At least one of Description, Lithology, or FieldUscsClassification is required.
LithologyCond.lookupLithology classification. Satisfies the at-least-one rule above.
FieldUscsClassificationCond.textField USCS classification. Satisfies the at-least-one rule above.
Color / Texture / Structure / OdorNotextDescriptive fields.
Moisture / Consistency / Density / Sheen / NaplNoenumClassified observations.

Groundwater Observations sheet (Borehole, Test Pit)

Prefixed by the parent-code column (BoreholeCode or TestPitCode).

ColumnRequiredTypeNotes
(parent code)YestextParent borehole / test pit.
TypeYesenumObservation type.
ObservationTimeNotextWhen observed.
DepthToWaterNonumberDepth to water.
ObservationNotextObservation text.
MeasuredByNotextWho measured.
MeasurementMethodNoenumMeasurement method.

Locations sheet (optional, all field-artifact formats)

A shared optional sheet that creates the parent locations in the same import. Its columns are identical to the Location format (core columns plus the inline primary-coordinate block).

Lab formats

FormatPage
Lab Report (multi-sheet EDD)The full sheet-and-column contract is on its own page: Lab Report (EDD) format.
Lab Results (Single Sheet) (flat)One wide sheet combining the report, sample, analysis, result, and validation columns — batch codes ride in the analysis columns' typed LeachateBatchCode / PreparationBatchCode / AnalysisBatchCode columns, and Erde collapses the sheet into the review tabs. It is more permissive than the multi-sheet EDD: the lab sample code is optional (a result can attach to an existing project sample by field sample code alone), and it adds two column groups the EDD omits — FieldSampleCode/SampleDate on analysis and result rows, and the inline Val_* validation columns for already-validated historical data. The validated qualifier rides in Val_Qualifier; disposition (rejected, estimated, and so on) is derived from it through the Qualifiers reference data, so there are no separate rejected or estimated columns. See the EDD column reference for column meanings and Enumerations and codes for value lists.