CRM
Contacts
People at named accounts: identity, contact details, role, decision-maker flag.
Schema
The canonical field set, printed as it ships.
9 fields with multilingual hints (DE / FR / IT / EN / ES) and field-level validators. Any source column that resolves to one of these is mapped by the cascade — most of them on the deterministic layers, with no LLM call.
contacts_v1- fields
- 9
- required
- 1
- validated
- 2
- hints
- 30
| Canonical column | Type | Required | Validators | Header hints the cascade matches |
|---|---|---|---|---|
id | string | yes | — | matched on the column name |
account_id | string | — | — | kontocompteaccountcuenta |
first_name | string | — | — | vornameprenomprénomnombregiven name |
last_name | string | — | — | nachnamenomcognomeapellidosurname |
email | — | email | e-mailmailcorreo | |
phone | phone | — | phone | telefontéléphonetelefonophonemobile |
title | string | — | — | titeltitretitolocargojob title |
is_decision_maker | boolean | — | — | entscheiderdécideurdecisor |
last_contacted_at | date | — | — | matched on the column name |
Read the same definition as JSON at GET /v1/templates/contacts_v1. A hint match resolves on layer 2 — no LLM call, no token spend, just the flat per-map fee. Hover a validator id to see what it checks.
- 9 canonical fields
- 1 required
- 2 validated
- 30 header hints
- CRM pack
Try it
A real file, a real call, one template id.
8 rows, DE headers, decision-maker flag. Fully synthetic — safe to share, commit, and run in CI.
curl -X POST https://api.adaptivmapr.com/v1/uploads \
-H "Authorization: Bearer $ADAPTIVMAPR_API_KEY" \
-F "file=@contacts_sample.csv" \
-F "template=contacts_v1"adaptivmapr.match_headers({
template_id: "contacts_v1",
headers: ["id", "account_id", "first_name", "last_name"]
})Ready when you are
Put contacts in production — without shipping raw records.
Schema-only mapping leaves only headers and a handful of clamped samples. Add full-data when you need row-level AI, routed in-region under a BAA.