> ## Documentation Index
> Fetch the complete documentation index at: https://docs.waply.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Import, segment, and manage contacts in Waply

> Import contacts via CSV upload or CRM sync, enrich them with custom fields and tags, track lifecycle stages, and view each contact's full history.

Your contact list is the foundation of everything you do in Waply. Every conversation, broadcast, and automation runs against your contacts — so keeping them organized and up to date pays off across the whole platform. Waply gives you flexible tools to import contacts from any source, enrich them with custom data, and segment them precisely for targeting and routing.

## Import contacts

You can populate your contact list by uploading a CSV file, connecting a CRM, or letting Waply create contacts automatically from incoming conversations.

<Tabs>
  <Tab title="CSV import">
    <Steps>
      <Step title="Prepare your CSV">
        Your file must include at minimum a **phone number** column for WhatsApp contacts, or an identifier column for other channels. Column headers become field names — use clear, consistent names like `first_name`, `email`, `plan`, and `country`. Remove duplicate rows before uploading.
      </Step>

      <Step title="Open Contacts import">
        Go to **Contacts** → **Import** and click **Upload CSV**.
      </Step>

      <Step title="Map columns to fields">
        Waply detects your column headers and maps them to existing contact fields automatically. Review each mapping and adjust any that were not detected correctly. You can also create new custom fields on the fly during this step.
      </Step>

      <Step title="Handle duplicates">
        Choose what Waply should do if an imported contact matches an existing record (matched by phone number or email): **Skip** the duplicate, **Update** the existing contact with the new values, or **Create a new record**.
      </Step>

      <Step title="Confirm the import">
        Review the summary — total rows, matched records, new contacts, and any rows with errors — then click **Import**. Waply processes the file in the background and notifies you when complete.
      </Step>
    </Steps>

    <Tip>
      Download the **CSV template** from the import page to see the expected format before preparing your file. This avoids mapping errors and speeds up the import.
    </Tip>
  </Tab>

  <Tab title="CRM and e-commerce sync">
    Waply integrates with popular CRMs and e-commerce platforms to sync contacts automatically. Once connected, contacts created or updated in your external system appear in Waply in real time, and changes made in Waply can be written back.

    Supported integrations include HubSpot, Salesforce, Shopify, WooCommerce, and any tool connected via Zapier or the Waply API. See the [Integrations](/integrations/overview) section for setup instructions specific to each platform.

    During sync setup you choose which fields to map between systems and define sync direction: one-way (external → Waply) or two-way.
  </Tab>

  <Tab title="Auto-capture from conversations">
    When a contact messages you for the first time on any channel, Waply creates a contact record automatically using the information available from that channel — typically phone number (WhatsApp) or account name (Instagram, Facebook Messenger). You can enrich these auto-created contacts with additional data manually or through a flow.
  </Tab>
</Tabs>

## Custom fields

Custom fields let you store any additional data about a contact that matters to your business — plan type, industry, order count, preferred language, or anything else.

<AccordionGroup>
  <Accordion title="Create a custom field">
    Go to **Settings** → **Contact Fields** and click **Add field**. Enter a field name, choose a field type (text, number, date, dropdown, or boolean), and optionally set a default value. The field immediately becomes available on all contact profiles and in flow conditions, broadcast filters, and AI Agent actions.
  </Accordion>

  <Accordion title="Field types">
    * **Text** — freeform string, e.g., `Company name`, `Notes`
    * **Number** — integer or decimal, e.g., `Order count`, `Monthly spend`
    * **Date** — calendar date, e.g., `Trial end date`, `Last purchase`
    * **Dropdown** — fixed set of options you define, e.g., `Plan: Starter / Growth / Enterprise`
    * **Boolean** — true/false toggle, e.g., `Opted into SMS`, `VIP customer`
  </Accordion>

  <Accordion title="Custom field limits by plan">
    * **Starter** — up to 50 custom fields
    * **Growth** — unlimited custom fields
    * **Enterprise** — unlimited custom fields

    If you are on the Starter plan and need more than 50 fields, upgrade under **Settings** → **Billing**.
  </Accordion>
</AccordionGroup>

## Tags

Tags are free-form labels you apply to contacts for grouping and filtering. Unlike lifecycle stages — which represent a position in a fixed pipeline — tags can represent anything: campaign participation, product interest, support category, or any other attribute you want to filter by later.

* Add a tag from the contact's profile by clicking **+ Add tag** and typing a name.
* Tags are also added and removed through the Flow Builder's **Add tag** and **Remove tag** actions.
* The AI Agent can apply tags based on conversation content when you grant it that action.
* Filter your contact list or broadcast audience by one or more tags at any time.

<Note>
  Tags are shared across your entire workspace. Any agent can see and use any tag. To keep things tidy, agree on a tagging convention with your team before adding large numbers of contacts.
</Note>

## Lifecycle stages

Lifecycle stages track where a contact is in your customer journey. Waply includes default stages that you can rename, reorder, or extend.

| Default stage | Typical meaning                                                       |
| ------------- | --------------------------------------------------------------------- |
| Lead          | A contact who has shown initial interest but has not been qualified.  |
| Qualified     | A lead who meets your criteria and is ready for a sales conversation. |
| Customer      | A contact who has made a purchase or signed up.                       |
| Churned       | A former customer who has cancelled or gone inactive.                 |

You can update a contact's lifecycle stage manually from their profile, through a flow action, or via the AI Agent. Lifecycle stage is available as a filter in broadcasts and as a condition in flow branches.

## View contact timeline

Every contact has a timeline that shows all activity Waply has recorded for them — every message sent and received across all channels, flow executions, field changes, tag updates, broadcasts received, and internal notes.

To open the timeline, click a contact in the **Contacts** list to open their profile, then scroll down to the **Timeline** section. The timeline is sorted chronologically with the most recent activity at the top. Use the filter icons to show only specific event types — for example, only messages or only field changes.

<Tip>
  The contact timeline is the fastest way to get context before picking up a conversation. Open it from within the inbox by clicking the contact's name at the top of the thread panel.
</Tip>

## Block and unsubscribe contacts

<AccordionGroup>
  <Accordion title="Block a contact">
    Blocking a contact prevents them from sending messages that reach your inbox. Any incoming message from a blocked contact is silently dropped. To block a contact, open their profile, click the **Actions** menu (three-dot icon), and select **Block contact**.

    Blocked contacts remain in your contact list and can be unblocked at any time from the same menu.
  </Accordion>

  <Accordion title="Unsubscribe a contact">
    Unsubscribing a contact opts them out of broadcast campaigns while still allowing them to send messages to your inbox. Waply excludes unsubscribed contacts from all broadcast audience filters automatically. To unsubscribe a contact manually, open their profile and toggle **Broadcast opt-out** to on.

    Contacts can also unsubscribe themselves by replying with **STOP** (or a keyword you configure) to any broadcast.
  </Accordion>
</AccordionGroup>

<Warning>
  Blocking or unsubscribing a contact is reversible, but any messages they sent while blocked are permanently discarded. Only block contacts you are certain you do not want to hear from again.
</Warning>
