Docs

Core Concepts

Contacts

Contacts are the people you send emails to. Each contact has an email address, optional profile information, and subscription preferences that determine which emails they receive.

Contact fields

Every contact has built-in fields for common data and supports custom properties for any additional information you need to store.

Built-in fields

These fields are available on every contact:

FieldTypeRequiredDescription
emailstringYesThe contact's email address. Must be unique within a workspace.
firstNamestringNoThe contact's first name. Max 100 characters.
lastNamestringNoThe contact's last name. Max 100 characters.
phonestringNoPhone number in any format. Max 50 characters.
countrystringNoTwo-letter country code (e.g., US, GB).
citystringNoThe contact's city. Max 100 characters.
timezonestringNoIANA timezone (e.g., America/New_York).
statusenumAutoSubscription status. Defaults to SUBSCRIBED.
subscribedAtdatetimeAutoWhen the contact subscribed.
unsubscribedAtdatetimeAutoWhen the contact unsubscribed (if applicable).

Custom properties

Store additional data using custom properties. You define properties at the workspace level, and they become available on all contacts. Properties have three types:

  • String – Text up to 255 characters
  • Number – Decimal numbers
  • Date – Stored as Unix timestamps in milliseconds

See Custom Properties for setup instructions.

Contact status

A contact's status determines whether they receive your emails. Kibamail tracks six statuses:

StatusReceives emailsDescription
SUBSCRIBEDYesActive subscriber. Receives all emails for their subscribed topics.
UNCONFIRMEDNoAwaiting double opt-in confirmation. Created via a form with double opt-in enabled.
UNSUBSCRIBEDNoOpted out of emails. Can resubscribe if they change their mind.
BOUNCEDNoEmail address bounced. The mailbox doesn't exist or is full.
COMPLAINEDNoMarked your email as spam. Sending to this contact risks your deliverability.
ARCHIVEDNoManually archived. Hidden from lists but data preserved.

Statuses change automatically based on email events. A hard bounce sets the status to BOUNCED. A spam complaint sets it to COMPLAINED. You can manually change status for SUBSCRIBED, UNSUBSCRIBED, and ARCHIVED.

Managing contacts

Adding contacts

Create contacts in three ways:

  • Dashboard – Go to Contacts → Add Contact and enter their email address.
  • API – Send a POST request to /v1/contacts with the contact data.
  • Forms – Embed a sign-up form on your website. See Forms.

Here's an API example:

curl -X POST https://api.kibamail.com/v1/contacts \
  -H "Authorization: Bearer kb_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "sarah@acme.com",
    "firstName": "Sarah",
    "lastName": "Chen",
    "topics": ["topic_newsletter", "topic_product_updates"],
    "properties": {
      "Company": "Acme Inc",
      "Plan": "Enterprise"
    }
  }'

See the Contacts API Reference for all options.

Importing contacts

Import contacts from a CSV file to migrate from another platform or add contacts in bulk.

  1. Go to Contacts → Import
  2. Upload your CSV file
  3. Map CSV columns to contact fields
  4. Choose which topics to subscribe imported contacts to
  5. Start the import

During import, you can choose to update existing contacts if the email already exists, or skip duplicates. See Contact Imports for details.

Updating contacts

Update a contact's information through the dashboard or API. All fields except email are optional when updating.

curl -X PUT https://api.kibamail.com/v1/contacts/contact_abc123 \
  -H "Authorization: Bearer kb_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "firstName": "Sarah",
    "properties": {
      "Plan": "Pro"
    }
  }'

Deleting contacts

Deleting a contact permanently removes their record and all associated data:

  • Topic subscriptions
  • Segment memberships
  • Form submissions
  • Automation run history

This action cannot be undone. If you need to keep the data but stop sending emails, change the contact's status to ARCHIVED instead.

Topics and subscriptions

Topics let contacts choose which types of emails they want to receive. A contact can subscribe to multiple topics. When you send a broadcast, you target a topic, and only contacts subscribed to that topic receive the email.

Each contact-topic relationship has its own subscription status (SUBSCRIBED or UNSUBSCRIBED). This is separate from the contact's overall status.

Example: A contact might be:

  • Subscribed to "Product Updates" (receives product announcement emails)
  • Unsubscribed from "Newsletter" (doesn't receive weekly newsletter)

See Topics to learn how to set up topics.

Segments

Segments group contacts based on their data. Use segments to target specific audiences with your broadcasts.

Kibamail supports two segment types:

  • Dynamic segments – Automatically include contacts matching your conditions. As contact data changes, segment membership updates automatically.
  • Static segments – Manually add contacts. Membership only changes when you explicitly add or remove contacts.

Filter contacts by any built-in field or custom property. Combine conditions with AND/OR logic.

See Segments to create your first segment.

Copyright © 2026 Kibamail.·Privacy Policy