---
title: "Create or Update a Contact"
method: POST
path: "/contacts/sign_up_form"
tags: ["Contacts"]
---

# Create or Update a Contact

`POST /contacts/sign_up_form`

Use this method to create a new contact or update an existing contact. In the request body, this method requires including the `list_memberships` array as well as either the contact's `email_address` string or `sms_channel` object which includes the contact's SMS number. The information you specify determines if a new contact is either created (the email address or SMS number does not already exist in the account), or if an existing contact is updated (the email address or SMS number already exists). The SMS product feature does not need to be enabled to include a contacts SMS details.

Updates to existing contacts are partial updates. This method only updates the contact properties you include in the request body. Updates append new contact lists or custom fields to the existing `list_memberships` or `custom_fields` arrays.

If `email_address` is specified: <div class="Msg"><p class="note-text">Only use this method when a contact gives you their explicit permission to send them an email. It is a violation of anti-spam and telemarketing laws, as well as a serious violation of the Constant Contact Terms of Service to use the Opt-in features of the API to opt a contact back in without his or her own action and consent.</p></div>

If `sms_channel` is specified: <div class="Msg"><p class="note-text">Only use this method when a contact gives you their explicit permission to send them an SMS. It is a violation of anti-spam and telemarketing laws, as well as a serious violation of the Constant Contact Terms of Service to use the Opt-in features of the API to opt a contact back in without his or her own action and consent.</p></div>

When this method creates a new contact, it returns a 201 response code.When this method updates an existing contact, it returns a 200 response code. Updating a deleted contact restores the contact.

The method automatically modifies the contact's `permission_to_send` and `opt_in_source` properties depending on the [Confirmed Opt-In](https://knowledgebase.constantcontact.com/articles/KnowledgeBase/5533-obtain-permission-to-send-email-campaigns-to-your-contacts-by-using-confirmed-opt-in) Constant Contact account setting:

If Confirmed Opt-in is _enabled_, this method automatically sets the `permission_to_send` property as `pending_confirmation` for new contacts. If Confirmed Opt-in is _disabled_, this method automatically sets the `permission_to_send` property as explicit and the `opt_in_source` property as `Contact` for new contacts. Updated contacts have their `permission_to_send` property set as explicit.

## Request body

- ContactCreateOrUpdateInput
  - `email_address` string — The email address for the contact. This method identifies each unique contact using their email address. If the email address exists in the account, this method updates the contact. If the email address is new, this method creates a new contact.
  - `first_name` string — The first name of the contact.
  - `last_name` string — The last name of the contact.
  - `job_title` string — The job title of the contact.
  - `company_name` string — The name of the company where the contact works.
  - `phone_number` string — The phone number for the contact.
  - `list_memberships` string[], required — The contact lists you want to add the contact to as an array of up to 50 contact <code>list_id</code> values. You must include at least one <code>list_id</code>.
  - `custom_fields` CreateOrUpdateContactCustomField[] — The custom fields you want to add to the contact as an array of up to 50 custom field objects.
    - `custom_field_id` string, uuid — The unique ID for the <code>custom_field</code>.
    - `value` string — The value of the <code>custom_field</code>.
  - `anniversary` string — The anniversary date for the contact. For example, this value could be the date when the contact first became a customer of an organization in Constant Contact. Valid date formats are MM/DD/YYYY, M/D/YYYY, YYYY/MM/DD, YYYY/M/D, YYYY-MM-DD, YYYY-M-D,M-D-YYYY, or M-DD-YYYY.
  - `birthday_month` integer — The month value for the contact's birthday. Valid values are from 1 through 12. The <code>birthday_month</code> property is required if you use <code>birthday_day</code>.
  - `birthday_day` integer — The day value for the contact's birthday. Valid values are from 1 through 31. The <code>birthday_day</code> property is required if you use <code>birthday_month</code>.
  - `street_address` object
    - `kind` string, required — The type of street address for the contact. Valid values are <code>home</code>, <code>work</code>, or <code>other</code>.
    - `street` string — The number and street of the contact's address.
    - `city` string — The name of the city for the contact's address.
    - `state` string — The name of the state or province for the contact's address.
    - `postal_code` string — The zip or postal code for the contact's address.
    - `country` string — The name of the country for the contact's address.
  - `sms_channel` JmmlSmsChannel — The contact's SMS details.
    - `sms_address` string, required — The contact's SMS-capable phone number, excluding the country code.
    - `dial_code` string, required — The dial code the country uses. For example, use <code>1</code> for the United States dial code.
    - `country_code` string, required — The two-digit code that identifies the country.
    - `sms_channel_consents` JmmlSmsChannelConsents[], required — The consents provided for the SMS Channel.
      - `sms_consent_permission` string, required — The current consent status of the SMS Channel.
      - `consent_type` string, required — The type of consent provided.
      - `consent_medium_type` string, required — A code representing where the consent was retrieved.
      - `consent_medium_url` string, required — The URL for which the consent was gathered, such as a landing page.
      - `consent_medium_details` string, required — Additional information for the consent
      - `advertised_frequency` integer — The numeric component used to indicate how often to send advertising. For example, <code>1</code> indicates once. Use with <code>advertised_internal</code> property to indicate when on the calender to send it. For example, to send once (<code>1</code>) daily, weekly, or monthly.
      - `advertised_interval` string — The calender interval used to indicate when advertising is sent. For example <code>weekly</code>.

## Response `200`

Contact successfully updated.

- ContactCreateOrUpdateResponse
  - `contact_id` string, uuid — The unique identifier for the contact that the V3 API created or updated.
  - `action` string — Identifies if the V3 API created a new contact or updated an existing contact.

## Other responses

- `201` — Contact successfully created.
- `400` — Bad request. Either the JSON was malformed or there was a data validation error.
- `401` — The Access Token used is invalid.
- `403` — Forbidden request. You lack the necessary scopes, you lack the necessary user privileges, or the application is deactivated.
- `404` — The requested resource was not found.
- `409` — Conflict. You sent simultaneous requests that are attempting to modify the same contact.
- `500` — There was a problem with our internal service.
- `503` — Our internal service is temporarily unavailable.

---

[API](https://skmtc.net/cc/apis/appconnect-v3.md) · [All operations](https://skmtc.net/cc/apis/appconnect-v3/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/cc/appconnect-v3/versions/4b4a534c818d/schema)
