๐ฅ Contacts
Contacts are the customer records in PulseHub. Every conversation is linked to a contact, and every inbound message either matches an existing contact or creates a new one.
Contact Fieldsโ
| Field | Description |
|---|---|
name | Display name โ extracted from provider data or entered manually |
email | Email address โ used to match inbound email senders |
phone | Phone number โ used to match WhatsApp and SMS senders |
tags | JSON array of tag strings for segmentation |
notes | Free-text field for agent notes |
external_ids | JSON object mapping channel types to provider-specific IDs |
Contact Matching (Auto-Deduplication)โ
When a new inbound message arrives:
- If sender_phone is present: match by
contacts.phone - Else if sender_email is present: match by
contacts.email - Else: match by
external_idsJSON path - If no match: create a new contact
When a match is found, PulseHub updates the external_ids field to unify the customer across channels.
Tagsโ
- Contact tags describe the person:
[vip, enterprise, newsletter] - Conversation tags describe the issue:
[urgent, billing, bug-report]
Both are stored as JSON arrays.
External IDs Referenceโ
| Key | Source |
|---|---|
whatsapp | Sender's phone number |
telegram_chat_id | Telegram chat.id |
viber | Viber sender.id |
facebook | Facebook PSID |
instagram | Instagram PSID |
sms | Sender's phone number |