contact_upsert
Create-or-merge a contact keyed on email-then-phone identity — the sync door the future desktop harness and ingest lanes write through. Matching probes email first, then phone; a hit MERGES only the fields you send (omitted fields keep their stored values, so a partial sync payload can never wipe a curated field), a miss creates. Status moves still obey the transition machine — an upsert cannot jump straight to vip. Accepts the same first-note/first-interaction composite children as contact_create.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| note | No | Log a first note in the SAME call — ONE call makes both. | |
| tags | No | ||
| No | |||
| notes | No | Alias of note. | |
| phone | No | ||
| source | No | ||
| status | No | ||
| address | No | ||
| company | No | ||
| interaction | No | Log the first interaction in the same call: {type, summary, occurred_at?} — occurred_at takes "YYYY-MM-DD". | |
| last_contact_at | No | ||
| first_interaction | No | Alias of interaction. |