Create Contact
create_contactCreate a new contact in Tidio using a unique external ID and contact details like email, phone, or name. Supports custom properties and email consent without overwriting existing data.
Instructions
Create a new contact in Tidio. Always creates a new contact; existing data is never overwritten. At least one of email, first_name, last_name, or phone must be provided.
distinct_id is required and identifies the contact in your external system. If the user has not supplied a distinct_id, ASK them for it. Do NOT invent one or copy it from any other field — not from email, phone, name, email_consent, or any custom property.
Args: distinct_id (str): Required. ID of the contact in the external system. Maximum 55 characters. Must be a real external-system identifier provided by the user. Never copy it from email, phone, name, or any other property. Ask the user if it is missing. email (str, optional): Contact email address in RFC822 format. phone (str, optional): Contact phone number. first_name (str, optional): Contact's first name. last_name (str, optional): Contact's last name. email_consent (str, optional): Email consent status. Must be one of: 'subscribed', 'unsubscribed'. properties (list, optional): List of custom contact properties. Each item must be a dict with 'name' (max 128 chars) and 'value' (max 1000 chars) fields. Example: [{"name": "plan", "value": "premium"}, {"name": "score", "value": 42}]
Returns: Dict: A dictionary containing the created contact ID.
Raises: ValueError: If any of the provided arguments have invalid values.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| No | |||
| phone | No | ||
| last_name | No | ||
| first_name | No | ||
| properties | No | ||
| distinct_id | Yes | ||
| email_consent | No |