Docs Company Admin Guide Photo Detail Page & EXIF Metadata

Company Admin Guide

Photo Detail Page & EXIF Metadata

How to use EXIF to verify photos and spot fraud (camera GPS vs. browser GPS).

Click any photo thumbnail in the admin UI — check-in, check-out, or presence-check selfie — and you land on the photo detail page with three cards:

EXIF Metadata

Read directly from the photo's EXIF block at upload time. Includes:

  • Camera datetime — when the camera says the shot was taken
  • GPS (camera) — coordinates the camera embedded in the file, with a Google Maps link
  • Camera — make + model (e.g. Apple iPhone 14 Pro)
  • Software — typically the OS version
  • Dimensions, orientation, exposure

If a photo has no EXIF (rare for phone cameras, common for screenshots), the card shows "EXIF not available — no_exif". This itself is a red flag: someone uploaded a photo that wasn't taken with a phone camera in the past few minutes.

Capture Context

Recorded by ClockMi at the moment the photo was uploaded:

  • Server timestamp — when the upload arrived (use this for hours calculation)
  • GPS at capture — coordinates from the browser's geolocation API
  • Site location + distance from site (red > 1km, amber > 500m, green otherwise)
  • For presence checks: within geofence ✓/✗ and submission IP

Submitting Device

Parsed from the user-agent: device type (Mobile/Tablet/Desktop), OS, browser, screen size, raw user-agent (collapsible).

Cross-check for fraud

When both EXIF GPS and geolocation-API GPS exist, the page shows a cross-check note. The two should agree to within ~10 meters. Big mismatch suggests the photo was taken elsewhere (real GPS embedded in EXIF) and uploaded later from inside the geofence (browser GPS). This is the main fraud-detection use case for preserving EXIF.

Plan-gated

Photo verification is a per-plan feature. EXIF surfacing is included automatically when photos are. If your plan doesn't include photos, the photo-related controls are hidden in site settings.

Was this helpful?

Last updated: May 3, 2026