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

# Normalization by type

> How the API understands and standardizes email, phone, Telegram, and Instagram before saving.

<Tip>
  You can send the value **as the customer typed it** — mask, `@`, uppercase. The API normalizes before comparing and deduplicating.
</Tip>

## In brief

* Each `type` has simple formatting rules.
* Comparisons, search, and removal always use the **normalized value**.
* The API does **not create a contact** on its own — it only links `contactId` if the contact already exists in the workspace.

***

## Rules by type

| Type        | What you send            | How it is stored               | Channels blocked          |
| ----------- | ------------------------ | ------------------------------ | ------------------------- |
| `email`     | `User@Example.com`       | lowercase, valid format        | Email                     |
| `phone`     | `+55 (11) 99999-0000`    | E.164 (`+5511999990000`)       | SMS, WhatsApp, RCS, voice |
| `telegram`  | `@usuario` or numeric ID | username without `@` or peer   | Telegram                  |
| `instagram` | `@Perfil`                | lowercase username without `@` | Instagram                 |

Analogy: like standardizing a phone number before adding it to your address book — `(11) 99999-0000` and `5511999990000` become the **same entry**.

***

## `channel` field (optional)

Use `channel` to document **in which context** the suppression was created (e.g. `whatsapp`, `email`). The global rule per identity still applies:

* **Phone** blocks all phone channels, regardless of the `channel` provided.
* **Email** blocks email only.

***

## Examples in practice

### Phone with mask

Input:

```json theme={null}
{ "type": "phone", "value": "(11) 98888-7777" }
```

Stored as E.164. Blocks SMS, WhatsApp, RCS, and voice for that number.

### Email with uppercase

Input:

```json theme={null}
{ "type": "email", "value": "Cliente@Empresa.com.br" }
```

Stored as `cliente@empresa.com.br`.

### Telegram with @

Input:

```json theme={null}
{ "type": "telegram", "value": "@MeuBot" }
```

Stored as `meubot` (username) or numeric peer, depending on the value.

***

## Invalid value

If the value fails type normalization, the API responds **400** with `INVALID_SUPPRESSION_VALUE`. See [Troubleshooting](/en/suppressions-api/como-funciona/troubleshooting).

***

## Next steps

* [Quick Start](/en/suppressions-api/como-funciona/quick-start): add via API
* [Introduction](/en/suppressions-api/como-funciona/introducao): when to use suppression
