[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"docs-id-\u002Fdocs\u002Fapi\u002Fwebhooks":3},{"id":4,"title":5,"body":6,"category":342,"code_examples":1173,"demos":1173,"description":1174,"extension":1175,"meta":1176,"navigation":1173,"order":100,"path":1177,"seo":1178,"sitemap":1181,"stem":1183,"tags":1184,"toc":575,"videos":1173,"__hash__":1188},"docs\u002Fdocs\u002Fapi\u002Fwebhooks.md","Webhooks - Event Real-time dan Verifikasi Signature",{"type":7,"value":8,"toc":1160},"minimark",[9,14,18,23,26,51,55,58,70,73,80,352,357,535,539,542,1087,1091,1094,1113,1117,1124,1138,1142,1156],[10,11,13],"h1",{"id":12},"webhooks","Webhooks",[15,16,17],"p",{},"Webhook Konektor mengirim event secara asynchronous ketika perubahan lead terjadi. Delivery menggunakan queue, sehingga integrasi Anda harus mengasumsikan model at-least-once delivery.",[19,20,22],"h2",{"id":21},"header-webhook","Header Webhook",[15,24,25],{},"Setiap request webhook menyertakan header:",[27,28,29,36,41,46],"ol",{},[30,31,32],"li",{},[33,34,35],"code",{},"Content-Type: application\u002Fjson",[30,37,38],{},[33,39,40],{},"X-Konektor-Signature: t=\u003Cunix_timestamp>,v1=\u003Chex_hmac_sha256>",[30,42,43],{},[33,44,45],{},"X-Konektor-Event: \u003Cevent_name>",[30,47,48],{},[33,49,50],{},"User-Agent: Konektor-Webhook\u002F1.0",[19,52,54],{"id":53},"event-yang-dikirim","Event yang Dikirim",[15,56,57],{},"Event utama pada flow lead:",[27,59,60,65],{},[30,61,62],{},[33,63,64],{},"lead.created",[30,66,67],{},[33,68,69],{},"lead.updated",[15,71,72],{},"Payload body berisi objek event langsung (bukan envelope tambahan).",[74,75,77,78],"h3",{"id":76},"contoh-leadcreated","Contoh ",[33,79,64],{},[81,82,87],"pre",{"className":83,"code":84,"language":85,"meta":86,"style":86},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"lead\": {\n    \"id\": \"550e8400-e29b-41d4-a716-446655440000\",\n    \"uniqueCode\": \"API_1A2B3C4D\",\n    \"externalRef\": \"crm-001\",\n    \"firstName\": \"Budi\",\n    \"email\": \"budi@example.com\",\n    \"phone\": \"6281234567890\",\n    \"status\": \"new\",\n    \"priority\": \"medium\",\n    \"city\": null,\n    \"country\": null\n  },\n  \"source\": \"api\"\n}\n","json","",[33,88,89,98,117,143,164,185,206,227,248,269,290,305,320,326,346],{"__ignoreMap":86},[90,91,94],"span",{"class":92,"line":93},"line",1,[90,95,97],{"class":96},"sMK4o","{\n",[90,99,101,104,108,111,114],{"class":92,"line":100},2,[90,102,103],{"class":96},"  \"",[90,105,107],{"class":106},"spNyl","lead",[90,109,110],{"class":96},"\"",[90,112,113],{"class":96},":",[90,115,116],{"class":96}," {\n",[90,118,120,123,127,129,131,134,138,140],{"class":92,"line":119},3,[90,121,122],{"class":96},"    \"",[90,124,126],{"class":125},"sBMFI","id",[90,128,110],{"class":96},[90,130,113],{"class":96},[90,132,133],{"class":96}," \"",[90,135,137],{"class":136},"sfazB","550e8400-e29b-41d4-a716-446655440000",[90,139,110],{"class":96},[90,141,142],{"class":96},",\n",[90,144,146,148,151,153,155,157,160,162],{"class":92,"line":145},4,[90,147,122],{"class":96},[90,149,150],{"class":125},"uniqueCode",[90,152,110],{"class":96},[90,154,113],{"class":96},[90,156,133],{"class":96},[90,158,159],{"class":136},"API_1A2B3C4D",[90,161,110],{"class":96},[90,163,142],{"class":96},[90,165,167,169,172,174,176,178,181,183],{"class":92,"line":166},5,[90,168,122],{"class":96},[90,170,171],{"class":125},"externalRef",[90,173,110],{"class":96},[90,175,113],{"class":96},[90,177,133],{"class":96},[90,179,180],{"class":136},"crm-001",[90,182,110],{"class":96},[90,184,142],{"class":96},[90,186,188,190,193,195,197,199,202,204],{"class":92,"line":187},6,[90,189,122],{"class":96},[90,191,192],{"class":125},"firstName",[90,194,110],{"class":96},[90,196,113],{"class":96},[90,198,133],{"class":96},[90,200,201],{"class":136},"Budi",[90,203,110],{"class":96},[90,205,142],{"class":96},[90,207,209,211,214,216,218,220,223,225],{"class":92,"line":208},7,[90,210,122],{"class":96},[90,212,213],{"class":125},"email",[90,215,110],{"class":96},[90,217,113],{"class":96},[90,219,133],{"class":96},[90,221,222],{"class":136},"budi@example.com",[90,224,110],{"class":96},[90,226,142],{"class":96},[90,228,230,232,235,237,239,241,244,246],{"class":92,"line":229},8,[90,231,122],{"class":96},[90,233,234],{"class":125},"phone",[90,236,110],{"class":96},[90,238,113],{"class":96},[90,240,133],{"class":96},[90,242,243],{"class":136},"6281234567890",[90,245,110],{"class":96},[90,247,142],{"class":96},[90,249,251,253,256,258,260,262,265,267],{"class":92,"line":250},9,[90,252,122],{"class":96},[90,254,255],{"class":125},"status",[90,257,110],{"class":96},[90,259,113],{"class":96},[90,261,133],{"class":96},[90,263,264],{"class":136},"new",[90,266,110],{"class":96},[90,268,142],{"class":96},[90,270,272,274,277,279,281,283,286,288],{"class":92,"line":271},10,[90,273,122],{"class":96},[90,275,276],{"class":125},"priority",[90,278,110],{"class":96},[90,280,113],{"class":96},[90,282,133],{"class":96},[90,284,285],{"class":136},"medium",[90,287,110],{"class":96},[90,289,142],{"class":96},[90,291,293,295,298,300,302],{"class":92,"line":292},11,[90,294,122],{"class":96},[90,296,297],{"class":125},"city",[90,299,110],{"class":96},[90,301,113],{"class":96},[90,303,304],{"class":96}," null,\n",[90,306,308,310,313,315,317],{"class":92,"line":307},12,[90,309,122],{"class":96},[90,311,312],{"class":125},"country",[90,314,110],{"class":96},[90,316,113],{"class":96},[90,318,319],{"class":96}," null\n",[90,321,323],{"class":92,"line":322},13,[90,324,325],{"class":96},"  },\n",[90,327,329,331,334,336,338,340,343],{"class":92,"line":328},14,[90,330,103],{"class":96},[90,332,333],{"class":106},"source",[90,335,110],{"class":96},[90,337,113],{"class":96},[90,339,133],{"class":96},[90,341,342],{"class":136},"api",[90,344,345],{"class":96},"\"\n",[90,347,349],{"class":92,"line":348},15,[90,350,351],{"class":96},"}\n",[74,353,77,355],{"id":354},"contoh-leadupdated",[33,356,69],{},[81,358,360],{"className":83,"code":359,"language":85,"meta":86,"style":86},"{\n  \"lead\": {\n    \"id\": \"550e8400-e29b-41d4-a716-446655440000\",\n    \"uniqueCode\": \"API_1A2B3C4D\",\n    \"status\": \"qualified\"\n  },\n  \"leadId\": \"550e8400-e29b-41d4-a716-446655440000\",\n  \"previousStatus\": \"new\",\n  \"newStatus\": \"qualified\",\n  \"changes\": [\"status\"],\n  \"source\": \"api\"\n}\n",[33,361,362,366,378,396,414,431,435,454,473,492,515,531],{"__ignoreMap":86},[90,363,364],{"class":92,"line":93},[90,365,97],{"class":96},[90,367,368,370,372,374,376],{"class":92,"line":100},[90,369,103],{"class":96},[90,371,107],{"class":106},[90,373,110],{"class":96},[90,375,113],{"class":96},[90,377,116],{"class":96},[90,379,380,382,384,386,388,390,392,394],{"class":92,"line":119},[90,381,122],{"class":96},[90,383,126],{"class":125},[90,385,110],{"class":96},[90,387,113],{"class":96},[90,389,133],{"class":96},[90,391,137],{"class":136},[90,393,110],{"class":96},[90,395,142],{"class":96},[90,397,398,400,402,404,406,408,410,412],{"class":92,"line":145},[90,399,122],{"class":96},[90,401,150],{"class":125},[90,403,110],{"class":96},[90,405,113],{"class":96},[90,407,133],{"class":96},[90,409,159],{"class":136},[90,411,110],{"class":96},[90,413,142],{"class":96},[90,415,416,418,420,422,424,426,429],{"class":92,"line":166},[90,417,122],{"class":96},[90,419,255],{"class":125},[90,421,110],{"class":96},[90,423,113],{"class":96},[90,425,133],{"class":96},[90,427,428],{"class":136},"qualified",[90,430,345],{"class":96},[90,432,433],{"class":92,"line":187},[90,434,325],{"class":96},[90,436,437,439,442,444,446,448,450,452],{"class":92,"line":208},[90,438,103],{"class":96},[90,440,441],{"class":106},"leadId",[90,443,110],{"class":96},[90,445,113],{"class":96},[90,447,133],{"class":96},[90,449,137],{"class":136},[90,451,110],{"class":96},[90,453,142],{"class":96},[90,455,456,458,461,463,465,467,469,471],{"class":92,"line":229},[90,457,103],{"class":96},[90,459,460],{"class":106},"previousStatus",[90,462,110],{"class":96},[90,464,113],{"class":96},[90,466,133],{"class":96},[90,468,264],{"class":136},[90,470,110],{"class":96},[90,472,142],{"class":96},[90,474,475,477,480,482,484,486,488,490],{"class":92,"line":250},[90,476,103],{"class":96},[90,478,479],{"class":106},"newStatus",[90,481,110],{"class":96},[90,483,113],{"class":96},[90,485,133],{"class":96},[90,487,428],{"class":136},[90,489,110],{"class":96},[90,491,142],{"class":96},[90,493,494,496,499,501,503,506,508,510,512],{"class":92,"line":271},[90,495,103],{"class":96},[90,497,498],{"class":106},"changes",[90,500,110],{"class":96},[90,502,113],{"class":96},[90,504,505],{"class":96}," [",[90,507,110],{"class":96},[90,509,255],{"class":136},[90,511,110],{"class":96},[90,513,514],{"class":96},"],\n",[90,516,517,519,521,523,525,527,529],{"class":92,"line":292},[90,518,103],{"class":96},[90,520,333],{"class":106},[90,522,110],{"class":96},[90,524,113],{"class":96},[90,526,133],{"class":96},[90,528,342],{"class":136},[90,530,345],{"class":96},[90,532,533],{"class":92,"line":307},[90,534,351],{"class":96},[19,536,538],{"id":537},"verifikasi-signature-timing-safe","Verifikasi Signature (Timing-Safe)",[15,540,541],{},"Gunakan raw body request saat menghitung HMAC. Jangan pakai body yang sudah di-parse lalu di-stringify ulang.",[81,543,547],{"className":544,"code":545,"language":546,"meta":86,"style":86},"language-js shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import crypto from 'node:crypto'\n\nfunction verifyKonektorSignature(rawBody, signatureHeader, secret) {\n  const parts = signatureHeader.split(',')\n  const timestamp = parts.find(p => p.startsWith('t='))?.slice(2)\n  const signature = parts.find(p => p.startsWith('v1='))?.slice(3)\n\n  if (!timestamp || !signature) return false\n\n  const now = Math.floor(Date.now() \u002F 1000)\n  if (Math.abs(now - Number(timestamp)) > 300) return false\n\n  const expected = crypto\n    .createHmac('sha256', secret)\n    .update(`${timestamp}.${rawBody}`)\n    .digest('hex')\n\n  const providedBuf = Buffer.from(signature, 'hex')\n  const expectedBuf = Buffer.from(expected, 'hex')\n\n  if (providedBuf.length !== expectedBuf.length) return false\n  return crypto.timingSafeEqual(providedBuf, expectedBuf)\n}\n","js",[33,548,549,571,577,609,641,698,747,751,784,788,826,869,873,885,908,937,956,961,992,1023,1028,1058,1082],{"__ignoreMap":86},[90,550,551,555,559,562,565,568],{"class":92,"line":93},[90,552,554],{"class":553},"s7zQu","import",[90,556,558],{"class":557},"sTEyZ"," crypto ",[90,560,561],{"class":553},"from",[90,563,564],{"class":96}," '",[90,566,567],{"class":136},"node:crypto",[90,569,570],{"class":96},"'\n",[90,572,573],{"class":92,"line":100},[90,574,576],{"emptyLinePlaceholder":575},true,"\n",[90,578,579,582,586,589,593,596,599,601,604,607],{"class":92,"line":119},[90,580,581],{"class":106},"function",[90,583,585],{"class":584},"s2Zo4"," verifyKonektorSignature",[90,587,588],{"class":96},"(",[90,590,592],{"class":591},"sHdIc","rawBody",[90,594,595],{"class":96},",",[90,597,598],{"class":591}," signatureHeader",[90,600,595],{"class":96},[90,602,603],{"class":591}," secret",[90,605,606],{"class":96},")",[90,608,116],{"class":96},[90,610,611,614,617,620,622,625,628,631,634,636,638],{"class":92,"line":145},[90,612,613],{"class":106},"  const",[90,615,616],{"class":557}," parts",[90,618,619],{"class":96}," =",[90,621,598],{"class":557},[90,623,624],{"class":96},".",[90,626,627],{"class":584},"split",[90,629,588],{"class":630},"swJcz",[90,632,633],{"class":96},"'",[90,635,595],{"class":136},[90,637,633],{"class":96},[90,639,640],{"class":630},")\n",[90,642,643,645,648,650,652,654,657,659,661,664,667,669,672,674,676,679,681,684,687,690,692,696],{"class":92,"line":166},[90,644,613],{"class":106},[90,646,647],{"class":557}," timestamp",[90,649,619],{"class":96},[90,651,616],{"class":557},[90,653,624],{"class":96},[90,655,656],{"class":584},"find",[90,658,588],{"class":630},[90,660,15],{"class":591},[90,662,663],{"class":106}," =>",[90,665,666],{"class":557}," p",[90,668,624],{"class":96},[90,670,671],{"class":584},"startsWith",[90,673,588],{"class":630},[90,675,633],{"class":96},[90,677,678],{"class":136},"t=",[90,680,633],{"class":96},[90,682,683],{"class":630},"))",[90,685,686],{"class":96},"?.",[90,688,689],{"class":584},"slice",[90,691,588],{"class":630},[90,693,695],{"class":694},"sbssI","2",[90,697,640],{"class":630},[90,699,700,702,705,707,709,711,713,715,717,719,721,723,725,727,729,732,734,736,738,740,742,745],{"class":92,"line":187},[90,701,613],{"class":106},[90,703,704],{"class":557}," signature",[90,706,619],{"class":96},[90,708,616],{"class":557},[90,710,624],{"class":96},[90,712,656],{"class":584},[90,714,588],{"class":630},[90,716,15],{"class":591},[90,718,663],{"class":106},[90,720,666],{"class":557},[90,722,624],{"class":96},[90,724,671],{"class":584},[90,726,588],{"class":630},[90,728,633],{"class":96},[90,730,731],{"class":136},"v1=",[90,733,633],{"class":96},[90,735,683],{"class":630},[90,737,686],{"class":96},[90,739,689],{"class":584},[90,741,588],{"class":630},[90,743,744],{"class":694},"3",[90,746,640],{"class":630},[90,748,749],{"class":92,"line":208},[90,750,576],{"emptyLinePlaceholder":575},[90,752,753,756,759,762,765,768,771,774,777,780],{"class":92,"line":229},[90,754,755],{"class":553},"  if",[90,757,758],{"class":630}," (",[90,760,761],{"class":96},"!",[90,763,764],{"class":557},"timestamp",[90,766,767],{"class":96}," ||",[90,769,770],{"class":96}," !",[90,772,773],{"class":557},"signature",[90,775,776],{"class":630},") ",[90,778,779],{"class":553},"return",[90,781,783],{"class":782},"sfNiH"," false\n",[90,785,786],{"class":92,"line":250},[90,787,576],{"emptyLinePlaceholder":575},[90,789,790,792,795,797,800,802,805,807,810,812,815,818,821,824],{"class":92,"line":271},[90,791,613],{"class":106},[90,793,794],{"class":557}," now",[90,796,619],{"class":96},[90,798,799],{"class":557}," Math",[90,801,624],{"class":96},[90,803,804],{"class":584},"floor",[90,806,588],{"class":630},[90,808,809],{"class":557},"Date",[90,811,624],{"class":96},[90,813,814],{"class":584},"now",[90,816,817],{"class":630},"() ",[90,819,820],{"class":96},"\u002F",[90,822,823],{"class":694}," 1000",[90,825,640],{"class":630},[90,827,828,830,832,835,837,840,842,844,847,850,852,854,857,860,863,865,867],{"class":92,"line":292},[90,829,755],{"class":553},[90,831,758],{"class":630},[90,833,834],{"class":557},"Math",[90,836,624],{"class":96},[90,838,839],{"class":584},"abs",[90,841,588],{"class":630},[90,843,814],{"class":557},[90,845,846],{"class":96}," -",[90,848,849],{"class":584}," Number",[90,851,588],{"class":630},[90,853,764],{"class":557},[90,855,856],{"class":630},")) ",[90,858,859],{"class":96},">",[90,861,862],{"class":694}," 300",[90,864,776],{"class":630},[90,866,779],{"class":553},[90,868,783],{"class":782},[90,870,871],{"class":92,"line":307},[90,872,576],{"emptyLinePlaceholder":575},[90,874,875,877,880,882],{"class":92,"line":322},[90,876,613],{"class":106},[90,878,879],{"class":557}," expected",[90,881,619],{"class":96},[90,883,884],{"class":557}," crypto\n",[90,886,887,890,893,895,897,900,902,904,906],{"class":92,"line":328},[90,888,889],{"class":96},"    .",[90,891,892],{"class":584},"createHmac",[90,894,588],{"class":630},[90,896,633],{"class":96},[90,898,899],{"class":136},"sha256",[90,901,633],{"class":96},[90,903,595],{"class":96},[90,905,603],{"class":557},[90,907,640],{"class":630},[90,909,910,912,915,917,920,922,925,927,930,932,935],{"class":92,"line":348},[90,911,889],{"class":96},[90,913,914],{"class":584},"update",[90,916,588],{"class":630},[90,918,919],{"class":96},"`${",[90,921,764],{"class":557},[90,923,924],{"class":96},"}",[90,926,624],{"class":136},[90,928,929],{"class":96},"${",[90,931,592],{"class":557},[90,933,934],{"class":96},"}`",[90,936,640],{"class":630},[90,938,940,942,945,947,949,952,954],{"class":92,"line":939},16,[90,941,889],{"class":96},[90,943,944],{"class":584},"digest",[90,946,588],{"class":630},[90,948,633],{"class":96},[90,950,951],{"class":136},"hex",[90,953,633],{"class":96},[90,955,640],{"class":630},[90,957,959],{"class":92,"line":958},17,[90,960,576],{"emptyLinePlaceholder":575},[90,962,964,966,969,971,974,976,978,980,982,984,986,988,990],{"class":92,"line":963},18,[90,965,613],{"class":106},[90,967,968],{"class":557}," providedBuf",[90,970,619],{"class":96},[90,972,973],{"class":557}," Buffer",[90,975,624],{"class":96},[90,977,561],{"class":584},[90,979,588],{"class":630},[90,981,773],{"class":557},[90,983,595],{"class":96},[90,985,564],{"class":96},[90,987,951],{"class":136},[90,989,633],{"class":96},[90,991,640],{"class":630},[90,993,995,997,1000,1002,1004,1006,1008,1010,1013,1015,1017,1019,1021],{"class":92,"line":994},19,[90,996,613],{"class":106},[90,998,999],{"class":557}," expectedBuf",[90,1001,619],{"class":96},[90,1003,973],{"class":557},[90,1005,624],{"class":96},[90,1007,561],{"class":584},[90,1009,588],{"class":630},[90,1011,1012],{"class":557},"expected",[90,1014,595],{"class":96},[90,1016,564],{"class":96},[90,1018,951],{"class":136},[90,1020,633],{"class":96},[90,1022,640],{"class":630},[90,1024,1026],{"class":92,"line":1025},20,[90,1027,576],{"emptyLinePlaceholder":575},[90,1029,1031,1033,1035,1038,1040,1043,1046,1048,1050,1052,1054,1056],{"class":92,"line":1030},21,[90,1032,755],{"class":553},[90,1034,758],{"class":630},[90,1036,1037],{"class":557},"providedBuf",[90,1039,624],{"class":96},[90,1041,1042],{"class":557},"length",[90,1044,1045],{"class":96}," !==",[90,1047,999],{"class":557},[90,1049,624],{"class":96},[90,1051,1042],{"class":557},[90,1053,776],{"class":630},[90,1055,779],{"class":553},[90,1057,783],{"class":782},[90,1059,1061,1064,1067,1069,1072,1074,1076,1078,1080],{"class":92,"line":1060},22,[90,1062,1063],{"class":553},"  return",[90,1065,1066],{"class":557}," crypto",[90,1068,624],{"class":96},[90,1070,1071],{"class":584},"timingSafeEqual",[90,1073,588],{"class":630},[90,1075,1037],{"class":557},[90,1077,595],{"class":96},[90,1079,999],{"class":557},[90,1081,640],{"class":630},[90,1083,1085],{"class":92,"line":1084},23,[90,1086,351],{"class":96},[19,1088,1090],{"id":1089},"idempotensi","Idempotensi",[15,1092,1093],{},"Webhook dikirim via queue dan bisa terkirim ulang saat retry. Endpoint Anda harus idempotent:",[27,1095,1096,1103,1106],{},[30,1097,1098,1099,1102],{},"Simpan event key internal (misalnya kombinasi ",[33,1100,1101],{},"leadId + updatedAt + event",").",[30,1104,1105],{},"Abaikan event duplikat yang sudah diproses.",[30,1107,1108,1109,1112],{},"Selalu balas ",[33,1110,1111],{},"2xx"," jika event valid sudah pernah diproses.",[19,1114,1116],{"id":1115},"timeout-dan-respons","Timeout dan Respons",[15,1118,1119,1120,1123],{},"Konektor mengirim webhook dengan timeout request singkat (",[33,1121,1122],{},"5s","). Endpoint receiver sebaiknya:",[27,1125,1126,1129,1132],{},[30,1127,1128],{},"Validasi signature.",[30,1130,1131],{},"Enqueue pekerjaan berat ke worker internal.",[30,1133,1134,1135,624],{},"Segera balas ",[33,1136,1137],{},"200 OK",[19,1139,1141],{"id":1140},"catatan-keamanan","Catatan Keamanan",[27,1143,1144,1147,1150,1153],{},[30,1145,1146],{},"Simpan webhook secret di server-side secret manager.",[30,1148,1149],{},"Rotasi secret secara berkala.",[30,1151,1152],{},"Tolak request tanpa header signature valid.",[30,1154,1155],{},"Terapkan allowlist IP jika infrastruktur Anda membutuhkannya.",[1157,1158,1159],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":86,"searchDepth":100,"depth":100,"links":1161},[1162,1163,1169,1170,1171,1172],{"id":21,"depth":100,"text":22},{"id":53,"depth":100,"text":54,"children":1164},[1165,1167],{"id":76,"depth":119,"text":1166},"Contoh lead.created",{"id":354,"depth":119,"text":1168},"Contoh lead.updated",{"id":537,"depth":100,"text":538},{"id":1089,"depth":100,"text":1090},{"id":1115,"depth":100,"text":1116},{"id":1140,"depth":100,"text":1141},null,"Panduan teknis webhook Konektor: header, payload aktual, verifikasi HMAC SHA-256 timing-safe, dan praktik idempotensi.","md",{},"\u002Fdocs\u002Fapi\u002Fwebhooks",{"title":1179,"description":1180,"canonical":1177},"Konektor Webhooks - Signature Verification dan Payload Real","Dokumentasi webhook Konektor berbasis implementasi aktual: payload lead.created\u002Flead.updated, header signature, dan verifikasi timing-safe.",{"loc":1177,"lastmod":1182},"2026-03-05","docs\u002Fapi\u002Fwebhooks",[12,773,1185,1186,1187],"hmac","realtime","events","By_cujgAoTpu2M2PfWTlFv7lXNw-rvZMyDvJt_2rQ0A"]