{"id":148399,"date":"2024-05-30T12:00:14","date_gmt":"2024-05-30T03:00:14","guid":{"rendered":"https:\/\/support.questetra.com\/?p=148399"},"modified":"2024-05-30T12:15:39","modified_gmt":"2024-05-30T03:15:39","slug":"service-task-sendgrid-contact-upsert-custom-fields","status":"publish","type":"post","link":"https:\/\/support.questetra.com\/en\/bpmn-icons\/service-task-sendgrid-contact-upsert-custom-fields\/","title":{"rendered":"Twilio SendGrid: Add or Update Contact (Custom Fields)"},"content":{"rendered":"\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"58\" data-attachment-id=\"113160\" data-permalink=\"https:\/\/support.questetra.com\/en\/developer-blog\/how-to-use-timer-start-event\/attachment\/advanced-banner-new-en\/\" data-orig-file=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/05\/advanced-banner-new-en.png?fit=1200%2C68&amp;ssl=1\" data-orig-size=\"1200,68\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"advanced-banner-new-en\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/05\/advanced-banner-new-en.png?fit=1024%2C58&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/05\/advanced-banner-new-en-1024x58.png?resize=1024%2C58&#038;ssl=1\" alt=\"\" class=\"wp-image-113160\" srcset=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/05\/advanced-banner-new-en.png?resize=1024%2C58&amp;ssl=1 1024w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/05\/advanced-banner-new-en.png?resize=600%2C34&amp;ssl=1 600w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/05\/advanced-banner-new-en.png?resize=768%2C44&amp;ssl=1 768w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/05\/advanced-banner-new-en.png?w=1200&amp;ssl=1 1200w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/figure>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading has-border-color has-product-main-border-color has-white-color has-product-main-background-color has-text-color has-background has-link-color\" style=\"border-width:2px;margin-top:0;margin-right:0;margin-bottom:0;margin-left:0;padding-top:var(--wp--preset--spacing--10);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--10);padding-left:var(--wp--preset--spacing--20)\"><strong>Twilio SendGrid: Add or Update Contact (Custom Fields)<\/strong><\/h4>\n\n\n\n<p class=\"has-text-align-right has-border-color has-product-main-border-color has-white-color has-product-main-background-color has-text-color has-background has-link-color has-small-font-size mt-0 pt-0 wp-block-paragraph\" style=\"border-width:2px;margin-top:0;margin-right:0;margin-bottom:0;margin-left:0;padding-top:0;padding-right:var(--wp--preset--spacing--20);padding-bottom:0;padding-left:var(--wp--preset--spacing--20)\"><a href=\"https:\/\/support.questetra.com\/en\/bpmn-icons\/service-task-sendgrid-contact-upsert-custom-fields\/\">Twilio SendGrid: \u5b9b\u5148\u8ffd\u52a0\/\u66f4\u65b0\uff08\u30ab\u30b9\u30bf\u30e0\u30d5\u30a3\u30fc\u30eb\u30c9\uff09<\/a><\/p>\n\n\n\n<p class=\"has-border-color has-product-main-border-color has-text-color has-white-background-color has-background has-link-color mt-0 pt-0 wp-block-paragraph\" style=\"border-width:2px;margin-top:0;margin-right:0;margin-bottom:var(--wp--preset--spacing--30);margin-left:0;padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\">This item adds or updates a contact on SendGrid with the specified custom field values. If a contact with the specified email address already exists, the contact will be updated.<\/p>\n\n\n\n<div class=\"wp-block-coblocks-accordion\">\n<div class=\"wp-block-coblocks-accordion-item\"><details open><summary class=\"wp-block-coblocks-accordion-item__title\">Basic Configs<\/summary><div class=\"wp-block-coblocks-accordion-item__content\">\n<dl style=\"0 0 -0.7em 0\">\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #C3C3C3;\"><\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">Step Name<\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #C3C3C3;\"><\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">Note<\/dd>\n<\/dl>\n<\/div><\/details><\/div>\n<\/div>\n\n\n\n<figure class=\"wp-block-image alignright has-custom-border is-style-default\"><img decoding=\"async\" src=\"data:image;base64,\n        iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAADBUlEQVRYR8WXS08TURTH\/5cWBeXZ\n        ipHFjBh3JIYSdKELYePGZCYS4jMxtiauwU+gJm40JpYPYKhxodEoj+4R4lYrjQsXimKrUhKRNxNC\n        22vuTMcZ5s50psLgbCY5c++c3zn33PMg+M8PqUh\/MnMOFN0gJAKgCQB7s2cKwCIoZe8JyOKo1\/+6\n        AwwvNCG42g9KB0AIU+r+ULoIQuLI1w2it3mx3IbyAGPfo0DxoWfFVk0qCGKQxBEnCGeAZDYOoN\/d\n        XA8rKI1DFm\/arbQHSGYSALnm4dfel1CagCzGrBt4ABfL+w7V4lhDNae4LkiwmqecPKsU8Ci7pssH\n        IQkD5kVbAdiZEzpUzqzJUy04HdrLLfm4mse9z8uc\/OzBWlxMzZvktNccEwYAi\/bAyle3gHMCSC1t\n        ouvNHAfwpDOEq+9\/G3IWmIX6I\/rtMACS2dsAbrkd6rYBNAV3IAlMHwyAsQy7u427AsC8IIvNBgDL\n        cCDDbsrZ9x3yAAAtFjQP2ET+DXE\/zrTUcEztddVorani5OO\/NvBNySNICIIECBCCKgJMr+Vxf3rF\n        zjb1RmgAY9kJEHSbVz3vCuN8ay238ct6AUfHZzn565Mt6Anzt2Mkp6D3rfkWlLZSTEIWenQPzAA4\n        7AfAq5yCPjsAVsAkoVMH4DLITnngxayCC+9sPMCslQTiO8Czn+u4nDLlAbObTQC+HcHTH+u4Yk5E\n        BkAakhBxDMKXx8OINOzhgq1IKeY2ipz8UmoeoycOcPLhnIK7n\/gUDUsQcqV3qCOEWJp3XaV5oExu\n        MV1Dm0TkP4A5Eam5YGsq9hWA0iXIotreORYjXwFsi5FWjmf0guQbALO+UN\/Gl2P1GIyG5EF7I8LV\n        AS6G2vYFwLof6\/NheRPX0wse6plTQ6Jv3clmlMf52wfon3avKQV9DEmMWpl2py03BZ13ALVPUEex\n        hJdOyfbwWcARRP9tMNH\/qI1mA6XRzLVlU7epitXRLL690cxqlpYxe0ARAVGH047SkjQo2Bg2BdCJ\n        chZXdgQeLtV2l\/wBk2V1MIOcaTsAAAAASUVORK5CYII=\n    \" alt=\"Auto Step icon\" class=\"has-border-color has-ast-global-color-4-border-color\" style=\"border-width:0.5em\"\/><\/figure>\n\n\n\n<div class=\"wp-block-coblocks-accordion\">\n<div class=\"wp-block-coblocks-accordion-item\"><details open><summary class=\"wp-block-coblocks-accordion-item__title\">Configs for this Auto Step<\/summary><div class=\"wp-block-coblocks-accordion-item__content\">\n<dl style=\"0 0 -0.7em 0\">\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_Auth<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C1: Authorization Setting in which API Key is set as token<span style=\"color:#990000;\"> *<\/span><\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_Email<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C2: Email Address<span style=\"color:#990000;\"> *<\/span><\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_FieldName1<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C3F: Custom Field Name 1<\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_FieldValue1<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C3V: Value 1<\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_FieldName2<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C4F: Custom Field Name 2<\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_FieldValue2<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C4V: Value 2<\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_FieldName3<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C5F: Custom Field Name 3<\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_FieldValue3<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C5V: Value 3<\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_FieldName4<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C6F: Custom Field Name 4<\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_FieldValue4<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C6V: Value 4<\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_FieldName5<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C7F: Custom Field Name 5<\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_FieldValue5<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C7V: Value 5<\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_FieldName6<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C8F: Custom Field Name 6<\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_FieldValue6<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C8V: Value 6<\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_FieldName7<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C9F: Custom Field Name 7<\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_FieldValue7<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C9V: Value 7<\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_FieldName8<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C10F: Custom Field Name 8<\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_FieldValue8<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C10V: Value 8<\/dd>\n\n<\/dl>\n<\/div><\/details><\/div>\n<\/div>\n\n\n\n<h3 class=\"wp-block-heading\" style=\"margin-top:var(--wp--preset--spacing--30)\"><span>Notes<\/span><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>This item is intended for <a rel=\"noreferrer noopener\" href=\"https:\/\/sendgrid.com\/\" target=\"_blank\">sendgrid.com<\/a>\n<ul class=\"wp-block-list\">\n<li>It is not intended for <a href=\"https:\/\/sendgrid.kke.co.jp\/\" target=\"_blank\" rel=\"noreferrer noopener\">sendgrid.kke.co.jp<\/a><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>To learn about how to create your API Key, see the <a rel=\"noreferrer noopener\" href=\"https:\/\/docs.sendgrid.com\/ui\/account-and-settings\/api-keys#creating-an-api-key\" target=\"_blank\">SendGrid Documentation<\/a>\n<ul class=\"wp-block-list\">\n<li>When selecting Restricted Access, it is necessary to turn on the permission of Marketing<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized has-custom-border\"><img data-recalc-dims=\"1\" decoding=\"async\" data-attachment-id=\"148232\" data-permalink=\"https:\/\/support.questetra.com\/en\/templates\/meeting-report-process\/attachment\/sendgrid_apikeypermissions_1\/\" data-orig-file=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/SendGrid_ApiKeyPermissions_1.png?fit=1714%2C758&amp;ssl=1\" data-orig-size=\"1714,758\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"SendGrid_ApiKeyPermissions_1\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/SendGrid_ApiKeyPermissions_1.png?fit=1024%2C453&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/SendGrid_ApiKeyPermissions_1.png?w=700&#038;ssl=1\" alt=\"\" class=\"wp-image-148232\" style=\"border-width:1px;width:700px\"  srcset=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/SendGrid_ApiKeyPermissions_1.png?w=1714&amp;ssl=1 1714w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/SendGrid_ApiKeyPermissions_1.png?resize=600%2C265&amp;ssl=1 600w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/SendGrid_ApiKeyPermissions_1.png?resize=1024%2C453&amp;ssl=1 1024w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/SendGrid_ApiKeyPermissions_1.png?resize=768%2C340&amp;ssl=1 768w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/SendGrid_ApiKeyPermissions_1.png?resize=1536%2C679&amp;ssl=1 1536w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large is-resized has-custom-border\"><img data-recalc-dims=\"1\" decoding=\"async\" data-attachment-id=\"148551\" data-permalink=\"https:\/\/support.questetra.com\/en\/templates\/meeting-report-process\/attachment\/sendgrid_apikeypermissions_2_ver2\/\" data-orig-file=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/SendGrid_ApiKeyPermissions_2_ver2.png?fit=1704%2C358&amp;ssl=1\" data-orig-size=\"1704,358\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"SendGrid_ApiKeyPermissions_2_ver2\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/SendGrid_ApiKeyPermissions_2_ver2.png?fit=1024%2C215&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/SendGrid_ApiKeyPermissions_2_ver2.png?w=700&#038;ssl=1\" alt=\"\" class=\"wp-image-148551\" style=\"border-width:1px;width:700px\"  srcset=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/SendGrid_ApiKeyPermissions_2_ver2.png?resize=1024%2C215&amp;ssl=1 1024w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/SendGrid_ApiKeyPermissions_2_ver2.png?resize=600%2C126&amp;ssl=1 600w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/SendGrid_ApiKeyPermissions_2_ver2.png?resize=768%2C161&amp;ssl=1 768w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/SendGrid_ApiKeyPermissions_2_ver2.png?resize=1536%2C323&amp;ssl=1 1536w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/SendGrid_ApiKeyPermissions_2_ver2.png?w=1704&amp;ssl=1 1704w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>To learn about the custom fields, see the <a href=\"https:\/\/docs.sendgrid.com\/ui\/managing-contacts\/custom-fields#creating-custom-fields\">SendGrid <\/a><a href=\"https:\/\/docs.sendgrid.com\/ui\/managing-contacts\/custom-fields\" target=\"_blank\" rel=\"noreferrer noopener\">Documentation<\/a>\n<ul class=\"wp-block-list\">\n<li>Data types of the custom field values should accord to the custom field types<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td class=\"has-text-align-left\" data-align=\"left\"><strong>Custom Field Type<\/strong><\/td><td class=\"has-text-align-left\" data-align=\"left\"><strong>Data Type<\/strong><\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">Text<\/td><td class=\"has-text-align-left\" data-align=\"left\">String (single line)<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">Number<\/td><td class=\"has-text-align-left\" data-align=\"left\">Numeric<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">Date<\/td><td class=\"has-text-align-left\" data-align=\"left\">Date (Y\/M\/D)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" style=\"margin-top:var(--wp--preset--spacing--30)\"><span>Capture<\/span><\/h3>\n\n\n\n<figure class=\"wp-block-image size-full has-custom-border is-style-rounded is-style-rounded--1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1190\" height=\"1484\" data-attachment-id=\"148400\" data-permalink=\"https:\/\/support.questetra.com\/en\/templates\/meeting-report-process\/attachment\/sendcrid-contact-upsert-custom-fields_capture_en\/\" data-orig-file=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/sendcrid-contact-upsert-custom-fields_capture_en.png?fit=1190%2C1484&amp;ssl=1\" data-orig-size=\"1190,1484\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"sendcrid-contact-upsert-custom-fields_capture_en\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/sendcrid-contact-upsert-custom-fields_capture_en.png?fit=505%2C630&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/sendcrid-contact-upsert-custom-fields_capture_en.png?resize=1190%2C1484&#038;ssl=1\" alt=\"\" class=\"has-border-color wp-image-148400\" style=\"border-color:#009900;border-width:3px;border-radius:9px\" srcset=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/sendcrid-contact-upsert-custom-fields_capture_en.png?w=1190&amp;ssl=1 1190w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/sendcrid-contact-upsert-custom-fields_capture_en.png?resize=253%2C315&amp;ssl=1 253w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/sendcrid-contact-upsert-custom-fields_capture_en.png?resize=505%2C630&amp;ssl=1 505w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/sendcrid-contact-upsert-custom-fields_capture_en.png?resize=768%2C958&amp;ssl=1 768w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" style=\"margin-top:var(--wp--preset--spacing--30)\"><span>See also<\/span><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a rel=\"noreferrer noopener\" href=\"https:\/\/support.questetra.com\/en\/bpmn-icons\/intermediate-error-catch-event-boundary-type\/\" target=\"_blank\">Intermediate Error Catch Event (Boundary Type)<\/a><\/li>\n<\/ul>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-coblocks-accordion\">\n<div class=\"wp-block-coblocks-accordion-item\"><details><summary class=\"wp-block-coblocks-accordion-item__title\">Script (click to open)<\/summary><div class=\"wp-block-coblocks-accordion-item__content\">\n<ul class=\"wp-block-list\">\n<li>An XML file that contains the code below is available to download\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/raw.githubusercontent.com\/Questetra\/Addon-XML\/release-2024-05-09\/sendgrid-contact-upsert-custom-fields.xml\" target=\"_blank\" rel=\"noreferrer noopener\">sendgrid-contact-upsert-custom-fields.xml<\/a> (C) Questetra, Inc. (MIT License)<\/li>\n\n\n\n<li>If you are using Professional, you can modify the contents of this file and use it as your own add-on auto step<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\"><code>\n\nconst FIELD_NUM = 8; \/\/ \u6271\u3048\u308b\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u6570\nconst MAX_EMAIL_LENGTH = 254;\nconst MAX_FIELD_VALUE_LENGTH = 1000;\n\nfunction main(){\n    \/\/\/\/ == Config Retrieving \/ \u5de5\u7a0b\u30b3\u30f3\u30d5\u30a3\u30b0\u306e\u53c2\u7167 ==\n    const auth = configs.getObject(&apos;conf_Auth&apos;);\n    const email = retrieveEmail();\n    const customFieldMap = retrieveCustomFieldsAsMap();\n\n    \/\/\/\/ == Calculating \/ \u6f14\u7b97 ==\n    const contact = {email};\n    if (customFieldMap.size &gt; 0) {\n        const allCustomFields = getAllCustomFields(auth);\n        setCustomFields(contact, customFieldMap, allCustomFields);\n    }\n    const jobId = upsertContact(auth, contact);\n\n    \/\/ \u51e6\u7406\u72b6\u6cc1\u3092\u78ba\u8a8d\u3057\u3001\u672a\u5b8c\u4e86\u306a\u3089 proceed() \u306b\u9032\u3080\n    if (checkStatus(auth, jobId) === false) {\n        engine.saveTemporaryData(jobId);\n        return false;\n    }\n}\n\nfunction proceed() {\n    \/\/\/\/ == Config Retrieving \/ \u5de5\u7a0b\u30b3\u30f3\u30d5\u30a3\u30b0\u306e\u53c2\u7167 ==\n    const auth = configs.getObject(&apos;conf_Auth&apos;);\n\n    \/\/\/\/ == Restoring Temporary Data \/ \u4e00\u6642\u30c7\u30fc\u30bf\u306e\u8aad\u307f\u51fa\u3057 ==\n    const jobId = engine.restoreTemporaryData();\n    if (jobId === null) {\n        throw new Error(&apos;Temporary data has not been saved.&apos;);\n    }\n\n    \/\/\/\/ == \u6f14\u7b97 \/ Calculating ==\n    if (checkStatus(auth, jobId) === false) {\n        return false;\n    }\n}\n\n\/**\n  * config \u306b\u8a2d\u5b9a\u3055\u308c\u305f\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3092\u8aad\u307f\u51fa\u3059\n  * @return {String} email\n  *\/\nfunction retrieveEmail() {\n    const emailDef = configs.getObject(&apos;conf_Email&apos;);\n    const email = engine.findData(emailDef);\n    if (email === null) {\n        throw new Error(&apos;Email Address is blank.&apos;);\n    }\n    if (email.length &gt; MAX_EMAIL_LENGTH) {\n        throw new Error(`Email Address must be within ${MAX_EMAIL_LENGTH} characters.`);\n    }\n    return email;\n}\n\n\/**\n  * config \u306b\u8a2d\u5b9a\u3055\u308c\u305f\u30ab\u30b9\u30bf\u30e0\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u60c5\u5831\u3092\u8aad\u307f\u51fa\u3059\n  * Map \u306e\u30ad\u30fc\u306f\u30d5\u30a3\u30fc\u30eb\u30c9\u540d\u3001\u5024\u306f\u30c7\u30fc\u30bf\u5b9a\u7fa9\n  * @return {Map&lt;String, DataDefinitionView&gt;} customFieldMap\n  *\/\nfunction retrieveCustomFieldsAsMap() {\n    const customFieldMap = new Map();\n    for (let i = 0; i &lt; FIELD_NUM; i++) {\n        const fieldName = configs.get(`conf_FieldName${i + 1}`);\n        const fieldValueDef = configs.getObject(`conf_FieldValue${i + 1}`);\n        if (fieldName === &apos;&apos; || fieldName === null) {\n            if (fieldValueDef !== null) { \/\/ \u30d5\u30a3\u30fc\u30eb\u30c9\u540d\u304c\u7a7a\u306a\u306e\u306b\u3001\u5024\u306e\u30c7\u30fc\u30bf\u9805\u76ee\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u308b\u5834\u5408\n                throw new Error(`Custom Field Name ${i + 1} is blank while its value is selected.`);\n            }\n            continue;\n        }\n        if (customFieldMap.has(fieldName)) { \/\/ \u30d5\u30a3\u30fc\u30eb\u30c9\u540d\u306e\u6307\u5b9a\u304c\u91cd\u8907\n            throw new Error(`Custom Field Name &quot;${fieldName}&quot; is set multiple times.`);\n        }\n        if (fieldValueDef === null) { \/\/ \u30d5\u30a3\u30fc\u30eb\u30c9\u540d\u306f\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u306e\u306b\u3001\u5024\u306e\u30c7\u30fc\u30bf\u9805\u76ee\u304c\u9078\u629e\u3055\u308c\u3066\u306a\u3044\u5834\u5408\n            \/\/ \u300cSendGrid: \u5b9b\u5148\u8ffd\u52a0\/\u66f4\u65b0\u300d\u3068\u4ed5\u69d8\u3092\u5408\u308f\u305b\u308b\u305f\u3081\u3001null \u3092\u30bb\u30c3\u30c8\u305b\u305a\u306b\u30a8\u30e9\u30fc\u306b\u3059\u308b\n            throw new Error(`Value ${i + 1} is not selected while its field name is set.`);\n        }\n        const dataObj = engine.findData(fieldValueDef);\n        \/\/ \u6587\u5b57\u578b\u30c7\u30fc\u30bf\u3092\u60f3\u5b9a\u3057\u305f\u6587\u5b57\u6570\u30c1\u30a7\u30c3\u30af\u3002\u6570\u5024\u578b\u3001\u65e5\u4ed8\u578b\u30c7\u30fc\u30bf\u4ee5\u5916\u304c\u6587\u5b57\u6570\u5236\u9650\u306b\u5f15\u3063\u304b\u304b\u308b\u3053\u3068\u306f\u3042\u308a\u3048\u306a\u3044\n        if (dataObj !== null &amp;&amp; dataObj.toString().length &gt; MAX_FIELD_VALUE_LENGTH) {\n            throw new Error(`Custom Field Value of &quot;${fieldName}&quot; must be within ${MAX_FIELD_VALUE_LENGTH} characters.`);\n        }\n        customFieldMap.set(fieldName, fieldValueDef);\n    }\n    return customFieldMap;\n}\n\n\/**\n  * \u5168\u30ab\u30b9\u30bf\u30e0\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u4e00\u89a7\u3092\u53d6\u5f97\u3059\u308b\n  * @param {AuthSettingWrapper} auth \u8a8d\u8a3c\u8a2d\u5b9a\n  * @return {Array&lt;Object&gt;} allCustomFields\n  *\/\nfunction getAllCustomFields(auth) {\n    const response = httpClient.begin()\n        .authSetting(auth)\n        .get(&apos;https:\/\/api.sendgrid.com\/v3\/marketing\/field_definitions&apos;);\n\n    const status = response.getStatusCode();\n    const responseStr = response.getResponseAsString();\n    if (status !== 200) {\n        engine.log(responseStr);\n        throw new Error(`Failed to get field definitions. status: ${status}`);\n    }\n    return JSON.parse(responseStr).custom_fields;\n}\n\n\/**\n  * \u5b9b\u5148\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306b\u30ab\u30b9\u30bf\u30e0\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u60c5\u5831\u3092\u8ffd\u52a0\u3059\u308b\n  * @param {Object} contact \u5b9b\u5148\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\n  * @param {Map&lt;String, DataDefinitionView&gt;} customFieldMap \u30ab\u30b9\u30bf\u30e0\u30d5\u30a3\u30fc\u30eb\u30c9\u306e Map\n  * @param {Array&lt;Object&gt;} allCustomFields \u5168\u30ab\u30b9\u30bf\u30e0\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u4e00\u89a7\n  *\/\nfunction setCustomFields(contact, customFieldMap, allCustomFields) {\n    const customFields = {};\n    customFieldMap.forEach((dataDef, fieldName) =&gt; {\n        const customField = allCustomFields.find(field =&gt; field.name === fieldName);\n        if (customField === undefined) { \/\/ \u6307\u5b9a\u3057\u305f\u30d5\u30a3\u30fc\u30eb\u30c9\u540d\u306e\u30ab\u30b9\u30bf\u30e0\u30d5\u30a3\u30fc\u30eb\u30c9\u304c\u306a\u3044\u5834\u5408\n            throw new Error(`Custom Field named &quot;${fieldName}&quot; does not exist.`);\n        }\n        switch (customField.field_type) {\n            case &apos;Text&apos;:\n                addTextField(customFields, customField.id, customField.name, dataDef);\n                break;\n            case &apos;Number&apos;:\n                addNumberField(customFields, customField.id, customField.name, dataDef);\n                break;\n            case &apos;Date&apos;:\n                addDateField(customFields, customField.id, customField.name, dataDef);\n                break;\n            default:\n                \/\/ \u3042\u308a\u3048\u306a\u3044\u304c\u3001\u5ff5\u306e\u305f\u3081\n                throw new Error(`Custom Field type &quot;${customField.field_type}&quot; is not supported.`);\n        }\n    });\n    Object.assign(contact, {custom_fields: customFields});\n}\n\n\/**\n  * \u6587\u5b57\u578b\u30ab\u30b9\u30bf\u30e0\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u60c5\u5831\u3092\u8ffd\u52a0\u3059\u308b\n  * @param {Object} customFields \u8a2d\u5b9a\u3059\u308b\u30ab\u30b9\u30bf\u30e0\u30d5\u30a3\u30fc\u30eb\u30c9\u4e00\u89a7\n  * @param {String} customFieldId \u30ab\u30b9\u30bf\u30e0\u30d5\u30a3\u30fc\u30eb\u30c9\u306e ID\n  * @param {String} customFieldName \u30ab\u30b9\u30bf\u30e0\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u540d\u524d\uff08\u30a8\u30e9\u30fc\u51fa\u529b\u7528\uff09\n  * @param {DataDefinitionView} dataDef \u30c7\u30fc\u30bf\u5b9a\u7fa9\n  *\/\nfunction addTextField(customFields, customFieldId, customFieldName, dataDef) {\n    if (!dataDef.matchDataType(&apos;STRING_TEXTFIELD&apos;)) {\n        throw new Error(`Custom Field &quot;${customFieldName}&quot; is Text type. Its value must be set by STRING_TEXTFIELD type data item.`);\n    }\n    const dataObj = engine.findData(dataDef); \/\/ String or null\n    const fieldValue = dataObj ?? &apos;&apos;; \/\/ String\n    Object.assign(customFields, {[customFieldId]: fieldValue});\n}\n\n\/**\n  * \u6570\u5024\u578b\u30ab\u30b9\u30bf\u30e0\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u60c5\u5831\u3092\u8ffd\u52a0\u3059\u308b\n  * @param {Object} customFields \u8a2d\u5b9a\u3059\u308b\u30ab\u30b9\u30bf\u30e0\u30d5\u30a3\u30fc\u30eb\u30c9\u4e00\u89a7\n  * @param {String} customFieldId \u30ab\u30b9\u30bf\u30e0\u30d5\u30a3\u30fc\u30eb\u30c9\u306e ID\n  * @param {String} customFieldName \u30ab\u30b9\u30bf\u30e0\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u540d\u524d\uff08\u30a8\u30e9\u30fc\u51fa\u529b\u7528\uff09\n  * @param {DataDefinitionView} dataDef \u30c7\u30fc\u30bf\u5b9a\u7fa9\n  *\/\nfunction addNumberField(customFields, customFieldId, customFieldName, dataDef) {\n    if (!dataDef.matchDataType(&apos;DECIMAL&apos;)) {\n        throw new Error(`Custom Field &quot;${customFieldName}&quot; is Number type. Its value must be set by DECIMAL type data item.`);\n    }\n    const dataObj = engine.findData(dataDef); \/\/ BigDecimal or null\n    let fieldValue = &apos;&apos;;\n    if (dataObj !== null) {\n        fieldValue = dataObj.doubleValue();\n    }\n    Object.assign(customFields, {[customFieldId]: fieldValue});\n}\n\n\/**\n  * \u65e5\u4ed8\u578b\u30ab\u30b9\u30bf\u30e0\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u60c5\u5831\u3092\u8ffd\u52a0\u3059\u308b\n  * @param {Object} customFields \u8a2d\u5b9a\u3059\u308b\u30ab\u30b9\u30bf\u30e0\u30d5\u30a3\u30fc\u30eb\u30c9\u4e00\u89a7\n  * @param {String} customFieldId \u30ab\u30b9\u30bf\u30e0\u30d5\u30a3\u30fc\u30eb\u30c9\u306e ID\n  * @param {String} customFieldName \u30ab\u30b9\u30bf\u30e0\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u540d\u524d\uff08\u30a8\u30e9\u30fc\u51fa\u529b\u7528\uff09\n  * @param {DataDefinitionView} dataDef \u30c7\u30fc\u30bf\u5b9a\u7fa9\n  *\/\nfunction addDateField(customFields, customFieldId, customFieldName, dataDef) {\n    if (!dataDef.matchDataType(&apos;DATE_YMD&apos;)) {\n        throw new Error(`Custom Field &quot;${customFieldName}&quot; is Date type. Its value must be set by DATE_YMD type data item.`);\n    }\n    const dataObj = engine.findData(dataDef); \/\/ AddableDate or null\n    let fieldValue = &apos;&apos;;\n    if (dataObj !== null) {\n        fieldValue = dateFormatter.format(&apos;MM\/dd\/yyyy&apos;, dataObj);\n    }\n    Object.assign(customFields, {[customFieldId]: fieldValue});\n}\n\n\/**\n  * \u5b9b\u5148\u3092\u8ffd\u52a0\/\u66f4\u65b0\u3059\u308b\n  * @param {AuthSettingWrapper} auth \u8a8d\u8a3c\u8a2d\u5b9a\n  * @param {Object} contact \u5b9b\u5148\u60c5\u5831\n  * @return {String} jobId\n  *\/\nfunction upsertContact(auth, contact) {\n    const requestBody = {\n        &quot;contacts&quot;: [contact]\n    };\n    const response = httpClient.begin()\n        .authSetting(auth)\n        .body(JSON.stringify(requestBody), &apos;application\/json&apos;)\n        .put(&apos;https:\/\/api.sendgrid.com\/v3\/marketing\/contacts&apos;);\n\n    const status = response.getStatusCode();\n    const responseStr = response.getResponseAsString();\n    if (status !== 202) {\n        engine.log(responseStr);\n        throw new Error(`Failed to upsert contact. status: ${status}`);\n    }\n    return JSON.parse(responseStr).job_id;\n}\n\n\/**\n  * \u30b8\u30e7\u30d6\u306e\u51e6\u7406\u72b6\u6cc1\u3092\u78ba\u8a8d\u3059\u308b\n  * @param {AuthSettingWrapper} auth \u8a8d\u8a3c\u8a2d\u5b9a\n  * @param {String} jobId \u30b8\u30e7\u30d6 ID\n  * @return {boolean} true: \u5b8c\u4e86, false: \u672a\u5b8c\u4e86\n  *\/\nfunction checkStatus(auth, jobId) {\n    const response = httpClient.begin()\n        .authSetting(auth)\n        .get(`https:\/\/api.sendgrid.com\/v3\/marketing\/contacts\/imports\/${jobId}`);\n\n    const status = response.getStatusCode();\n    const responseStr = response.getResponseAsString();\n    if (status !== 200) {\n        engine.log(responseStr);\n        throw new Error(`Failed to get upsert status. status: ${status}`);\n    }\n    const jobStatus = JSON.parse(responseStr).status;\n    switch (jobStatus) {\n        case &apos;pending&apos;: \/\/ \u51e6\u7406\u4e2d\n            return false;\n        case &apos;completed&apos;: \/\/ \u5b8c\u4e86\n            return true;\n        default: \/\/ errored or failed\n            engine.log(responseStr);\n            throw new Error(&apos;Failed to complete upserting the contact.&apos;);\n    }\n}\n\n    <\/code><\/pre><\/div>\n<\/div><\/details><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>This item adds or updates a contact on SendGrid with the specified custom field values. If a contact with the specified email address already exists, the contact will be updated.<\/p>\n","protected":false},"author":17,"featured_media":148991,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","_uag_custom_page_level_css":"","advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_seo_schema_type":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_wpcom_ai_launchpad_first_post":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"{title}\n\n{excerpt}\n\n{url}","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"_wpas_customize_per_network":false,"jetpack_post_was_ever_published":false},"categories":[551],"tags":[],"faq_section":[],"class_list":["post-148399","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bpmn-icons"],"jetpack_publicize_connections":[],"uagb_featured_image_src":{"full":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/bpmn-icon-service-task-sendgrid.png?fit=1200%2C675&ssl=1",1200,675,false],"thumbnail":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/bpmn-icon-service-task-sendgrid.png?resize=440%2C440&ssl=1",440,440,true],"medium":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/bpmn-icon-service-task-sendgrid.png?fit=560%2C315&ssl=1",560,315,true],"medium_large":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/bpmn-icon-service-task-sendgrid.png?fit=768%2C432&ssl=1",768,432,true],"large":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/bpmn-icon-service-task-sendgrid.png?fit=1024%2C576&ssl=1",1024,576,true],"1536x1536":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/bpmn-icon-service-task-sendgrid.png?fit=1200%2C675&ssl=1",1200,675,true],"2048x2048":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/bpmn-icon-service-task-sendgrid.png?fit=1200%2C675&ssl=1",1200,675,true],"newspack-article-block-landscape-large":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/bpmn-icon-service-task-sendgrid.png?resize=1200%2C675&ssl=1",1200,675,true],"newspack-article-block-portrait-large":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/bpmn-icon-service-task-sendgrid.png?resize=900%2C675&ssl=1",900,675,true],"newspack-article-block-square-large":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/bpmn-icon-service-task-sendgrid.png?resize=1200%2C675&ssl=1",1200,675,true],"newspack-article-block-landscape-medium":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/bpmn-icon-service-task-sendgrid.png?resize=800%2C600&ssl=1",800,600,true],"newspack-article-block-portrait-medium":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/bpmn-icon-service-task-sendgrid.png?resize=600%2C675&ssl=1",600,675,true],"newspack-article-block-square-medium":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/bpmn-icon-service-task-sendgrid.png?resize=800%2C675&ssl=1",800,675,true],"newspack-article-block-landscape-intermediate":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/bpmn-icon-service-task-sendgrid.png?resize=600%2C450&ssl=1",600,450,true],"newspack-article-block-portrait-intermediate":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/bpmn-icon-service-task-sendgrid.png?resize=450%2C600&ssl=1",450,600,true],"newspack-article-block-square-intermediate":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/bpmn-icon-service-task-sendgrid.png?resize=600%2C600&ssl=1",600,600,true],"newspack-article-block-landscape-small":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/bpmn-icon-service-task-sendgrid.png?resize=400%2C300&ssl=1",400,300,true],"newspack-article-block-portrait-small":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/bpmn-icon-service-task-sendgrid.png?resize=300%2C400&ssl=1",300,400,true],"newspack-article-block-square-small":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/bpmn-icon-service-task-sendgrid.png?resize=400%2C400&ssl=1",400,400,true],"newspack-article-block-landscape-tiny":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/bpmn-icon-service-task-sendgrid.png?resize=200%2C150&ssl=1",200,150,true],"newspack-article-block-portrait-tiny":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/bpmn-icon-service-task-sendgrid.png?resize=150%2C200&ssl=1",150,200,true],"newspack-article-block-square-tiny":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/bpmn-icon-service-task-sendgrid.png?resize=200%2C200&ssl=1",200,200,true],"newspack-article-block-uncropped":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/bpmn-icon-service-task-sendgrid.png?fit=1200%2C675&ssl=1",1200,675,true]},"uagb_author_info":{"display_name":"Shiho Tatsumi","author_link":"https:\/\/support.questetra.com\/en\/author\/tatsumi48c607ec82\/"},"uagb_comment_info":1,"uagb_excerpt":"This item adds or updates a contact on SendGrid with the specified custom field values. If a contact with the specified email address already exists, the contact will be updated.","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p9DiIh-CBx","jetpack-related-posts":[{"id":112772,"url":"https:\/\/support.questetra.com\/en\/addons\/sendgrid-recipient-update\/","url_meta":{"origin":148399,"position":0},"title":"SendGrid: Recipient, Add or Update","author":"Hajime Yahagi","date":"2021-09-14","format":false,"excerpt":"Adds a destination to the SendGrid contact. If a destination with the same email address has already been registered, the value of the reserved and custom fields will be updated.","rel":"","context":"In &quot;Add-ons&quot;","block_context":{"text":"Add-ons","link":"https:\/\/support.questetra.com\/en\/category\/addons\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/SendGrid-Recipient-Update-1200x675-en.png?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/SendGrid-Recipient-Update-1200x675-en.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/SendGrid-Recipient-Update-1200x675-en.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/SendGrid-Recipient-Update-1200x675-en.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/SendGrid-Recipient-Update-1200x675-en.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":153773,"url":"https:\/\/support.questetra.com\/en\/developer-blog\/sendgrid-bulk-send\/","url_meta":{"origin":148399,"position":1},"title":"Send Bulk Emails to a SendGrid Recipient List","author":"Hirotaka NISHI","date":"2023-11-01","format":false,"excerpt":"This section describes how to set up a SendGrid email dispatch using [Twilio SendGrid: Send Bulk Email].","rel":"","context":"In &quot;Questetra Developers Blog&quot;","block_context":{"text":"Questetra Developers Blog","link":"https:\/\/support.questetra.com\/en\/category\/developer-blog\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/10\/sendgrid-bulk-send-fi-en-1.png?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/10\/sendgrid-bulk-send-fi-en-1.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/10\/sendgrid-bulk-send-fi-en-1.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/10\/sendgrid-bulk-send-fi-en-1.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/10\/sendgrid-bulk-send-fi-en-1.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":81857,"url":"https:\/\/support.questetra.com\/en\/addons\/sendgrid-mail-bulk-send\/","url_meta":{"origin":148399,"position":2},"title":"Sendgrid: Send Bulk Emails","author":"HatanakaAkihiro","date":"2020-12-29","format":false,"excerpt":"Send a mail from SendGrid.","rel":"","context":"In &quot;Add-ons&quot;","block_context":{"text":"Add-ons","link":"https:\/\/support.questetra.com\/en\/category\/addons\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2019\/11\/sendgrid-mail-bulk-send.png?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2019\/11\/sendgrid-mail-bulk-send.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2019\/11\/sendgrid-mail-bulk-send.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2019\/11\/sendgrid-mail-bulk-send.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2019\/11\/sendgrid-mail-bulk-send.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":148545,"url":"https:\/\/support.questetra.com\/en\/versions\/version-151\/","url_meta":{"origin":148399,"position":3},"title":"2023-08-13 Ver. 15.1 Added Auto-step to Generate PDF from HTML","author":"Hirotaka NISHI","date":"2023-08-01","format":false,"excerpt":"In cooperation with DocRaptor, you can now generate PDF from HTML automatically. In addition, you can now send emails in bulk by linking with SendGrid. Changed the security model in the HTTP authorization setting.","rel":"","context":"In &quot;Version Info&quot;","block_context":{"text":"Version Info","link":"https:\/\/support.questetra.com\/en\/category\/versions\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/08\/version-151-fi-en.png?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/08\/version-151-fi-en.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/08\/version-151-fi-en.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/08\/version-151-fi-en.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/08\/version-151-fi-en.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":148297,"url":"https:\/\/support.questetra.com\/en\/bpmn-icons\/service-task-sendgrid-contact-upsert\/","url_meta":{"origin":148399,"position":4},"title":"Twilio SendGrid: Add or Update Contact","author":"Shiho Tatsumi","date":"2024-05-30","format":false,"excerpt":"This item adds or updates a contact on SendGrid. If a contact with the specified email address already exists, the contact will be updated.","rel":"","context":"In &quot;BPMN Icons&quot;","block_context":{"text":"BPMN Icons","link":"https:\/\/support.questetra.com\/en\/category\/bpmn-icons\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/bpmn-icon-service-task-sendgrid.png?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/bpmn-icon-service-task-sendgrid.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/bpmn-icon-service-task-sendgrid.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/bpmn-icon-service-task-sendgrid.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/bpmn-icon-service-task-sendgrid.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":112834,"url":"https:\/\/support.questetra.com\/en\/addons\/sendgrid-global-unsubscribes-add-emails\/","url_meta":{"origin":148399,"position":5},"title":"SendGrid: Global Unsubscribes, Add Emails","author":"Hajime Yahagi","date":"2021-09-14","format":false,"excerpt":"Adds Email addresses to the SendGrid Global Unsubscribe list.","rel":"","context":"In &quot;Add-ons&quot;","block_context":{"text":"Add-ons","link":"https:\/\/support.questetra.com\/en\/category\/addons\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/SendGrid-Global-Unsubcribes-Add-Emails-1200x675-en.png?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/SendGrid-Global-Unsubcribes-Add-Emails-1200x675-en.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/SendGrid-Global-Unsubcribes-Add-Emails-1200x675-en.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/SendGrid-Global-Unsubcribes-Add-Emails-1200x675-en.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/SendGrid-Global-Unsubcribes-Add-Emails-1200x675-en.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]}],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/07\/bpmn-icon-service-task-sendgrid.png?fit=1200%2C675&ssl=1","_links":{"self":[{"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/posts\/148399","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/users\/17"}],"replies":[{"embeddable":true,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/comments?post=148399"}],"version-history":[{"count":8,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/posts\/148399\/revisions"}],"predecessor-version":[{"id":161868,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/posts\/148399\/revisions\/161868"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/media\/148991"}],"wp:attachment":[{"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/media?parent=148399"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/categories?post=148399"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/tags?post=148399"},{"taxonomy":"faq_section","embeddable":true,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/faq_section?post=148399"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}