home / skills / openclaw / skills / dex-crm
/skills/jaybna/dex-crm
This skill helps you manage Dex CRM contacts, notes, and reminders directly from Clawdbot, enabling quick lookups and updates.
npx playbooks add skill openclaw/skills --skill dex-crmReview the files below or copy the command above to add this skill to your agents.
---
name: dex-crm
description: |
Manage Dex personal CRM (getdex.com) contacts, notes, and reminders.
Use when you need to: (1) Search or browse contacts, (2) Add notes about people,
(3) Create or check reminders, (4) Look up contact details (phone, email, birthday).
Requires DEX_API_KEY environment variable.
---
# Dex Personal CRM
Manage your Dex CRM directly from Clawdbot. Search contacts, add notes, manage reminders.
## Authentication
Set `DEX_API_KEY` in gateway config env vars.
## API Base
- **Base URL:** `https://api.getdex.com/api/rest`
- **Headers:** `Content-Type: application/json` and `x-hasura-dex-api-key: $DEX_API_KEY`
## Quick Reference
### Contacts
```bash
# List contacts (paginated)
curl -s -H "Content-Type: application/json" \
-H "x-hasura-dex-api-key: $DEX_API_KEY" \
"https://api.getdex.com/api/rest/contacts?limit=10&offset=0"
# Get contact by ID
curl -s -H "Content-Type: application/json" \
-H "x-hasura-dex-api-key: $DEX_API_KEY" \
"https://api.getdex.com/api/rest/contacts/{contactId}"
# Search contact by email
curl -s -H "Content-Type: application/json" \
-H "x-hasura-dex-api-key: $DEX_API_KEY" \
"https://api.getdex.com/api/rest/search/[email protected]"
# Create contact
curl -s -X POST -H "Content-Type: application/json" \
-H "x-hasura-dex-api-key: $DEX_API_KEY" \
-d '{"first_name":"John","last_name":"Doe","emails":["[email protected]"]}' \
"https://api.getdex.com/api/rest/contacts"
# Update contact
curl -s -X PUT -H "Content-Type: application/json" \
-H "x-hasura-dex-api-key: $DEX_API_KEY" \
-d '{"job_title":"CEO"}' \
"https://api.getdex.com/api/rest/contacts/{contactId}"
# Delete contact
curl -s -X DELETE -H "Content-Type: application/json" \
-H "x-hasura-dex-api-key: $DEX_API_KEY" \
"https://api.getdex.com/api/rest/contacts/{contactId}"
```
### Notes (Timeline Items)
```bash
# List notes
curl -s -H "Content-Type: application/json" \
-H "x-hasura-dex-api-key: $DEX_API_KEY" \
"https://api.getdex.com/api/rest/timeline_items?limit=10&offset=0"
# Notes for a contact
curl -s -H "Content-Type: application/json" \
-H "x-hasura-dex-api-key: $DEX_API_KEY" \
"https://api.getdex.com/api/rest/timeline_items/contacts/{contactId}"
# Create note
curl -s -X POST -H "Content-Type: application/json" \
-H "x-hasura-dex-api-key: $DEX_API_KEY" \
-d '{"note":"Met for coffee, discussed project","contact_ids":["contact-uuid"],"event_time":"2026-01-27T12:00:00Z"}' \
"https://api.getdex.com/api/rest/timeline_items"
# Update note
curl -s -X PUT -H "Content-Type: application/json" \
-H "x-hasura-dex-api-key: $DEX_API_KEY" \
-d '{"note":"Updated note text"}' \
"https://api.getdex.com/api/rest/timeline_items/{noteId}"
# Delete note
curl -s -X DELETE -H "Content-Type: application/json" \
-H "x-hasura-dex-api-key: $DEX_API_KEY" \
"https://api.getdex.com/api/rest/timeline_items/{noteId}"
```
### Reminders
```bash
# List reminders
curl -s -H "Content-Type: application/json" \
-H "x-hasura-dex-api-key: $DEX_API_KEY" \
"https://api.getdex.com/api/rest/reminders?limit=10&offset=0"
# Create reminder
curl -s -X POST -H "Content-Type: application/json" \
-H "x-hasura-dex-api-key: $DEX_API_KEY" \
-d '{"body":"Follow up on proposal","due_at_date":"2026-02-01","contact_ids":["contact-uuid"]}' \
"https://api.getdex.com/api/rest/reminders"
# Update reminder
curl -s -X PUT -H "Content-Type: application/json" \
-H "x-hasura-dex-api-key: $DEX_API_KEY" \
-d '{"is_complete":true}' \
"https://api.getdex.com/api/rest/reminders/{reminderId}"
# Delete reminder
curl -s -X DELETE -H "Content-Type: application/json" \
-H "x-hasura-dex-api-key: $DEX_API_KEY" \
"https://api.getdex.com/api/rest/reminders/{reminderId}"
```
## Contact Fields
- `first_name`, `last_name`, `job_title`, `description`
- `emails` (array of `{email}`)
- `phones` (array of `{phone_number}`)
- `education`, `website`, `linkedin`, `facebook`, `twitter`, `instagram`, `telegram`
- `birthday`, `image_url`
- `last_seen_at`, `next_reminder_at`
- `is_archived`, `created_at`, `updated_at`
## Searching Contacts
The API only supports search by email. For name-based search, fetch contacts in batches and filter locally. Use a reasonable limit (50-100) for browsing.
## Notes
- Always confirm before creating, updating, or deleting contacts/notes/reminders
- Contact search by name requires local filtering (API only supports email search)
- Use pagination (limit/offset) for large result sets
- The `event_time` field on notes is when the interaction happened, not when the note was created
This skill lets you manage your Dex personal CRM (getdex.com) from the agent: browse and search contacts, add or edit notes, and create or check reminders. It requires the DEX_API_KEY environment variable to authenticate requests. Use it to look up contact details (phone, email, birthday) and keep timeline items and reminders in sync.
The skill calls the Dex REST API (https://api.getdex.com/api/rest) with the configured x-hasura-dex-api-key header. It supports listing and paginating contacts, fetching by ID or email, creating/updating/deleting contacts, timeline notes, and reminders. For name-based searches the API does not support server-side name queries, so the skill fetches contact pages and filters locally.
How do I authenticate?
Provide your Dex API key via the DEX_API_KEY environment variable; the skill sends it in x-hasura-dex-api-key.
Can I search contacts by name?
Not directly via the API. Use email search server-side; for names the skill fetches pages of contacts and filters locally.
What does event_time on a note mean?
event_time records when the interaction happened (meeting/call), not when the note was created.