Zaptickdocs
Resource

Contacts

Maintain your customer directory — the source of truth for every outbound channel.

#About

Contacts are deduped by phone number within a workspace. You can store arbitrary metadata per contact — reach for this when you need CRM-ish fields like lifecycle stage or lifetime value.

#Endpoints

  • GET/contactsList contacts with pagination, tag and source filters.
  • POST/contactsCreate a new contact. Upserts by phone number.
  • PUT/contactsUpdate a contact (send phone or id to identify).
  • DELETE/contactsHard-delete a contact.
GET/contacts

List contacts with pagination, tag and source filters.

SDK
TypeScript
const { contacts, nextCursor } = await zaptick.contacts.list({
  limit: 50,
  tags: ['premium'],
  source: 'website',
});
Response
JSON
{
  "contacts": [
    {
      "id": "cnt_01J3...",
      "name": "Priya Sharma",
      "phone": "+919876543210",
      "email": "priya@example.com",
      "tags": ["premium", "repeat"],
      "metadata": { "orderCount": 4 },
      "createdAt": "2026-01-14T10:20:00.000Z"
    }
  ],
  "nextCursor": "cur_next"
}
POST/contacts

Create a new contact. Upserts by phone number.

SDK
TypeScript
const { contact } = await zaptick.contacts.create({
  name: 'Priya Sharma',
  phone: '+919876543210',
  email: 'priya@example.com',
  tags: ['premium'],
  metadata: { referralSource: 'newsletter' },
});
Request body
JSON
{
  "name": "Priya Sharma",
  "phone": "+919876543210",
  "email": "priya@example.com",
  "tags": ["premium"],
  "metadata": { "referralSource": "newsletter" }
}
Response
JSON
{ "contact": { "id": "cnt_01J3...", "name": "Priya Sharma" } }
PUT/contacts

Update a contact (send phone or id to identify).

SDK
TypeScript
await zaptick.contacts.update('cnt_01J3...', {
  tags: ['premium', 'vip'],
});
Request body
JSON
{
  "id": "cnt_01J3...",
  "tags": ["premium", "vip"]
}
DELETE/contacts

Hard-delete a contact.

SDK
TypeScript
await zaptick.contacts.delete('cnt_01J3...');