Part of the iNaturalist integration.
Overview
The iNaturalist integration brings community wildlife observations from iNaturalist into EarthRanger as events. Each observation records what was seen, who recorded it, where, and how far the identification has been verified by the iNaturalist community, so sightings around your conservancy show up alongside the rest of your operational picture.
Observations arrive already resolved: they are records of something that was seen, not incidents that need a response.
Supported event types
| EarthRanger event type | Display title | iNaturalist source |
|---|---|---|
inat_observation |
iNat Observation | One iNaturalist observation |
Fields
| Field | Label | Type | What it holds |
|---|---|---|---|
taxon_common_name |
Common Name | Text | Species common name, e.g. Grevy's Zebra. |
species_guess |
Species Guess | Text | What the observer typed when recording the sighting, before identification. |
taxon_name |
Scientific Name | Text | Binomial name, e.g. Equus grevyi. |
taxon_rank |
Taxon Rank | Text | How precise the identification is — species, genus, family and so on. |
taxon_id |
Taxon ID | Number | iNaturalist's identifier for the taxon. |
taxon_conservation_status |
Conservation Status | Text | Conservation status recorded for the taxon, where iNaturalist holds one. |
taxon_wikipedia_url |
Wikipedia | URL | Link to the taxon's Wikipedia article. |
quality_grade |
Quality Grade | Text |
How far the community has verified the identification — research,
needs_id or casual.
|
captive |
Captive or Cultivated | Yes/No | Whether the organism was captive or cultivated rather than wild. |
location_obscured |
Location Obscured | Yes/No | Whether iNaturalist has blurred the coordinates, which it does for sensitive species. |
place_guess |
Place | Text | The place description attached to the observation. |
place_ids |
Place IDs | Text | iNaturalist place identifiers the observation falls within, comma-separated. |
inat_id |
iNaturalist ID | Text | The observation's own identifier in iNaturalist. |
inat_url |
iNaturalist Link | URL | Link back to the observation on iNaturalist. |
user_name |
Observer | Text | The iNaturalist account that recorded the observation. |
user_id |
Observer ID | Number | That account's identifier. |
created_at |
Created At | Text | When the observation was created in iNaturalist. |
updated_at |
Updated At | Text | When it was last changed in iNaturalist. |
How to create this event type
1. Install the command-line tool and sign in
You need a terminal with Python 3.11 or newer and pipx installed, and an
EarthRanger account on the target site.
pipx install earthranger-cli # install the tool; this gives you the 'er' command
er profile add sitename --server sitename --username you # save the site as a profile ('sitename' is the site's subdomain, e.g. 'borana' for borana.pamdas.org)
export ER_PROFILE=sitename # tell 'er' to use that profile in this terminal
er auth login # asks for your EarthRanger password and signs you in
Important: the account you log in with must have permissions on the Event Category that will host this event type.
2. Save this spec as inat.yaml
Set category to the category that should host the iNaturalist events on this site
(for example tourism or monitoring).
category:
value: tourism
display: Tourism
event_types:
- value: inat_observation
display: iNat Observation
icon_id: inaturalist_rep
default_state: resolved
layout:
label: ''
columns: 1
fields:
- key: taxon_common_name
label: Common Name
type: string
- key: species_guess
label: Species Guess
type: string
- key: taxon_name
label: Scientific Name
type: string
- key: taxon_rank
label: Taxon Rank
type: string
- key: taxon_id
label: Taxon ID
type: number
- key: taxon_conservation_status
label: Conservation Status
type: string
- key: taxon_wikipedia_url
label: Wikipedia
type: url
- key: quality_grade
label: Quality Grade
type: string
- key: captive
label: Captive or Cultivated
type: boolean
- key: location_obscured
label: Location Obscured
type: boolean
- key: place_guess
label: Place
type: string
- key: place_ids
label: Place IDs
type: string
- key: inat_id
label: iNaturalist ID
type: string
- key: inat_url
label: iNaturalist Link
type: url
- key: user_name
label: Observer
type: string
- key: user_id
label: Observer ID
type: number
- key: created_at
label: Created At
type: string
- key: updated_at
label: Updated At
type: string
3. Preview, then apply
er events apply inat.yaml --dry-run # shows what will be created or changed
er events apply inat.yaml # actually does it
Applying is safe to repeat: it creates what is missing and patches only what differs. Nothing is ever deleted.
4. Verify
er events show event-type inat_observation
Changelog
September 2026 — first published field set. Before this revision the event type
existed with no fields at all, so iNaturalist data was stored on each event but nothing appeared
on the event form. These eighteen fields were added: taxon_common_name,
species_guess, taxon_name, taxon_rank,
taxon_id, taxon_conservation_status, taxon_wikipedia_url,
quality_grade, captive, location_obscured,
place_guess, place_ids, inat_id, inat_url,
user_name, user_id, created_at, updated_at.
Events recorded before the update keep the values they arrived with — once the fields exist, that older data becomes visible on the form too. Nothing needs to be re-sent.
CLI tool and full spec documentation: https://github.com/PADAS/earthranger-cli
