home / skills / openclaw / skills / dex-crm

dex-crm skill

/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-crm

Review the files below or copy the command above to add this skill to your agents.

Files (4)
SKILL.md
4.5 KB
---
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

Overview

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.

How this skill works

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.

When to use it

  • Search a contact by email or browse contacts when you need someone’s phone, email, or birthday.
  • Add a note (timeline item) after a meeting or call to capture context and event_time.
  • Create reminders tied to contacts for follow-ups and tasks with due dates.
  • Update contact details like job_title, social links, or archive status.
  • List or mark reminders complete and review upcoming next_reminder_at values.

Best practices

  • Set DEX_API_KEY in environment variables before using the skill; requests require that header.
  • Confirm intent before creating, updating, or deleting contacts, notes, or reminders to avoid accidental changes.
  • When searching by name, fetch contacts in batches (limit 50–100) and filter locally to avoid missing matches.
  • Use pagination (limit/offset) for large lists to control response size and performance.
  • Provide event_time for notes when the interaction occurred, as it differs from creation time.

Example use cases

  • Find a contact’s email and phone to prepare for a call.
  • Log a meeting note with event_time and attach it to the contact’s timeline.
  • Set a reminder to follow up on a proposal and link it to the relevant contact.
  • Update a contact’s job_title and LinkedIn URL after they change roles.
  • List upcoming reminders to plan outreach for the week.

FAQ

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.