Hey everyone,
We're happy to share our new extension for EspoCRM: Objective Tracker
We built this because we needed a way to set business goals, track progress over time, and give
teams visibility into how they're doing. All without leaving EspoCRM. We looked at what was
available and realized nothing really did this natively, so we built it ourselves 😁

Objective Tracker lets you define measurable objectives (revenue targets, KPIs, task
completion, etc.), organize them by area/team, and track progress with auto-calculated metrics,
color-coded progress bars, and historical trend charts, all inside your EspoCRM dashboard
Core Features
Objective Entity
Each objective includes:
- Name & Description — what you're tracking
- Area — organize by team or department (Sales, Marketing, Product, etc.)
- Objective Type — currency, number, percentage, or task
- Target & Current Value — where you want to be vs. where you are
- Priority — low, medium, high, critical (color-coded badges)
- Period — weekly, monthly, quarterly, yearly, or custom
- Start / End Date — defines the time window
- Weight — for weighted averages in area-level scoring (e.g., a critical revenue goal can weigh
2x)
- Assigned User — who owns this objective
- Calculated fields (read-only): percent complete, remaining value, and auto-derived status
Smart Status Derivation
Status isn't just a manual dropdown — it's automatically calculated based on your actual
progress vs. where you should be given the time elapsed:
- Not Started — 0% progress
- In Progress — Some progress, no date comparison available
- On Track — Progress is ≥90% of expected (based on time elapsed)
- At Risk — Progress is 60–89% of expected
- Behind — Progress is <60% of expected
- Completed — 100% of target reached
- Missed — Past end date without reaching target
Each status gets a color-coded badge (green, orange, red, blue, gray) so you can scan the list
at a glance.
Auto-Calculation from Any Entity
This is where it gets powerful. You can point an objective at any entity in your CRM and it
will automatically calculate progress:
- Source Entity Type — pick any entity (Opportunity, Lead, Task, Call, or any custom entity)
- Source Field — which numeric field to aggregate
- Source Date Field — for filtering records within the objective's date range
- Source Filter — JSON-based custom filter (e.g., {"stage": "Closed Won"})
- Aggregation Type — sum, avg, count, min, max, or latest
Example: Create a "Q2 Revenue" objective → point it at the Opportunity entity → field: amount →
filter: {"stage": "Closed Won"} → aggregation: sum → and EspoCRM will automatically calculate
your current revenue and update the progress bar. No manual data entry needed.
Scheduled Jobs
Two automated jobs keep everything up to date:
1. Calculate Objectives (runs every hour) recalculates all auto-calculated objectives from
their source entities
2. Log Progress (runs daily at midnight) takes a daily snapshot of each active objective's
progress and stores it in the history, which feeds the Trend Chart
Progress History
Every day, the system logs the current value and percent complete for each active objective.
This historical data is what powers the Trend Chart dashlet and you get a full timeline of how
each objective evolved over days, weeks, or months.
Dashboard Widgets
The extension ships with four dashlets you can add to any dashboard:
1. Objectives Overview
A full table view of all your objectives with:
- Color-coded progress bars (red <50%, orange 50–80%, green ≥80%)
- Status badges
- Current value vs. target
- Area grouping
- Click any row to open the objective detail
- Filter button to show/hide individual objectives
- Configurable auto-refresh interval
2. Area Scorecard
Visual card layout with circular SVG progress indicators for each objective or area:
- Animated percentage in the center of each circle
- Color-coded rings (red/orange/green)
- Current vs. target values
- Two display modes: individual objectives or grouped by area (with weighted averages)
- Filter and auto-refresh support
3. My Objectives
A personal view showing only objectives assigned to the logged-in user:
- Progress bars with current/target
- End date visibility
- Status badges
- Filter and auto-refresh
4. Trend Chart
An SVG line chart showing progress over time:
- Multiple objectives rendered as colored lines (12-color palette)
- Interactive legend — click to show/hide individual lines
- Hover tooltips showing objective name, date, percentage, value, area, and target
- Area fill under each line
- Automatic date range from your ObjectiveLog data
- Supports up to 365 days of history
List & Detail View Actions
- Recalculate All button on the list view — triggers an immediate recalculation of every
auto-calculated objective, with a notification showing how many were updated
- Recalculate button on the detail view — recalculates a single objective on demand
- Full filter panel on the list: filter by area, status, priority, assigned user, period, type,
or auto-calculated flag
---
API Endpoints
For those who want to integrate or build on top of this:
- POST /ObjectiveTracker/action/recalculateAll — recalculate all (admin only)
- POST /ObjectiveTracker/action/recalculate — recalculate one by ID
- GET /ObjectiveTracker/action/dashletData?type=overview|my|area|trend — get dashlet data
programmatically
- GET /ObjectiveTracker/action/entityFields?entityType=X — get available numeric/date fields
for any entity (useful for configuring auto-calculation)
---
Technical Details
- Requires: EspoCRM 8.0+ / PHP 8.1+
- Installs via: standard extension upload (Administration → Extensions)
- Adds "Objective" to the main navigation automatically on install
- Clean uninstall — removes tables and nav entry
- No core file modifications — 100% modular
We'd love to hear your feedback. If you have questions or feature requests, drop them here!
PimpMyCRM 💜
We're happy to share our new extension for EspoCRM: Objective Tracker
We built this because we needed a way to set business goals, track progress over time, and give
teams visibility into how they're doing. All without leaving EspoCRM. We looked at what was
available and realized nothing really did this natively, so we built it ourselves 😁
Objective Tracker lets you define measurable objectives (revenue targets, KPIs, task
completion, etc.), organize them by area/team, and track progress with auto-calculated metrics,
color-coded progress bars, and historical trend charts, all inside your EspoCRM dashboard
Core Features
Objective Entity
Each objective includes:
- Name & Description — what you're tracking
- Area — organize by team or department (Sales, Marketing, Product, etc.)
- Objective Type — currency, number, percentage, or task
- Target & Current Value — where you want to be vs. where you are
- Priority — low, medium, high, critical (color-coded badges)
- Period — weekly, monthly, quarterly, yearly, or custom
- Start / End Date — defines the time window
- Weight — for weighted averages in area-level scoring (e.g., a critical revenue goal can weigh
2x)
- Assigned User — who owns this objective
- Calculated fields (read-only): percent complete, remaining value, and auto-derived status
Smart Status Derivation
Status isn't just a manual dropdown — it's automatically calculated based on your actual
progress vs. where you should be given the time elapsed:
- Not Started — 0% progress
- In Progress — Some progress, no date comparison available
- On Track — Progress is ≥90% of expected (based on time elapsed)
- At Risk — Progress is 60–89% of expected
- Behind — Progress is <60% of expected
- Completed — 100% of target reached
- Missed — Past end date without reaching target
Each status gets a color-coded badge (green, orange, red, blue, gray) so you can scan the list
at a glance.
Auto-Calculation from Any Entity
This is where it gets powerful. You can point an objective at any entity in your CRM and it
will automatically calculate progress:
- Source Entity Type — pick any entity (Opportunity, Lead, Task, Call, or any custom entity)
- Source Field — which numeric field to aggregate
- Source Date Field — for filtering records within the objective's date range
- Source Filter — JSON-based custom filter (e.g., {"stage": "Closed Won"})
- Aggregation Type — sum, avg, count, min, max, or latest
Example: Create a "Q2 Revenue" objective → point it at the Opportunity entity → field: amount →
filter: {"stage": "Closed Won"} → aggregation: sum → and EspoCRM will automatically calculate
your current revenue and update the progress bar. No manual data entry needed.
Scheduled Jobs
Two automated jobs keep everything up to date:
1. Calculate Objectives (runs every hour) recalculates all auto-calculated objectives from
their source entities
2. Log Progress (runs daily at midnight) takes a daily snapshot of each active objective's
progress and stores it in the history, which feeds the Trend Chart
Progress History
Every day, the system logs the current value and percent complete for each active objective.
This historical data is what powers the Trend Chart dashlet and you get a full timeline of how
each objective evolved over days, weeks, or months.
Dashboard Widgets
The extension ships with four dashlets you can add to any dashboard:
1. Objectives Overview
A full table view of all your objectives with:
- Color-coded progress bars (red <50%, orange 50–80%, green ≥80%)
- Status badges
- Current value vs. target
- Area grouping
- Click any row to open the objective detail
- Filter button to show/hide individual objectives
- Configurable auto-refresh interval
2. Area Scorecard
Visual card layout with circular SVG progress indicators for each objective or area:
- Animated percentage in the center of each circle
- Color-coded rings (red/orange/green)
- Current vs. target values
- Two display modes: individual objectives or grouped by area (with weighted averages)
- Filter and auto-refresh support
3. My Objectives
A personal view showing only objectives assigned to the logged-in user:
- Progress bars with current/target
- End date visibility
- Status badges
- Filter and auto-refresh
4. Trend Chart
An SVG line chart showing progress over time:
- Multiple objectives rendered as colored lines (12-color palette)
- Interactive legend — click to show/hide individual lines
- Hover tooltips showing objective name, date, percentage, value, area, and target
- Area fill under each line
- Automatic date range from your ObjectiveLog data
- Supports up to 365 days of history
List & Detail View Actions
- Recalculate All button on the list view — triggers an immediate recalculation of every
auto-calculated objective, with a notification showing how many were updated
- Recalculate button on the detail view — recalculates a single objective on demand
- Full filter panel on the list: filter by area, status, priority, assigned user, period, type,
or auto-calculated flag
---
API Endpoints
For those who want to integrate or build on top of this:
- POST /ObjectiveTracker/action/recalculateAll — recalculate all (admin only)
- POST /ObjectiveTracker/action/recalculate — recalculate one by ID
- GET /ObjectiveTracker/action/dashletData?type=overview|my|area|trend — get dashlet data
programmatically
- GET /ObjectiveTracker/action/entityFields?entityType=X — get available numeric/date fields
for any entity (useful for configuring auto-calculation)
---
Technical Details
- Requires: EspoCRM 8.0+ / PHP 8.1+
- Installs via: standard extension upload (Administration → Extensions)
- Adds "Objective" to the main navigation automatically on install
- Clean uninstall — removes tables and nav entry
- No core file modifications — 100% modular
We'd love to hear your feedback. If you have questions or feature requests, drop them here!
PimpMyCRM 💜
