create()(none) ──────────────────> OnTrack │ ┌──────────┼──────────┐ │ │ │ v v v AtRisk Behind Achieved ──> Completed │ │ │ │ v │ └───────> Missed │ │ │ v v Reset <──────────────── Reset │ v OnTrack (new period)
import { Goal } from '@headlessly/analytics'// Find all active goalsconst active = await Goal.find({ status: { $in: ['OnTrack', 'AtRisk', 'Behind'] },})// Get a specific goal with its metricconst goal = await Goal.get('goal_pQ8xNfKm', { include: ['metric'],})// Create a quarterly revenue goalawait Goal.create({ name: 'Q1 MRR Target', description: 'Reach $10K MRR by end of Q1', metric: 'metric_k7TmPvQx', target: 10000, current: 4200, unit: 'USD', period: 'Quarterly', status: 'OnTrack',})// Mark achievedawait Goal.achieve('goal_pQ8xNfKm')// Reset for next periodawait Goal.reset('goal_pQ8xNfKm')
# List goals by statuscurl https://analytics.headless.ly/~acme/goals?status=OnTrack&period=Quarterly# Get a specific goalcurl https://analytics.headless.ly/~acme/goals/goal_pQ8xNfKm# Create a goalcurl -X POST https://analytics.headless.ly/~acme/goals \ -H 'Content-Type: application/json' \ -d '{"name": "Q1 MRR Target", "target": 10000, "current": 4200, "unit": "USD", "period": "Quarterly", "metric": "metric_k7TmPvQx"}'# Achieve a goalcurl -X POST https://analytics.headless.ly/~acme/goals/goal_pQ8xNfKm/achieve# Reset a goalcurl -X POST https://analytics.headless.ly/~acme/goals/goal_pQ8xNfKm/reset