---
title: "1. Introduction"
space: "CAMS Biometric Integration"
url: "https://docs.navari.co.ke/cams-biometric/10-introduction"
updated: "2026-05-27"
---

## 1.0 Overview

`navari_cams_biometric` is a Frappe application that bridges the **CAMS Biometric Gateway** (a cloud-hosted hardware abstraction layer for biometric attendance devices) with **FrappeHR**. When an employee punches their fingerprint, face, palm, card, or PIN on a CAMS-connected biometric device, the punch event is delivered in real time to your ERPNext/FrappeHR site and recorded as an **Employee Check-in** record and is automatically, without any manual data entry.



### 1.1 Why This Integration Matters

Manual attendance collection is slow, error-prone, and frequently falsified. Biometric devices eliminate buddy-punching and provide millisecond-accurate time data. However, the data traditionally sits inside proprietary device software. This app liberates that data and makes it a first-class citizen inside FrappeHR, where it can flow into shift-based attendance marking, payroll computation, leave tracking, and HR reporting.



### 1.2 Key Features

- **Real-time punch capture**: every device punch is received at your site within seconds via the CAMS callback mechanism
- **Historical punch log retrieval**: load past punch data by date range directly from within CAMS Biometric Settings (subscription-dependent)
- **Shift-aware check-ins**: each Employee Check-in record is linked to the employee's shift assignment at the time of the punch
- **Timezone-resilient**: original device timestamps are preserved in a separate field even when the system timezone changes
- **Punch type filtering**: non-attendance punch types (e.g. MealIn/MealOut) are tracked separately so they don't corrupt attendance records
- **Hardened validation**: unknown biometric IDs, missing employee mappings, and malformed payloads are handled gracefully with clear error logging
- **Guest-accessible endpoint**: the callback URL is accessible without a FrappeHR login (the device POSTs from outside your network), implemented safely via direct DB queries rather than permission-bypassed ORM calls

