Skip to main content
OpenBunny maintains a contact system that links identities across messaging channels into unified profiles.

How it works

When the agent processes a conversation, it identifies the sender and either matches them to an existing contact or creates a new one. Contacts can have multiple identities across different channels.

Identities

Each contact can have identities from any channel:
ChannelIdentity format
Slackslack:U0123ABC
WhatsAppwhatsapp:15551234567
iMessageimessage:user@example.com
Telegramtelegram:123456789
Emailemail:user@example.com

Contact profiles

Contacts are stored with:
  • Name and slug (URL-friendly identifier)
  • Organization and role
  • Email and phone
  • Identity list (channel-specific IDs)
  • Profile notes (markdown, stored in data/contacts/)

Agent tools

The LLM agent can manage contacts during conversation processing:
  • lookup_contact — search by name or identity
  • upsert_contact — create or update a contact profile
  • link_contact_identity — add a new channel identity to an existing contact
  • merge_contacts — consolidate two duplicate contacts into one

API

# List all contacts
curl http://localhost:3100/contacts

# Get a specific contact
curl http://localhost:3100/contacts/john-doe

# Create a contact
curl -X POST http://localhost:3100/contacts \
  -H "Content-Type: application/json" \
  -d '{"name": "John Doe", "email": "john@example.com"}'