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

# Create a visitor

> Requires visitor.create. X-Api-Key is required; sessions are not accepted. Omit projectId only when the key is restricted to exactly one project; global and multiple-project keys must provide it. X-Team-Id is unnecessary and must match the key team when supplied. Unspecified contact, address and attribution values are empty strings. utmTerm and utmContent are accepted but are not returned in this public projection.



## OpenAPI

````yaml https://api.trackup.me/openapi.json post /v1/visitors
openapi: 3.1.0
info:
  title: Trackup API
  description: >-
    API-key-accessible Trackup operations. Send your key in the `X-Api-Key`
    header.


    Keys belong to a team. `X-Team-Id` is not required; if supplied, it must
    match that team.


    Each operation lists its required key permission. The key creator must
    remain a team member and normally hold that permission. The ingest-only
    permissions `visitor.create`, `conversion.create`, and `request.create` do
    not need to be held by the creator.


    Project access and selection are described per operation. Session-only
    account, administration and OAuth operations are not part of this reference.


    The same operations are available as MCP tools at `/mcp` (Streamable HTTP).
    Authenticate with `X-Api-Key` or connect through OAuth, which issues an API
    key on consent.


    Schema validation errors return HTTP 422 with an `errors` object. Other
    errors generally contain `error` and `message`; operation-specific responses
    describe exceptions.
  version: 1.0.0
servers:
  - url: /
    description: Current API environment
security:
  - ApiKey: []
paths:
  /v1/visitors:
    post:
      tags:
        - Ingest
      summary: Create a visitor
      description: >-
        Requires visitor.create. X-Api-Key is required; sessions are not
        accepted. Omit projectId only when the key is restricted to exactly one
        project; global and multiple-project keys must provide it. X-Team-Id is
        unnecessary and must match the key team when supplied. Unspecified
        contact, address and attribution values are empty strings. utmTerm and
        utmContent are accepted but are not returned in this public projection.
      operationId: createVisitor
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                projectId:
                  type: string
                  format: uuid
                utmSource:
                  type: string
                utmMedium:
                  type: string
                utmCampaign:
                  type: string
                utmTerm:
                  type: string
                utmContent:
                  type: string
                clickId:
                  type: string
                name:
                  type: string
                email:
                  type: string
                phone:
                  type: string
                addressStreet:
                  type: string
                addressCity:
                  type: string
                addressState:
                  type: string
                addressZip:
                  type: string
                addressCountry:
                  type: string
            examples:
              singleProject:
                summary: Synthetic example for a key restricted to one project
                value:
                  name: Example visitor
                  email: visitor@example.test
                  utmSource: newsletter
                  addressCountry: BR
              explicitProject:
                summary: Synthetic example selecting a project
                value:
                  projectId: 22222222-2222-4222-8222-222222222222
                  name: Example visitor
                  email: visitor@example.test
                  utmSource: newsletter
                  addressCountry: BR
        required: false
      responses:
        '201':
          description: Created visitor.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IngestVisitor'
        '400':
          description: Malformed request or an invalid operation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '401':
          description: The X-Api-Key header is missing or the API key is invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '403':
          description: >-
            The key is expired, revoked, lacks permission, or its creator no
            longer has the required team access. A conflicting X-Team-Id is also
            rejected.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '404':
          description: >-
            The requested resource was not found or is outside the permitted
            scope.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '422':
          description: >-
            Invalid input. Each field path maps to its first validation message;
            _form identifies an object-level error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationError'
        '500':
          description: An unexpected error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
components:
  schemas:
    IngestVisitor:
      type: object
      properties:
        id:
          type: string
        createdAt:
          type: string
          description: ClickHouse UTC timestamp.
        name:
          type: string
        email:
          type: string
        phone:
          type: string
        address:
          type: object
          properties:
            street:
              type: string
            city:
              type: string
            state:
              type: string
            zip:
              type: string
            country:
              type: string
          required:
            - street
            - city
            - state
            - zip
            - country
        utmSource:
          type: string
        utmMedium:
          type: string
        utmCampaign:
          type: string
        clickId:
          type: string
      required:
        - id
        - createdAt
        - name
        - email
        - phone
        - address
        - utmSource
        - utmMedium
        - utmCampaign
        - clickId
      example:
        id: 11111111-1111-4111-8111-111111111111
        createdAt: '2026-06-01 12:00:00.000'
        name: Example
        email: visitor@example.test
        phone: ''
        address:
          street: Example street
          city: São Paulo
          state: SP
          zip: '01000000'
          country: BR
        utmSource: newsletter
        utmMedium: email
        utmCampaign: example-campaign
        clickId: ''
    ApiError:
      type: object
      properties:
        error:
          type: string
        message:
          type: string
      required:
        - error
        - message
      additionalProperties: true
    ValidationError:
      type: object
      properties:
        errors:
          type: object
          additionalProperties:
            type: string
      required:
        - errors
  securitySchemes:
    ApiKey:
      type: apiKey
      in: header
      name: X-Api-Key

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.