{"Status":true,"Message":"","Response":{"post":{"postuid":"94edff2c-bfca-4167-b580-dfc1bf4ae8ec","tenantuid":"d8b744fc-2e70-4089-bb80-dd1d08f6c7b2","projectuid":"542e5f51-33cf-401f-aebe-4324ebe36fe4","title":"Create or Update a Contact","slug":"reference/create-or-edit-a-contact-1","html":"\u003Cp\u003ECreates or updates a contact. A new contact only requires either a valid email address or valid mobile phone number. All other fields are optional.\u003C/p\u003E\u003Cp\u003ESee also the \u003Ca href=\u0022/reference/find-or-create-a-contact\u0022\u003EFind or Create a Contact\u003C/a\u003E API.\u003C/p\u003E\u003Ch2 id=\u0022updating_custom_fields\u0022\u003EUpdating custom fields\u003C/h2\u003E\u003Cp\u003EDailyStory supports custom fields to allow you to store virtually any data with a contact.\u003C/p\u003E\u003Ccite class=\u0022recommended\u0022\u003E\u003Cspan class=\u0022title\u0022\u003ERecommended\u003C/span\u003E\u003Cp\u003EWhile custom fields comes with their own benefits you can add/remove data using API even if you haven\u0027t created the custom field.\u003C/p\u003E\u003C/cite\u003E\u003Cp\u003ETo update a contact\u0027s custom fields, include the custom field data in the JSON body of your POST:\u003C/p\u003E\u003Cdiv class=\u0022code_wrapper\u0022\u003E\u003Cdiv class=\u0022code\u0022 data-language=\u0022json\u0022\u003E{\r\n  \u0026quot;email\u0026quot;:\u0026quot;example@example.com\u0026quot;,\r\n  \u0026quot;extendedProperties\u0026quot;:{\r\n    \u0026quot;some_custom_field\u0026quot;:\u0026quot;hello world\u0026quot;\r\n  }\r\n}\u003C/div\u003E\u003C/div\u003E\u003Cp\u003EWhile not required, we recommend custom field key is lower case, contain no spaces, and are limited to alphanumeric characters. This ensures that if the custom field were used for API access, such as personalization, the customer field could be accessed. For example,\u0026nbsp;\u003Ccode\u003E{{profile.some_custom_field}}\u003C/code\u003E.\u0026nbsp;\u0026nbsp;\u003C/p\u003E\u003Cdiv class=\u0022api_header\u0022\u003EHTTP Request Examples\u003C/div\u003E\u003Cdiv class=\u0022code_wrapper\u0022\u003E\u003Cdiv class=\u0022d-flex header\u0022\u003E\u003Cspan\u003ECreate a contact\u003C/span\u003E\u003C/div\u003E\u003Cdiv class=\u0022code\u0022 data-language=\u0022json\u0022\u003E{\r\n  \u0026quot;email\u0026quot;: \u0026quot;rob@example.com\u0026quot;,\r\n  \u0026quot;firstName\u0026quot;: \u0026quot;Rob\u0026quot;,\r\n  \u0026quot;lastName\u0026quot;: \u0026quot;Howard\u0026quot;,\r\n  \u0026quot;mobilePhone\u0026quot;: \u0026quot;\u002B15557140059\u0026quot;,\r\n  \u0026quot;city\u0026quot;: \u0026quot;Dallas\u0026quot;,\r\n  \u0026quot;region\u0026quot;: \u0026quot;Texas\u0026quot;,\r\n  \u0026quot;extendedProperties\u0026quot;: {\r\n    \u0026quot;stripe_customer_id\u0026quot;: \u0026quot;cus_DRvE6c5V9jp\u0026quot;,\r\n    \u0026quot;class_of_license\u0026quot;: \u0026quot;Premium\u0026quot;\r\n  }\r\n}\u003C/div\u003E\u003C/div\u003E\u003Cdiv class=\u0022code_wrapper\u0022\u003E\u003Cdiv class=\u0022d-flex header\u0022\u003E\u003Cspan\u003EUpdate an existing contact\u003C/span\u003E\u003C/div\u003E\u003Cdiv class=\u0022code\u0022 data-language=\u0022json\u0022\u003E{\r\n  \u0026quot;dsId\u0026quot;: \u0026quot;43aaf5af35f866b1edba7\u0026quot;,\r\n  \u0026quot;firstName\u0026quot;: \u0026quot;Rob\u0026quot;,\r\n  \u0026quot;lastName\u0026quot;: \u0026quot;Howard\u0026quot;,\r\n  \u0026quot;title\u0026quot;: \u0026quot;Founder, CEO\u0026quot;\r\n}\u003C/div\u003E\u003C/div\u003E\u003Cdiv class=\u0022api_header\u0022\u003EHTTP Request Parameters\u003C/div\u003E\u003Csection class=\u0022api_parameters\u0022\u003E\u003Csection class=\u0022api_param\u0022\u003E\u003Cdiv class=\u0022api_param_header\u0022\u003E\u003Cspan class=\u0022p_name\u0022\u003EdsId\u003C/span\u003E\u003Cspan class=\u0022p_type\u0022\u003Estring\u003C/span\u003E\u003C/div\u003E\u003Cdiv\u003EThe dsid of an existing contact to update. Omit when creating a new contact.\u003C/div\u003E\u003C/section\u003E\u003Csection class=\u0022api_param\u0022\u003E\u003Cdiv class=\u0022api_param_header\u0022\u003E\u003Cspan class=\u0022p_name\u0022\u003Eemail\u003C/span\u003E\u003Cspan class=\u0022p_type\u0022\u003Estring\u003C/span\u003E\u003C/div\u003E\u003Cdiv\u003EContact email address. Either email or mobilePhone is required when creating a new contact.\u003C/div\u003E\u003C/section\u003E\u003Csection class=\u0022api_param\u0022\u003E\u003Cdiv class=\u0022api_param_header\u0022\u003E\u003Cspan class=\u0022p_name\u0022\u003EmobilePhone\u003C/span\u003E\u003Cspan class=\u0022p_type\u0022\u003Estring\u003C/span\u003E\u003C/div\u003E\u003Cdiv\u003EContact mobile number (E.164 format recommended). Either email or mobilePhone is required when creating a new contact.\u003C/div\u003E\u003C/section\u003E\u003Csection class=\u0022api_param\u0022\u003E\u003Cdiv class=\u0022api_param_header\u0022\u003E\u003Cspan class=\u0022p_name\u0022\u003EfirstName, lastName, salutation, title\u003C/span\u003E\u003Cspan class=\u0022p_type\u0022\u003Estring\u003C/span\u003E\u003C/div\u003E\u003Cdiv\u003EOptional name and title fields.\u003C/div\u003E\u003C/section\u003E\u003Csection class=\u0022api_param\u0022\u003E\u003Cdiv class=\u0022api_param_header\u0022\u003E\u003Cspan class=\u0022p_name\u0022\u003Estatus\u003C/span\u003E\u003Cspan class=\u0022p_type\u0022\u003Estring\u003C/span\u003E\u003C/div\u003E\u003Cdiv\u003EContact status. One of: Active, Inactive, Spam, Deleted.\u003C/div\u003E\u003C/section\u003E\u003Csection class=\u0022api_param\u0022\u003E\u003Cdiv class=\u0022api_param_header\u0022\u003E\u003Cspan class=\u0022p_name\u0022\u003Ecountry, region, city, postalCode, address, geoCode\u003C/span\u003E\u003Cspan class=\u0022p_type\u0022\u003Estring\u003C/span\u003E\u003C/div\u003E\u003Cdiv\u003EOptional location fields.\u003C/div\u003E\u003C/section\u003E\u003Csection class=\u0022api_param\u0022\u003E\u003Cdiv class=\u0022api_param_header\u0022\u003E\u003Cspan class=\u0022p_name\u0022\u003Ephone, homePhone\u003C/span\u003E\u003Cspan class=\u0022p_type\u0022\u003Estring\u003C/span\u003E\u003C/div\u003E\u003Cdiv\u003EAdditional phone numbers.\u003C/div\u003E\u003C/section\u003E\u003Csection class=\u0022api_param\u0022\u003E\u003Cdiv class=\u0022api_param_header\u0022\u003E\u003Cspan class=\u0022p_name\u0022\u003Ecompany, website, industry, numberOfEmployees, annualRevenue\u003C/span\u003E\u003Cspan class=\u0022p_type\u0022\u003Estring/number\u003C/span\u003E\u003C/div\u003E\u003Cdiv\u003EOptional company/firmographic fields.\u003C/div\u003E\u003C/section\u003E\u003Csection class=\u0022api_param\u0022\u003E\u003Cdiv class=\u0022api_param_header\u0022\u003E\u003Cspan class=\u0022p_name\u0022\u003Edonotcontact, optOutEmail, optOutSms, optOutPush, optOutPhone\u003C/span\u003E\u003Cspan class=\u0022p_type\u0022\u003Eboolean\u003C/span\u003E\u003C/div\u003E\u003Cdiv\u003ESubscription flags. Setting these opts the contact out of the corresponding channel.\u003C/div\u003E\u003C/section\u003E\u003Csection class=\u0022api_param\u0022\u003E\u003Cdiv class=\u0022api_param_header\u0022\u003E\u003Cspan class=\u0022p_name\u0022\u003EmaxContactFrequencyInDays\u003C/span\u003E\u003Cspan class=\u0022p_type\u0022\u003Enumber\u003C/span\u003E\u003C/div\u003E\u003Cdiv\u003EMaximum number of days between contacts. Set to 0 to disable.\u003C/div\u003E\u003C/section\u003E\u003Csection class=\u0022api_param\u0022\u003E\u003Cdiv class=\u0022api_param_header\u0022\u003E\u003Cspan class=\u0022p_name\u0022\u003EextendedProperties\u003C/span\u003E\u003Cspan class=\u0022p_type\u0022\u003Eobject\u003C/span\u003E\u003C/div\u003E\u003Cdiv\u003EDictionary of custom field values. Keys should be lowercase with underscores, values are strings. See the Updating custom fields section above.\u003C/div\u003E\u003C/section\u003E\u003C/section\u003E\u003Cdiv class=\u0022api_header\u0022\u003EHTTP Response Examples\u003C/div\u003E\u003Cdiv class=\u0022code_wrapper\u0022\u003E\u003Cdiv class=\u0022d-flex header\u0022\u003E\u003Cspan class=\u0022httpstatus\u0022\u003E\u003Cspan class=\u0022solid-circle success\u0022\u003E\u003C/span\u003E200\u003C/span\u003E\u003C/div\u003E\u003Cdiv class=\u0022code\u0022 data-language=\u0022json\u0022\u003E{\r\n  \u0026quot;Status\u0026quot;: true,\r\n  \u0026quot;Message\u0026quot;: \u0026quot;\u0026quot;,\r\n  \u0026quot;Response\u0026quot;: {\r\n    \u0026quot;id\u0026quot;: \u0026quot;43aaf5af35f866b1edba7\u0026quot;\r\n  }\r\n}\u003C/div\u003E\u003C/div\u003E\u003Cdiv class=\u0022api_header\u0022\u003EHTTP Response Parameters\u003C/div\u003E\u003Csection class=\u0022api_parameters\u0022\u003E\u003Csection class=\u0022api_param\u0022\u003E\u003Cdiv class=\u0022api_param_header\u0022\u003E\u003Cspan class=\u0022p_name\u0022\u003Eid\u003C/span\u003E\u003Cspan class=\u0022p_type\u0022\u003Estring\u003C/span\u003E\u003C/div\u003E\u003Cdiv\u003EThe dsid of the created or updated contact.\u003C/div\u003E\u003C/section\u003E\u003C/section\u003E\u003Cp\u003E\u003C/p\u003E","json_meta":{"api_verb":"POST","api_path":"https://us-1.dailystory.com/api/v1/contact/"},"publish_status":0,"post_type":"API","authoruid":"3dde8c16-763a-4a2b-ae0b-1d8c50c62e3d","author":{"authoruid":"3dde8c16-763a-4a2b-ae0b-1d8c50c62e3d"},"featured_image_updating":false,"meta_description":"Create or update contacts with DailyStory using an email or phone. Easily manage custom fields and update data via API. See JSON and response examples.","display_toc":true,"has_workingcopy":false,"allow_indexing":true,"sort_order":13,"total_views":1,"date_published":"2026-04-20T12:00:00","date_updated":"2026-04-20T14:01:44.35","date_created":"2025-09-25T16:52:05.247"}}}