Engagement Levels
Engagement levels define score ranges that categorize leads based on their behavioral engagement. Use these to bucket leads into "Cold", "Warm", "Hot", etc. for easier prioritization.
When to Use This
- Categorize leads by engagement: Group leads into intuitive labels (Cold, Warm, Hot)
- Simplify lead prioritization: Sales teams work with "Hot Leads" instead of "Leads with 75+ points"
- Trigger actions by level: Send alerts when leads move from Warm to Hot
- Reporting and dashboards: Show lead distribution across engagement levels
GET /engagement-levels
List all engagement levels for the active Organizational Unit.
Request
curl -u "CLIENT_ID:CLIENT_SECRET" \
"https://your-api.example.com/engagement-levels"
Response
Status: 200 OK
{
"levels": [
{
"id": "level-123",
"name": "Cold",
"min_score": 0,
"max_score": 24,
"color": "#94a3b8",
"order": 1
},
{
"id": "level-456",
"name": "Warm",
"min_score": 25,
"max_score": 49,
"color": "#fbbf24",
"order": 2
},
{
"id": "level-789",
"name": "Hot",
"min_score": 50,
"max_score": 74,
"color": "#f97316",
"order": 3
},
{
"id": "level-abc",
"name": "Very Hot",
"min_score": 75,
"max_score": null,
"color": "#ef4444",
"order": 4
}
]
}
POST /engagement-levels
Create a new engagement level.
Request
curl -X POST https://your-api.example.com/engagement-levels \
-u "CLIENT_ID:CLIENT_SECRET" \
-H "Content-Type: application/json" \
-d '{
"name": "Super Hot",
"min_score": 100,
"max_score": null,
"color": "#dc2626",
"order": 5
}'
Request Body
| Field | Required | Type | Description |
|---|---|---|---|
name | Yes | string | Level label (e.g., "Hot", "Warm") |
min_score | Yes | number | Minimum score for this level (inclusive) |
max_score | No | number | Maximum score for this level (inclusive). Use null for no upper limit. |
color | No | string | Hex color code for UI display (default: #64748b) |
order | No | number | Display order (lower = shown first) |
Response
Status: 201 Created
{
"id": "level-xyz",
"name": "Super Hot",
"min_score": 100,
"max_score": null,
"color": "#dc2626",
"order": 5,
"created_at": "2025-01-15T11:00:00Z"
}
Common Errors
| Status Code | Error | Solution |
|---|---|---|
| 400 | Score ranges overlap | Ensure max_score of one level doesn't overlap min_score of another |
| 400 | Invalid color format | Use hex color codes like #ef4444 |
| 409 | Level name exists | Choose a unique name or update existing level |
Example Use Case
Scenario: Create a 4-tier engagement level system
# Cold: 0-24 points
POST /engagement-levels
{"name": "Cold", "min_score": 0, "max_score": 24, "color": "#94a3b8", "order": 1}
# Warm: 25-49 points
POST /engagement-levels
{"name": "Warm", "min_score": 25, "max_score": 49, "color": "#fbbf24", "order": 2}
# Hot: 50-74 points
POST /engagement-levels
{"name": "Hot", "min_score": 50, "max_score": 74, "color": "#f97316", "order": 3}
# Very Hot: 75+ points
POST /engagement-levels
{"name": "Very Hot", "min_score": 75, "max_score": null, "color": "#ef4444", "order": 4}
Result: Leads are automatically categorized:
- Lead with 20 points = "Cold"
- Lead with 35 points = "Warm"
- Lead with 65 points = "Hot"
- Lead with 90 points = "Very Hot"
Important Notes
Score Range Rules
- Ranges must not overlap
max_scorecan benullto indicate "no upper limit"- Highest level should have
max_score: null - Lowest level should have
min_score: 0
Display Order
The order field controls how levels appear in the UI:
- Lower numbers appear first
- Use gaps (10, 20, 30) to allow insertions later
- Independent of score ranges
Related Endpoints
- Update/Delete Engagement Levels
- Profile Levels - For demographic/firmographic fit scoring
- Engagement Scoring Rules - Define how scores are calculated