Powerful Features for Modern Teams
Everything you need to build intelligent, automated customer relationships with a CRM designed for developers and AI agents.
Contacts & Properties
Manage contacts alongside the physical addresses and locations they're linked to. Every contact supports multiple emails, phones, and a company. Properties track street address, geocoding, and map data. Link contacts to properties with roles like owner, tenant, or manager.
- Full-text search across contacts and properties
- Link contacts to properties with role-based relationships
- Duplicate detection, geocoding, and map views
POST /api/v1/contacts
{
"contact": {
"first_name": "Jane",
"last_name": "Smith",
"email": "jane@example.com",
"company": "Acme Corp",
"status": "active"
}
}
POST /api/v1/contacts/:id/custom_attributes
{
"custom_attribute": {
"name": "subscription_tier",
"value": "premium"
}
}
POST /api/v1/contacts/:id/tags
{
"tag": {
"name": "vip"
}
}
Custom Attributes & Tags
Extend contact data with unlimited custom attributes and tags. Perfect for storing product-specific data, user preferences, or any custom metadata.
- Unlimited key-value pairs per contact
- Searchable and filterable tags
- Full audit trail for all changes
AI-Native Flags
Boolean flags that can be computed based on contact attributes, behavior, or external signals. Let AI agents make decisions and trigger automations based on contact state.
- Computed or manually set flags
- Perfect for segmentation and targeting
- Trigger webhooks on flag changes
POST /api/v1/contacts/:id/flags
{
"flag": {
"name": "high_value",
"value": true,
"computed": true,
"description": "LTV > $10k"
}
}
// Query contacts by flag
GET /api/v1/contacts?flag[high_value]=true
Complete RESTful API
Everything you can do in the UI, you can do via API. JSON responses, OAuth2 authentication, comprehensive documentation.
Contacts API
Create, read, update, delete contacts with full CRUD operations
Properties API
Manage addresses and locations linked to contacts
Tags API
Add, remove, and query tags across contacts
Flags API
Set and compute boolean flags for segmentation
Batch API
Process multiple operations in a single request
Search API
Full-text search with advanced filtering
// Webhook payload example
{
"event": "contact.updated",
"timestamp": "2026-02-10T12:00:00Z",
"data": {
"contact_id": "550e8400...",
"changes": {
"email": [
"old@example.com",
"new@example.com"
]
}
}
}
Real-Time Webhooks
Subscribe to contact events and get instant notifications. Keep your systems in sync with automatic retries and delivery tracking.
- Subscribe to specific events
- Automatic retry with exponential backoff
- Delivery logs and status tracking
Import & Export
Bulk import contacts from CSV with duplicate detection and conflict resolution. Export your data anytime in CSV or JSON format. GDPR-compliant data exports on demand.
CSV Import
Bulk import with duplicate detection and validation
Data Export
Export contacts in CSV or JSON format anytime
GDPR Compliant
Right to data portability and deletion requests
App-Tag Segregation
Run multiple integrations against one CRM account without data collision. Each app gets its own view of contacts and properties through lightweight tag-based enrollment. Discover, enroll, and query records scoped to your app.
- Per-app data partitioning via standard tags
- Discover + Enroll workflow with account-wide search
- No data duplication — one contact, many apps
// 1. Discover all contacts
GET /api/v1/contacts?app_tag=app:lawn_care&scope=account
// 2. Enroll a contact
POST /api/v1/contacts/:id/taggings
{
"tagging": {
"tag_name": "app:lawn_care"
}
}
// 3. Query only enrolled contacts
GET /api/v1/contacts?app_tag=app:lawn_care
Ready to Get Started?
Create your free account and start building with GrayCRM today
Get Started Free