# Dublettenprüfung vor dem Import: Wer ist schon im CRM?

Bevor neue Kontakte ins CRM gehen, fragt ListPlus jede Zeile in deinem HubSpot ab – Kontakte per E-Mail, Firmen per Domain – und schreibt Ja oder Nein in eine Spalte. Dein Agent holt die Neuen als JSON ab oder übergibt nur sie; vorhandene Kontakte bleiben unberührt. Heute für HubSpot.

https://listplus.ai/de/gtm-workflows/dublettenpruefung-vor-dem-crm-import

## Eingabe und Verbindungen

Kontakte mit E-Mail-Adresse (Firmen mit Domain), ein verbundenes HubSpot-Konto im Workspace und eine Liste, die mit deiner Verbindung geteilt ist (Bearbeiten). Für die Spalte braucht die Verbindung das Recht „Einrichten“.

Ein HubSpot-Konto im Workspace (Pro, oder auf Basic als dein eines Werkzeug), die Liste mit Bearbeiten-Recht geteilt und für die Spalte das Recht „Einrichten“.

## Schritte

1. **Zeilen in die Liste** (Dein Agent · per Aufruf). add_records legt die Kontakte in die geteilte Liste. Doppelte Zeilen innerhalb der Datei fängt die Liste dabei schon ab.
2. **HubSpot-Spalte anlegen** (Dein Agent · per Aufruf). add_column mit kind „hubspot“ – Kontakte per E-Mail, Firmen per Domain. Die Spalte fragt jede Zeile in deinem HubSpot ab und schreibt Ja oder Nein.
3. **Neue Zeilen fragt sie von selbst** (ListPlus · läuft automatisch). Was später in die Liste kommt, fragt die Spalte ebenfalls ab – im Tagesbudget der Liste. Nach einem Export fragt sie die übergebenen Zeilen noch einmal.
4. **Nur die Neuen abholen** (Dein Agent · per Aufruf). query_records mit dem Filter „In HubSpot“ = „Nein“ liefert die neuen Kontakte als JSON – für deinen Stack, oder send_to_pipeline übergibt nur sie an deine CRM-Pipeline.
5. **Oder in der App exportieren** (Dein Team · manuell in ListPlus). Export nach HubSpot mit „Nur neue anlegen“: Vorhandene Kontakte bleiben unverändert, Firmen werden per Domain gefunden, bevor eine neue angelegt wird.

## Erwartetes Ergebnis im Beispiel

Von 24 Messekontakten kennt HubSpot 9; die 15 neuen kommen als JSON zurück. Nach dem Export fragt die Spalte die übergebenen Zeilen neu – jetzt alle 24 Ja, ohne eine einzige Dublette im CRM.

## Kosten und Grenzen

Die Spalte fragt HubSpot in Paketen ab: 1 Credits je Anfrage, eine Anfrage prüft bis zu 100 Zeilen – 500 Kontakte kosten 5 Credits (0,15 € im Pro-Tarif). Liste, Spalte und Abfrage kosten sonst nichts; eine Übergabe an eine Pipeline wird je Datensatz berechnet.

Abgeglichen wird per E-Mail bzw. Domain – eine Person mit einer anderen Adresse in HubSpot erkennt die Spalte nicht. Zeilen ohne E-Mail zählen als „nicht in HubSpot“. Andere CRMs gehen auf diesem Weg noch nicht.

## Agentenauftrag

Leg meine Messekontakte (CSV) in die Liste „Messe November“. Füge eine HubSpot-Spalte „In HubSpot“ für Kontakte per E-Mail hinzu. Gib mir dann alle Zeilen mit „Nein“ als JSON (Name, Firma, E-Mail) und sag mir, wie viele HubSpot schon kennt. Nichts nach HubSpot schreiben.

## Werkzeuge

`add_records`, `describe_setup`, `add_column`, `query_records`, `send_to_pipeline`

MCP: https://listplus.ai/mcp
REST: https://listplus.ai/a/v1/{action}
API: https://listplus.ai/a

## Beispielaufrufe

Die Aufrufe verwenden fiktive IDs. Nutze die IDs aus den Antworten deines Workspace.

```text
add_records({
  "list_id": "<shared_list_id>",
  "records": [
    {
      "first_name": "Markus",
      "last_name": "Brandt",
      "email": "markus.brandt@nordwind-logistik.de",
      "company_name": "Nordwind Logistik"
    }
  ]
})
add_column({
  "list_id": "<shared_list_id>",
  "columns": [
    {
      "kind": "hubspot",
      "title": "In HubSpot",
      "object": "contacts",
      "account_id": "<hubspot_account_id>"
    }
  ]
})
query_records({
  "list_id": "<shared_list_id>",
  "filter": {
    "In HubSpot": "Nein"
  },
  "columns": [
    "first_name",
    "last_name",
    "company_name",
    "email"
  ]
})
```
