Personal CRM

Lesson 2 of 4

Importing Contacts

Estimated time: 5 minutes

Importing Your Contacts

Before you can track relationships, OpenClaw needs a place to store them. In this lesson, you'll set up the contact database skill and optionally import your existing contacts.

Install the Contacts skill

OpenClaw uses a JSON-based contacts store. Install the skill:

Install contacts skill
openclaw skill add contacts --storage json

This creates a local contacts.json file that OpenClaw can read and write. Every contact gets a structured record with name, organization, tags, notes, and interaction history.

Why JSON?

For a personal CRM with hundreds (not millions) of contacts, a JSON file is simple, portable, and easy to back up. OpenClaw can also use SQLite or Airtable as backends — see the Advanced section below.

Add your first contact via chat

Test it by adding someone:

openclaw chat "Add contact: Lisa Chen, VP of Partnerships at Acme Corp.
Met at TechCrunch Disrupt 2025. She's interested in a partnership
around AI automation. Seemed very sharp — Stanford CS background.
Tags: partnership, AI, conference"

OpenClaw parses this into a structured record:

✅ Contact added: Lisa Chen

  Name:         Lisa Chen
  Organization: Acme Corp
  Title:        VP of Partnerships
  Tags:         partnership, AI, conference
  Notes:        Met at TechCrunch Disrupt 2025. Interested in
                partnership around AI automation. Stanford CS background.
  Added:        2025-03-15

Notice how you wrote a freeform message and OpenClaw extracted the structured fields. You don't need to fill out a form — just describe the person naturally.

Import existing contacts (optional)

If you have contacts in another system, you can bulk import them.

Export from Google Contacts as CSV, then import:

openclaw contacts import \
  --file ~/Downloads/google-contacts.csv \
  --format google-csv \
  --tag "google-import"

OpenClaw maps Google's fields (Name, Organization, Phone, Email, Notes) to its own schema and tags everything with google-import so you can filter later.

Deduplication

If you import from multiple sources, you may get duplicates. Ask OpenClaw to clean them up:

Deduplicate
openclaw chat "Find and merge duplicate contacts. Match by name and email."

It will show you potential duplicates and ask for confirmation before merging.

Search your contacts

Now that you have contacts, try searching:

Search by company
openclaw chat "Who do I know at Acme Corp?"
📇 Contacts at Acme Corp:

1. Lisa Chen — VP of Partnerships
   Last interaction: Added Mar 15 (TechCrunch Disrupt)
   Tags: partnership, AI, conference

2. David Park — Senior Engineer
   Last interaction: Email thread, Feb 2
   Tags: technical, referral

Other search examples:

Search by recency
openclaw chat "Who have I not talked to in over 3 months?"
Search by tag
openclaw chat "Show all contacts tagged investor"

For larger networks or team use, switch from JSON to a real database:

# SQLite (local, still portable)
openclaw skill add contacts --storage sqlite --db ~/crm.db

# Airtable (cloud, shareable)
openclaw skill add contacts --storage airtable \
  --base-id appXXXXXXXXX \
  --api-key keyXXXXXXXXX

The chat interface stays exactly the same — only the backend changes.

Add custom fields to your contact schema:

openclaw chat "Add a custom field 'relationship_strength'
with values: strong, medium, weak.
Also add 'last_gift_sent' as a date field."

OpenClaw will update the schema and start tracking these fields for new and existing contacts.

What You Have So Far

You now have a working contact database that you can:

  • Add to with natural language messages
  • Import into from Google, LinkedIn, or your phone
  • Search by name, company, tag, or recency

In the next lesson, you'll start logging interactions — meetings, calls, and coffees — so that every contact has a full history.

Knowledge Check

What format does OpenClaw use by default to store personal CRM contacts?