Data Activation Visitors Server
Analyze identified visitor behavior — sessions, pages viewed, engagement metrics, and individual journeys — to find your highest-value prospects.
Overview
The Data Activation Visitors Server specializes in analyzing identified visitor data. It helps you understand visitor behavior, session patterns, engagement metrics, and individual visitor journeys.
Server Details
- Server Name:
data-activation-visitors-server - Version: 0.0.1
- Endpoint:
/mcp/data-activation-visitors - Authentication: Organization-level required
Purpose
Analyze identified visitors, track their session behavior, engagement patterns, page views, and understand individual visitor journeys to identify high-value prospects and engagement opportunities.
Available Tools
1. visitors-schema-tool
Purpose: Get field mappings for the Visitors index
When to use: Before constructing queries to understand available fields
Returns: Elasticsearch mapping with field names, types, and descriptions
2. visitors-compute-tool
Purpose: Execute Elasticsearch queries against the Visitors index
Input: Elasticsearch query JSON Returns: Query results with matching visitors and aggregations
3. terminology-tool
Purpose: Translate abbreviations and business terms
4. visitor-links-tool
Purpose: Generate clickable links to visitor profiles
Input:
{
"visitors": [
{"id": "visitor-123", "label": "John Doe"},
{"id": "visitor-456", "label": "Jane Smith"}
]
}
Returns: Array of clickable links to visitor detail pages
5. chart-format-tool
Purpose: Generate Chart.js configurations for visualizing visitor data
Key Fields
Identity Fields
id- Unique visitor identifieremail- Visitor email addressname- Visitor namefirstName- First namelastName- Last nametitle- Job titlephone- Phone number
Company Fields
company- Company namecompanyDomain- Company domaincompanyUuid- Associated company UUID
Session Fields
sessionId- Session identifiersessionStart- Session start timestampsessionEnd- Session end timestampsessionDuration- Session duration (seconds)
Engagement Fields
pageViews- Number of page viewsuniquePages- Number of unique pages visitedtotalActiveTime- Total active time on site (seconds)urls- Array of URLs visitedlastVisitDate- Most recent visit datefirstVisitDate- First visit date
Attribution Fields
utmSource- UTM sourceutmMedium- UTM mediumutmCampaign- UTM campaignutmContent- UTM contentutmTerm- UTM termreferrer- Referrer URLlandingPage- Landing page URL
Device/Location Fields
device- Device type (desktop, mobile, tablet)browser- Browser nameos- Operating systemcity- Citystate- State/provincecountry- CountryipAddress- IP address
Behavioral Fields
engagementScore- Engagement scoreintentScore- Intent scoreisIdentified- Whether visitor is identifiedidentifiedDate- When visitor was identified
Common Use Cases
1. Recently Identified Visitors
{
"query": {
"bool": {
"filter": [
{"term": {"isIdentified": true}},
{"range": {"identifiedDate": {"gte": "now-7d/d"}}}
]
}
},
"_source": ["id", "name", "email", "company", "title", "identifiedDate", "pageViews"],
"sort": [{"identifiedDate": "desc"}],
"size": 50
}
2. High-Engagement Visitors
{
"query": {
"bool": {
"filter": [
{"range": {"pageViews": {"gte": 10}}},
{"range": {"totalActiveTime": {"gte": 300}}},
{"range": {"lastVisitDate": {"gte": "now-14d/d"}}}
]
}
},
"_source": ["id", "name", "email", "company", "pageViews", "totalActiveTime", "urls"],
"sort": [{"pageViews": "desc"}],
"size": 100
}
3. Visitors by Company
{
"query": {
"wildcard": {"companyDomain": "*acme.com"}
},
"_source": ["id", "name", "email", "title", "company", "pageViews", "lastVisitDate"],
"sort": [{"lastVisitDate": "desc"}],
"size": 50
}
4. Visitors Viewing Specific Pages
{
"query": {
"bool": {
"should": [
{"wildcard": {"urls": "*pricing*"}},
{"wildcard": {"urls": "*demo*"}},
{"wildcard": {"urls": "*contact*"}}
],
"minimum_should_match": 1,
"filter": [
{"term": {"isIdentified": true}}
]
}
},
"_source": ["id", "name", "email", "company", "urls", "lastVisitDate"],
"size": 100
}
5. Visitors by UTM Campaign
{
"query": {
"term": {"utmCampaign.keyword": "Q1-Brand-Campaign"}
},
"size": 0,
"aggs": {
"total_visitors": {
"cardinality": {"field": "id.keyword"}
},
"identified_visitors": {
"filter": {"term": {"isIdentified": true}}
},
"avg_page_views": {
"avg": {"field": "pageViews"}
},
"avg_active_time": {
"avg": {"field": "totalActiveTime"}
}
}
}
6. Visitor Engagement Trend
{
"query": {
"range": {"lastVisitDate": {"gte": "now-30d/d"}}
},
"size": 0,
"aggs": {
"visits_by_day": {
"date_histogram": {
"field": "lastVisitDate",
"calendar_interval": "day"
},
"aggs": {
"unique_visitors": {
"cardinality": {"field": "id.keyword"}
},
"total_page_views": {
"sum": {"field": "pageViews"}
}
}
}
}
}
7. Visitors by Job Title
{
"query": {
"bool": {
"should": [
{"wildcard": {"title": "*director*"}},
{"wildcard": {"title": "*vp*"}},
{"wildcard": {"title": "*manager*"}}
],
"minimum_should_match": 1,
"filter": [
{"term": {"isIdentified": true}}
]
}
},
"_source": ["id", "name", "email", "title", "company", "pageViews"],
"size": 100
}
8. Visitors by Device Type
{
"query": {
"range": {"lastVisitDate": {"gte": "now-30d/d"}}
},
"size": 0,
"aggs": {
"by_device": {
"terms": {"field": "device.keyword", "size": 10},
"aggs": {
"unique_visitors": {
"cardinality": {"field": "id.keyword"}
},
"avg_page_views": {
"avg": {"field": "pageViews"}
},
"avg_session_duration": {
"avg": {"field": "sessionDuration"}
}
}
}
}
}
9. Visitors by Geographic Location
{
"query": {
"bool": {
"filter": [
{"term": {"country.keyword": "United States"}},
{"term": {"isIdentified": true}}
]
}
},
"size": 0,
"aggs": {
"by_state": {
"terms": {"field": "state.keyword", "size": 20},
"aggs": {
"visitor_count": {
"cardinality": {"field": "id.keyword"}
},
"avg_engagement": {
"avg": {"field": "engagementScore"}
}
}
}
}
}
10. High-Intent Visitors
{
"query": {
"bool": {
"filter": [
{"range": {"intentScore": {"gte": 70}}},
{"term": {"isIdentified": true}},
{"range": {"lastVisitDate": {"gte": "now-14d/d"}}}
]
}
},
"_source": ["id", "name", "email", "company", "title", "intentScore", "pageViews", "urls"],
"sort": [{"intentScore": "desc"}],
"size": 50
}
11. Session Analysis
{
"query": {
"bool": {
"filter": [
{"range": {"sessionStart": {"gte": "now-7d/d"}}},
{"range": {"sessionDuration": {"gte": 60}}}
]
}
},
"_source": ["id", "name", "email", "sessionId", "sessionStart", "sessionDuration", "pageViews"],
"sort": [{"sessionDuration": "desc"}],
"size": 100
}
12. Repeat Visitors
{
"query": {
"bool": {
"filter": [
{"range": {"pageViews": {"gte": 5}}},
{"exists": {"field": "firstVisitDate"}},
{"exists": {"field": "lastVisitDate"}}
]
}
},
"size": 0,
"aggs": {
"by_visitor": {
"terms": {"field": "id.keyword", "size": 100},
"aggs": {
"total_page_views": {
"sum": {"field": "pageViews"}
},
"visit_count": {
"value_count": {"field": "sessionId.keyword"}
}
}
}
}
}
Best Practices
1. Always Check Schema First
Call visitors-schema-tool before querying to ensure correct field names.
2. Use Wildcard for Text Search
Unless exact match is explicitly requested:
{"wildcard": {"name": "*john*"}}
3. Filter for Identified Visitors
For most analyses, focus on identified visitors:
{"term": {"isIdentified": true}}
4. Include Key Fields in _source
Always include: id, name, email, company for generating visitor links.
5. Use .keyword for Exact Matches
For text fields that need exact matching:
{"term": {"company.keyword": "Acme Corp"}}
6. Apply Date Filters
For time-sensitive queries:
{"range": {"lastVisitDate": {"gte": "now-30d/d"}}}
7. Generate Clickable Links
After retrieving visitors, call visitor-links-tool to provide easy access.
8. Combine Engagement Metrics
Use multiple engagement signals for better insights:
{
"query": {
"bool": {
"filter": [
{"range": {"pageViews": {"gte": 5}}},
{"range": {"totalActiveTime": {"gte": 180}}},
{"range": {"uniquePages": {"gte": 3}}}
]
}
}
}
Query Patterns
Multiple Filters Combined
{
"query": {
"bool": {
"filter": [
{"term": {"isIdentified": true}},
{"range": {"pageViews": {"gte": 5}}},
{"wildcard": {"title": "*director*"}},
{"range": {"lastVisitDate": {"gte": "now-14d/d"}}}
]
}
}
}
Text Search Across Multiple Fields
{
"query": {
"bool": {
"should": [
{"wildcard": {"name": "*search*term*"}},
{"wildcard": {"email": "*search*term*"}},
{"wildcard": {"company": "*search*term*"}}
],
"minimum_should_match": 1
}
}
}
Aggregations for Insights
{
"size": 0,
"aggs": {
"engagement_distribution": {
"histogram": {"field": "engagementScore", "interval": 10}
},
"top_companies": {
"terms": {"field": "company.keyword", "size": 20}
},
"avg_metrics": {
"stats": {"field": "pageViews"}
}
}
}
Sorting by Multiple Fields
{
"sort": [
{"intentScore": "desc"},
{"pageViews": "desc"},
{"lastVisitDate": "desc"}
]
}
Workflow Example
Goal: Find high-engagement visitors from target companies who viewed pricing pages
Step 1: Check schema
Call: visitors-schema-tool
Step 2: Query visitors
{
"query": {
"bool": {
"filter": [
{"term": {"isIdentified": true}},
{"range": {"pageViews": {"gte": 5}}},
{"wildcard": {"urls": "*pricing*"}},
{"range": {"lastVisitDate": {"gte": "now-14d/d"}}}
]
}
},
"_source": ["id", "name", "email", "company", "title", "pageViews", "urls", "lastVisitDate"],
"sort": [{"pageViews": "desc"}],
"size": 50
}
Step 3: Generate links
{
"visitors": [
{"id": "visitor-123", "label": "John Doe - Acme Corp"},
{"id": "visitor-456", "label": "Jane Smith - TechCo"}
]
}
Step 4: Present results with insights
- Show visitor names as clickable links
- Highlight engagement metrics
- Note pages viewed (especially pricing)
- Provide recommendations for follow-up