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

# Update an existing contact by email

> This endpoint allows you to update an existing contact in HubSpot, identified by email.

Use case for this endpoint: Because this method allows you to update contact properties, it could be used by an integration to synchronize contact data from an external CRM by email address.

Note: This endpoint will return a 404 if there is no existing record with the specified email address. If you're looking to automatically create or update contacts using an email address, you can use this endpoint.

### Property notes

There are some properties that are worth noting in terms of updating a contact:

- **Lifecycle Stage** - This property denotes the stage at which the contact is in. Stages include 'subscriber', 'lead', 'marketingqualifiedlead', 'salesqualifiedlead', 'opportunity' and 'customer'. These values are described in HubSpot's Contacts application under "Contacts > Manage Settings > Lifecycle Stages". Once a contact does become a "customer", it will be reflected in HubSpot's Sources application as such.
- **Please Note** The Lifecycle stage is not designed to move backwards. If you need to set this property to an previous stage, you will first need to set the value to "" (an empty string) and then set the new Stage
- **HubSpot Score** - This property cannot be updated through the API.
- **Email address** - It is possible to update the email address of contacts using this endpoint. The current email address must be used in the URL to identify the existing contact in HubSpot, and the new email would go in the JSON in the request body.
- If a property doesn't exist yet, you can create a new custom property through the API by using the create property method.

export const ScopesList = ({scopes = [], description = "この API には、次のいずれかのスコープが必要です。"}) => {
  if (!scopes || scopes.length === 0) {
    return null;
  }
  const sortedScopes = scopes.sort((a, b) => a.localeCompare(b));
  return <div>
      <div className="text-sm mb-2">{description}</div>
      <div>
        {sortedScopes.map((scope, index) => <div key={index}>
            <code>
              <span className="text-xs">{scope}</span>
            </code>
          </div>)}
      </div>
    </div>;
};

<Accordion title="Scope requirements">
  <ScopesList scopes={['crm.objects.contacts.read', 'content', 'crm.objects.contacts.write']} />
</Accordion>


## OpenAPI

````yaml specs/legacy/v1/crm-contacts-v1.json POST /contacts/v1/contact/email/{email}/profile
openapi: 3.0.0
info:
  title: CRM Contacts API v1
  version: 1.0.0
  description: Use the contact lists API to create and manage contact lists.
  x-hubspot-introduction: Use the contact lists API to create and manage contact lists.
  x-hubspot-api-use-case: >-
    Retrieve a contact list by ID to bring that contact data into your external
    system.
servers:
  - url: https://api.hubapi.com
    description: HubSpot API Server
security: []
paths:
  /contacts/v1/contact/email/{email}/profile:
    post:
      summary: Update an existing contact by email
      description: >-
        This endpoint allows you to update an existing contact in HubSpot,
        identified by email.


        Use case for this endpoint: Because this method allows you to update
        contact properties, it could be used by an integration to synchronize
        contact data from an external CRM by email address.


        Note: This endpoint will return a 404 if there is no existing record
        with the specified email address. If you're looking to automatically
        create or update contacts using an email address, you can use this
        endpoint.


        ### Property notes


        There are some properties that are worth noting in terms of updating a
        contact:


        - **Lifecycle Stage** - This property denotes the stage at which the
        contact is in. Stages include 'subscriber', 'lead',
        'marketingqualifiedlead', 'salesqualifiedlead', 'opportunity' and
        'customer'. These values are described in HubSpot's Contacts application
        under "Contacts > Manage Settings > Lifecycle Stages". Once a contact
        does become a "customer", it will be reflected in HubSpot's Sources
        application as such.

        - **Please Note** The Lifecycle stage is not designed to move backwards.
        If you need to set this property to an previous stage, you will first
        need to set the value to "" (an empty string) and then set the new Stage

        - **HubSpot Score** - This property cannot be updated through the API.

        - **Email address** - It is possible to update the email address of
        contacts using this endpoint. The current email address must be used in
        the URL to identify the existing contact in HubSpot, and the new email
        would go in the JSON in the request body.

        - If a property doesn't exist yet, you can create a new custom property
        through the API by using the create property method.
      operationId: postcontactsv1contactemailemailprofile
      parameters:
        - name: email
          in: path
          required: true
          description: The email address of the record that you want to update.
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - properties
              properties:
                properties:
                  type: array
                  description: List of contact properties to update.
                  items:
                    type: object
                    properties:
                      property:
                        type: string
                      value:
                        type: string
      responses:
        '200':
          description: >-
            Successful response - This endpoint allows you to update an existing
            contact in HubSpot, identified by email
          content:
            application/json:
              schema:
                type: object
              examples:
                example1:
                  summary: Update an existing contact by email - Example 1
                  value:
                    properties:
                      - property: firstname
                        value: Updated
                      - property: lastname
                        value: Record
                      - property: website
                        value: ''
                      - property: lifecyclestage
                        value: customer
      security:
        - oauth2:
            - crm.objects.contacts.write
        - oauth2_legacy: []
        - private_apps:
            - crm.objects.contacts.write
        - private_apps_legacy: []
components: {}

````