> Portal Navigation: > > - Append `.md` to any URL under `https://dev.wix.com/docs/` to get its markdown version. > - Pages are either content pages (article or reference text) or menu pages (a list of links to child pages). > - To get a menu page, truncate any URL to a parent path and append `.md` (e.g. `https://dev.wix.com/docs/sdk.md`, `https://dev.wix.com/docs/sdk/core-modules.md`). > - Top-level index of all portals: https://dev.wix.com/docs/llms.txt > - Full concatenated docs: https://dev.wix.com/docs/llms-full.txt # Method name: updateContact(identifiers: Identifiers, contactInfo: ContactInfo, options: Options) # Method package: wixCrmBackend # Method menu location: wixCrmBackend --> Contacts --> updateContact # Method Link: https://dev.wix.com/docs/velo/apis/wix-crm-backend/contacts/update-contact.md # Method Description: Updates a contact's properties. The `updateContact()` function returns a Promise that resolves when the specified contact's information is updated. > **Note:** > This function replaces the deprecated > `wixCrmBackend.updateContact()`. > The deprecated function will continue to work, but it will not receive updates. > To keep any existing code compatible with future changes, see the > [migration instructions](https://dev.wix.com/docs/velo/api-reference/wix-crm-backend/update-contact.md). Each time the contact is updated, `revision` increments by 1. The existing `revision` must be included when updating the contact. This ensures you're working with the latest contact information, and it prevents unintended overwrites. > **Note:** > Only visitors with > **Manage Contacts** [permissions](https://www.wix.com/my-account/site-selector/?buttonText=Select%20Site&title=Select%20a%20Site&autoSelectOnSingleSite=true&actionUrl=https:%2F%2Fwww.wix.com%2Fdashboard%2F%7B%7BmetaSiteId%7D%7D%2Froles-and-permissions) > can update contacts. > You can override the permissions by setting the `suppressAuth` option to `true`. # Method Code Examples: *** Note: do not assume any prop names or enum values other than the ones in the example. ## Update a contact ```javascript import { Permissions, webMethod } from 'wix-web-module'; import { contacts } from 'wix-crm-backend'; export const myUpdateContactFunction = webMethod(Permissions.Anyone, () => { const contactIdentifiers = { contactId: "0677ef55-cf20-4f68-989a-f31d3649eb72", revision: 6 }; const contactInfo = { name: { first: "Annie", last: "New Name" }, extendedFields: { "custom.event-we-met-at": "Cloud Computing MegaCon" } }; const options = { allowDuplicates: false, suppressAuth: false }; return contacts.updateContact(contactIdentifiers, contactInfo, options) .then((updatedContact) => { return updatedContact; }) .catch((error) => { console.error(error); }); }); /* Promise resolves to: * { * "_id": "0677ef55-cf20-4f68-989a-f31d3649eb72", * "_createdDate": "2021-03-31T20:24:48.393Z", * "_updatedDate": "2021-04-07T20:37:48.588Z", * "revision": 7, * "info": { * "name": { * "first": "Annie", * "last": "New Name" * }, * "extendedFields": { * "custom.event-we-met-at": "Cloud Computing MegaCon", * "contacts.displayByFirstName": "Annie New Name", * "contacts.displayByLastName": "New Name Annie" * } * }, * "lastActivity": { * "activityDate": "2021-03-31T20:24:48.393Z", * "activityType": "CONTACT_CREATED" * }, * "source": { * "appId": "manual", * "sourceType": "ADMIN" * } * } */ ``` ## Get a contact's latest revision number, then update ```javascript /******************************* * Backend code - contacts.web.js * *******************************/ import { Permissions, webMethod } from 'wix-web-module'; import { contacts } from 'wix-crm-backend'; export const overwriteContactInfo = webMethod(Permissions.Anyone, async (contactId, updatedContactInfo) => { // Get the contact's last revision number const myContact = await contacts.getContact(contactId); const contactIdentifiers = { contactId: contactId, revision: myContact.revision }; const options = { allowDuplicates: false, suppressAuth: false }; return await contacts.updateContact(contactIdentifiers, updatedContactInfo, options); }); /************* * Page code * *************/ import { overwriteContactInfo } from 'backend/contacts.web'; // ... const contactId = "0677ef55-cf20-4f68-989a-f31d3649eb72"; const updatedContactInfo = { name: { first: "Annie", last: "New Name" } }; overwriteContactInfo(contactId, updatedContactInfo) .then((updatedContact) => { return updatedContact; }) .catch((error) => { console.error(error); }); /* Updated contact resolves to: * { * "_id": "0677ef55-cf20-4f68-989a-f31d3649eb72", * "_createdDate": "2021-03-31T20:24:48.393Z", * "_updatedDate": "2021-03-31T20:29:14.519Z", * "revision": 4, * "info": { * "name": { * "first": "Annie", * "last": "New Name" * }, * "extendedFields": { * "contacts.displayByFirstName": "Annie New Name", * "contacts.displayByLastName": "New Name Annie" * } * }, * "lastActivity": { * "activityDate": "2021-03-31T20:24:48.393Z", * "activityType": "CONTACT_CREATED" * }, * "source": { * "appId": "manual", * "sourceType": "ADMIN" * } * } */ ``` ---