Skip to main content

๐Ÿ‘ฅ 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โ€‹

FieldDescription
nameDisplay name โ€” extracted from provider data or entered manually
emailEmail address โ€” used to match inbound email senders
phonePhone number โ€” used to match WhatsApp and SMS senders
tagsJSON array of tag strings for segmentation
notesFree-text field for agent notes
external_idsJSON object mapping channel types to provider-specific IDs

Contact Matching (Auto-Deduplication)โ€‹

When a new inbound message arrives:

  1. If sender_phone is present: match by contacts.phone
  2. Else if sender_email is present: match by contacts.email
  3. Else: match by external_ids JSON path
  4. 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โ€‹

KeySource
whatsappSender's phone number
telegram_chat_idTelegram chat.id
viberViber sender.id
facebookFacebook PSID
instagramInstagram PSID
smsSender's phone number