# Get By Email

GET /api/v2/projects/{projectId}/crm/contacts/by-email/{email}

Looks a contact up by email address rather than distinct ID, the usual entry point when all you have is an email from a form or webhook. When more than one contact holds the address, returns the primary: a hard distinct ID over a `soft_` placeholder, then the most recently updated. Returns 404 if no contact matches.

## Request

- projectId: string, path, required — ID of the project that owns the contact.
- email: string, path, required — Email address to look up.

## Response

- 200: Successful response
  - createdAt: string, required
  - distinctId: string, required
  - id: string, required
  - projectId: string, required
  - properties: object, required
    - $_emailScoreActions: string
    - $_toDelete: boolean
    - $browser: string
    - $browserVersion: string
    - $city: string
    - $continent: string
    - $country: string
    - $countryCode: string
    - $device: string
    - $emailScore: number
    - $emailValidated: boolean
    - $emailValidationResult: string
    - $id: string
    - $initialReferrer: string
    - $initialReferringDomain: string
    - $initialUtmCampaign: string
    - $initialUtmContent: string
    - $initialUtmMedium: string
    - $initialUtmSource: string
    - $initialUtmTerm: string
    - $ip: string
    - $lastEmailValidatedAt: string
    - $lastIdentifiedAt: string
    - $lastSeen: string
    - …
  - toDelete: boolean, required
  - updatedAt: string, required
  - email: string
- 400: Invalid input data
- 401: Authorization not provided
- 403: Insufficient access
- 404: Not found
- 500: Internal server error
