Set-Contact
  • 3 Minutes to read
  • Dark
    Light
  • PDF

Set-Contact

  • Dark
    Light
  • PDF

Article summary

Summary

Updates an existing contact.

Set-Contact
    -Entry
    -BypassCustomFieldValidation

Returns a contact object.

Parameters

Parameter

Type

Required?

Notes

Entry

Contact Object

Yes


BypassCustomFieldValdiation

Switch

No, Defaults to false

Ignores required field requirement for custom fields when the entry is saved.

Examples

Updates an existing contact

# Update an existing contact

# A common flow for updating existing data is to first retrieve the data using the GET
# command, update specific fields, and then provide the modified data back using the SET command.

$entry = Get-Contact -Id 79

# Update the "EmailAddress" system field:
$entry.EmailAddress = "danielle.herman@company.com"

# Update a basic text custom field named "Office Location" to "Los Angeles"
$officeLocationField = $entry.Fields | Where-Object { $_.Label -eq "Office Location" }

# This is a safety check to make sure that a value exists. For example, the value object may
# not exist on a field because the custom field was added after the entry already existed.
if ($null -eq $officeLocationField.Value) {
  $officeLocationField.Value = @{}
}

# Here, we update the 'ValueAsString' property of the value because our custom field is a text-
# based field. If this was a whole number, you would use 'ValueAsNumber', a decimal would be
# 'ValueAsDecimal', a yes/no field would be 'ValueAsBoolean', and a date field would be 'ValueAsDate'
$officeLocationField.Value.ValueAsString = "Los Angeles"

# We want to update a reference custom field named "Skills" to "Document Review"
$skillsField = $entry.Fields | Where-Object { $_.Label -eq "Skills" }

if ($null -eq $skillsField.Value) {
  $skillsField.Value = @{}
}

if ($null -eq $skillsField.Value.ReferenceObject) {
  $skillsField.Value.ReferenceObject = @{}
}

$skillsField.Value.ReferenceObject.Values = @(
  @{
    KeyAsInteger = 1
    Value = "Document Review"
  }
)

# Save the modified contact
$data = Set-Contact -Entry $entry

# Output some information to help indicate that the client was updated
Write-Output "Contact $($data.ContactId) ($($data.NameAndEmailAddress)) was updated"

# For debug purposes, convert the data to output as JSON so we can see all the fields
Write-Output ""
Write-Output "JSON Results:"

$jsonOutput = $data | ConvertTo-Json -Depth 10

# Output the data
Write-Output $jsonOutput

Execution results:

Contact 79 (Danielle Herman <danielle.herman@company.com>) was updated

JSON Results:
{
  "ContactId": 79,
  "FirstName": "Danielle",
  "LastName": "Herman",
  "FullName": "Danielle Herman",
  "EmailAddress": "danielle.herman@company.com",
  "NameAndEmailAddress": "Danielle Herman <danielle.herman@company.com>",
  "PhoneNumber": null,
  "TimeZoneIdentifier": null,
  "EnableNotifications": false,
  "AllowPortalAccess": false,
  "IsFavorite": false,
  "NumberOfProjects": 0,
  "CreatedByFullName": "Max Miller",
  "CreatedById": "25a34a2f-e3d8-4690-88f5-6b399cf88c4c",
  "CreatedOn": "2024-04-17T15:06:19.2753792+00:00",
  "CreatedBy": null,
  "LastUpdatedByFullName": "Max Miller",
  "LastUpdatedById": "25a34a2f-e3d8-4690-88f5-6b399cf88c4c",
  "LastUpdatedOn": "2024-04-18T11:21:18.841203+00:00",
  "LastUpdatedBy": null,
  "Fields": [
    {
      "FieldId": 50,
      "ObjectId": 7,
      "DataTypeId": 10,
      "DataTypeName": "Reference",
      "Label": "Skills",
      "IsRequired": false,
      "Position": 0,
      "Guid": 7413322756636,
      "IsSystemField": false,
      "IsReferenceValue": false,
      "DefaultValue": null,
      "CopyPreviousValueOnSaveAndNew": false,
      "Value": {
        "ObjectFieldValueId": 2178,
        "ObjectFieldId": 50,
        "ObjectId": 7,
        "PrimaryKeyId": 79,
        "ValueAsString": null,
        "ValueAsBoolean": null,
        "ValueAsNumber": null,
        "ValueAsDecimal": null,
        "ValueAsDate": null,
        "ReferenceObject": {
          "ObjectFieldReferenceObjectInstanceId": 326,
          "ObjectFieldValueId": 2178,
          "ObjectId": 16,
          "Object": null,
          "PrimaryObjectId": 7,
          "PrimaryKeyId": 79,
          "KeyType": "Int32",
          "DisplayFormat": "%Name%",
          "IsSystemObject": false,
          "Name": null,
          "NumberOfValues": 1,
          "Values": [
            {
              "ObjectFieldReferenceObjectInstanceValueId": 244,
              "ObjectFieldReferenceObjectInstanceId": 326,
              "KeyAsString": null,
              "KeyAsInteger": 1,
              "KeyAsLong": null,
              "Value": "Document Review"
            }
          ]
        }
      },
      "ReferenceObject": null
    },
    {
      "FieldId": 67,
      "ObjectId": 7,
      "DataTypeId": 1,
      "DataTypeName": "Basic Text",
      "Label": "Office Location",
      "IsRequired": false,
      "Position": 1,
      "Guid": 1756477664260,
      "IsSystemField": false,
      "IsReferenceValue": false,
      "DefaultValue": null,
      "CopyPreviousValueOnSaveAndNew": false,
      "Value": {
        "ObjectFieldValueId": 2179,
        "ObjectFieldId": 67,
        "ObjectId": 7,
        "PrimaryKeyId": 79,
        "ValueAsString": "Los Angeles",
        "ValueAsBoolean": null,
        "ValueAsNumber": null,
        "ValueAsDecimal": null,
        "ValueAsDate": null,
        "ReferenceObject": null
      },
      "ReferenceObject": null
    }
  ]
}


What's Next