Lars Krüger

Lars Krüger

Last updated on Sep 26, 2026

The blacklist lets you block people and companies you do not want to contact: competitors, existing customers, partners or anyone who has explicitly asked not to be contacted.

You find it under Blacklist ↗ in the Data group. The subtitle sums up what happens: Blocked people and companies are not created, not shown and not contacted.

Who can do what

Everyone on the team can see the list. Only admins can change it. Everyone else sees the note Only admins can change the blacklist. You can view it for reference.

What you can block

Type Example What is blocked
Email max@example.com exactly this address
LinkedIn linkedin.com/in/max-example exactly this profile
Domain example.com every address and website on this domain, including subdomains
Company Example Ltd every contact with this company name

Values are stored in a uniform way. For email addresses, upper and lower case and additions like +newsletter do not matter. For LinkedIn and domains, the protocol, www and trailing paths are ignored. For companies the legal form is ignored, so "Example Ltd" and "Example Inc" count as the same company.

You cannot block freemail domains like gmail.com or web.de as a domain, as that would affect every private address. Block the individual email address instead. linkedin.com cannot be blocked as a domain either; block a LinkedIn profile by its link.

Adding entries

Under Add entry you enter one or more values in the Values field. Separate them with commas, semicolons, tabs or line breaks, so you can also paste a column from a spreadsheet.

You do not have to choose the type, inDeal detects it:

  • anything with @ becomes an Email,
  • a link to linkedin.com/in/ becomes a LinkedIn profile,
  • an address like example.com or https://example.com becomes a Domain,
  • everything else becomes a Company.

Below the field you see each value as a preview with its type. If the type is wrong, change it right on the entry. Values marked red are not saved: freemail domains, invalid values and links to LinkedIn pages other than profiles (they show Not recognized until you choose a type).

For company names with a comma: one entry per line. As soon as the field contains a line break, the comma only separates lists of email addresses, domains or LinkedIn links. "Miller, Smith & Co. LLC" then stays one entry, "a@example.com, b@example.com" become two.

The save button adds all valid values. The result shows how many were New, Duplicates, Invalid and Freemail. Duplicates are not an error.

Uploading a CSV

Under Upload CSV you drag a file onto the area or click Choose file. Delimiter and encoding are detected automatically.

Then you choose the matching column for each type, or Do not use. One row can provide several values, for example an email address and a company. Import starts the upload. Large files are processed in blocks of 5,000 values each.

At the end the summary shows how many values were New, Duplicates, Invalid and Freemail, and how many contacts were flagged.

What happens to existing contacts

Contacts that are already in your CRM are not deleted. They are only flagged as blocked so that nobody contacts them by mistake. In the lead list and the lead view you then see Blacklist next to the name. If you remove the entry again, the flag disappears too, unless another entry on the list still matches the contact.

Where the blacklist applies

  • Browser extension: Blocked profiles are not created and no credits are used.
  • CSV lead import: Blocked rows are skipped. The result shows how many were on the blacklist.
  • Adding a lead manually: If the email address or the company is on the blacklist, the lead is not created.
  • API and AI assistants: Blocked leads are not created, the request is rejected with status 409 and the code blacklisted.
  • Campaigns: Blocked contacts are neither created nor added to a campaign when your campaigns are synced.
  • Replies from campaigns: If a blocked person replies anyway, the reply is saved and the contact is flagged. The rating as positive or negative still runs, but no workflows are triggered for this contact.

Deleting entries

Select one or more entries in the list and click Delete. After confirming, the entries are removed. Matching contacts lose their flag unless another entry still matches them.

Use the search field and the All types filter to find single entries even in long lists.

Via API and MCP

You can also manage the blacklist without the page, for example from another system or with an AI assistant.

  • API: With an API key you list entries (GET /api/v1/blacklist), add one or up to 1,000 at once (POST /api/v1/blacklist, POST /api/v1/blacklist/bulk), remove them (DELETE /api/v1/blacklist/{id}) and check before contacting someone whether they are blocked (POST /api/v1/blacklist/check). You do not have to pass the type, it is detected just like in the field above.
  • AI assistants: If Claude, ChatGPT or another assistant is connected via MCP, a sentence like "Put competitor.com on the blacklist" or "Is max@example.com blocked?" is enough.

Both follow the same rules as the page: values are stored in a uniform way, freemail domains are rejected, existing contacts are only flagged.

Example: add an entry

curl -X POST https://app.indeal.ai/api/v1/blacklist \
  -H "Authorization: Bearer indeal_..." \
  -H "Content-Type: application/json" \
  -d '{ "value": "https://www.competitor.com" }'

Response (status 201; for an existing entry status 200 with "status": "duplicate"):

{ "status": "created", "kind_detected": true, "entry": { "id": "...", "kind": "domain", "value": "competitor.com", "raw": "https://www.competitor.com", "source": "manual", "created_at": "..." } }

Example: check before contacting

curl -X POST https://app.indeal.ai/api/v1/blacklist/check \
  -H "Authorization: Bearer indeal_..." \
  -H "Content-Type: application/json" \
  -d '{ "email": "max@competitor.com" }'
{ "blacklisted": true, "matches": [ { "kind": "domain", "value": "competitor.com", "via": "email" } ] }

"blacklisted": true with an empty matches is possible: it means a platform-wide block, such as an opt-out, that is not on your own list.

Error codes

Code Status Meaning
validation_error 422 value cannot be stored: freemail domain, invalid value or type not recognized
validation_error 400 invalid input, e.g. more than 1,000 entries at once or no field for the check
not_found 404 no entry with this ID
internal 503 check temporarily unavailable, try again later

Next