# Contact history — who in your workspace already contacted a person

Source: https://listplus.ai/en/help/working-in-a-list/contact-history
Last updated: 2026-10-31

Your workspace keeps one **contact history**: every contact attempt made
from ListPlus is noted once, for the whole workspace, whatever list it came
from. It answers the question "has a colleague or I already contacted this
person?" — the Outreach panel uses it to skip people, and contact history
columns show it in any list.

## What counts as a contact attempt

- **A LinkedIn invitation** you confirm with **Sent — next contact** in the
  Outreach panel (see "[LinkedIn outreach — send connection invitations from
  a list](https://listplus.ai/en/help/working-in-a-list/linkedin-outreach)").
- **An e-mail draft** that an **E-mail draft** pipeline put into a
  mailbox. A draft counts as soon as it exists, even if nobody ever sends
  it.
- **A contact added to a lemlist or Instantly campaign** by a pipeline,
  noted as an e-mail.

Only a delivery that went through counts: entries that failed, are held
by the data check or are still waiting are not contact attempts. A second
draft that an E-mail draft pipeline skips because the address already has
one is not counted again. Deliveries to a CRM, to Slack, to Google Sheets,
to your own webhook or to other apps are **not** contact attempts — they
pass a record on, they don't reach the person.

For every attempt the history keeps the channel (LinkedIn invitation,
e-mail draft or e-mail), when it happened, which member did it, the list and record it came from, the pipeline, and the person's name
at that time. It does not keep the note or the e-mail text — those stay with
the row (the **Record** panel's **Contact history** section shows what was
sent from that row in the Outreach panel).

## How ListPlus recognises the same person

A person is recognised by their **LinkedIn profile address**
(linkedin.com/in/…) and by their **e-mail address**. When the same person
is in another list with the same profile or the same address, the history
finds them there too. Names and companies are never used to match people.

## Where you see it

- **Outreach panel:** people someone in the workspace already invited on
  LinkedIn are skipped (you can include them anyway), and the floating
  window says when, how, by whom ("you" or "a colleague") and in which list
  a person was contacted before.
- **Contact history columns** in any contact list (below).

ListPlus doesn't see replies or accepted invitations; the history only
holds what was sent from ListPlus.

## Add a contact history column

1. In a list, click **+ Column** next to the search field (or **⋯** →
   **Add Column...**).
2. In **New column**, pick **Contact history** (Kontaktverlauf) and click
   **Choose what it shows**.
3. Choose what the column shows for each person:
   - **Last contact** (Letzter Kontakt) — the date,
   - **Contacted via** (Kontaktiert über) — the channels, e.g. LinkedIn,
     E-mail draft,
   - **Contacted by** (Kontaktiert von) — the team member who made the last contact,
   - **Number of contacts** (Anzahl Kontakte) — how often.
4. For **Last contact** and **Number of contacts**, pick a **Channel**:
   **Any channel**, **LinkedIn** or **E-mail (incl. drafts)**.
5. Keep or change the **Column name** and click **Create Column**.

The kind is offered in contact lists that have a LinkedIn or an e-mail
column. The column fills by itself, costs no credits and is read-only —
you can't type into it. Like a formula or score column its values are
stored in the list, so you can filter and sort by them, export them and use
them in triggers and in a pipeline's data check.

**When it updates:**

- Right after a send from this list — a LinkedIn invitation from the
  Outreach panel or a pipeline delivery of these rows — the rows concerned
  update within a few seconds.
- A colleague's contact from **another** list shows **when you open this
  list** the next time.
- A pipeline's data check always reads the history as it is at that
  moment, also contacts made from other lists.

## Recipe: hand a contact to a pipeline after the LinkedIn invitation

1. Add a contact history column: **Last contact**, channel **LinkedIn**
   (its default name is "LinkedIn invited").
2. Open **Tools** in the list header → **Automate & connect** → **Triggers** and create a trigger: **When** "a
   record is new or was changed" ("Conditions met"), condition: that
   column **is filled**.
3. Under **Then**, choose **Hand over to pipeline** and pick the pipeline —
   for example an E-mail draft pipeline for the follow-up mail.

As soon as you confirm an invitation, the column gets its date and the
trigger hands the record over; a record goes to the same pipeline only
once. Pick the channel **LinkedIn**, not **Any channel**: with any channel,
people who only got an e-mail (for example from that pipeline itself or
another one) would match too. Setting up triggers is for the workspace's
owner and admins (see "[Triggers — hand records on automatically](https://listplus.ai/en/help/working-in-a-list/list-triggers)").

## Who sees it, how long it's kept

- Every member of the workspace sees every member's contact attempts —
  that is the point of it.
- An attempt is kept for **365 days**, and the history keeps the **last 10
  attempts** per person.
- The history is stored with your workspace, in Frankfurt like your lists,
  and deleted with the workspace. If a member leaves or deletes their
  account, their attempts stay in the history.
- A single entry can't be removed in the app yet. To remove one — for
  example a draft that was never sent, or everything about a person who
  asked to be erased — email support@listplus.ai.

## For advanced users

- The LinkedIn identity is the profile name in `linkedin.com/in/…`, case
  ignored; the e-mail identity is the address in lower case. A row with
  both is found by either. A person under a different profile address (for
  example the long id form some exports use) is a different identity.
- **Number of contacts** counts the attempts still kept (at most 10, within
  365 days) and shows **0** for someone never contacted. To filter people
  never contacted, use **Last contact** "is empty".
- "E-mail (incl. drafts)" covers both e-mail drafts and campaign adds.
- For "days since the last contact", add a formula on the **Last contact**
  date — a stored number of days would be out of date the next day.
- **Contacted by** shows the name of the member who made the last contact; it can be empty for a member
  whose account no longer exists.

**Related topics:** linkedin-outreach · columns-formulas-ai-columns ·
list-triggers · pipelines-overview · where-is-my-data.

## FAQ

### What is the contact history in ListPlus?

It is one log for your whole workspace of every contact attempt made from ListPlus — LinkedIn invitations confirmed in the Outreach panel and e-mails from E-mail draft, lemlist and Instantly pipelines — whatever list they came from. It answers "has a colleague or I already contacted this person?": the Outreach panel skips people already invited on LinkedIn, and contact history columns show it in any list.

### What counts as a contact attempt in the contact history?

A LinkedIn invitation you confirm as sent in the Outreach panel, an e-mail draft an E-mail draft pipeline created, and a contact a pipeline added to a lemlist or Instantly campaign — only once the delivery went through. Deliveries to a CRM, Slack, Google Sheets, a webhook or other apps don't count, because they don't reach the person. Replies and accepted invitations are not tracked.

### Does an e-mail draft count as contacted even if I never send it?

Yes. A draft counts as soon as the pipeline has put it into the mailbox, because ListPlus can't see whether it was sent later. A second draft that the same pipeline skips because the address already has one is not counted again.

### How does ListPlus know it's the same person in another list?

By the LinkedIn profile address (linkedin.com/in/…) and the e-mail address: a person with the same profile or the same address in another list is the same person. Names and companies are never used to match.

### How do I add a column that shows when someone was last contacted?

Click **+ Column** in the list header, pick **Contact history** → **Choose what it shows**, choose **Last contact**, **Contacted via**, **Contacted by** or **Number of contacts** (for Last contact and Number of contacts also a Channel: Any channel, LinkedIn or E-mail (incl. drafts)), and click **Create Column**. The kind is offered in contact lists with a LinkedIn or e-mail column.

### When does a contact history column update?

Right after a send from this list, the rows concerned update within a few seconds. A colleague's contact from another list shows when you open this list the next time. A pipeline's data check always reads the history as it is at that moment.

### Do contact history columns cost credits, and can I edit them?

They cost no credits and fill by themselves. They are read-only, but their values are stored in the list, so you can filter, sort and export them and use them in triggers.

### Can a trigger hand a contact to a pipeline after I invited them on LinkedIn?

Yes: add a contact history column **Last contact** with channel **LinkedIn**, then a trigger "a record is new or was changed" with that column **is filled** and the action **Hand over to pipeline**. Pick LinkedIn, not Any channel — otherwise people who only got an e-mail match too. A record goes to the same pipeline only once.

### Who can see the contact history and how long is it kept?

Every member of the workspace sees every member's attempts. Each attempt is kept for 365 days, with the last 10 per person, stored with your workspace in Frankfurt and deleted with the workspace; the person's name at the time is kept with the attempt.

### Can I delete an entry from the contact history?

Not in the app yet. To remove an entry — for example a draft that was never sent — or everything about a person who asked to be erased, email support@listplus.ai.
