[{"data":1,"prerenderedAt":1505},["ShallowReactive",2],{"search-de":3,"content-de-examples\u002Fcontact-sync":4,"surround-de-\u002Fexamples\u002Fcontact-sync":1498},[],{"id":5,"title":6,"body":7,"description":13,"extension":1492,"meta":1493,"navigation":75,"path":1494,"seo":1495,"stem":1496,"__hash__":1497},"content_de\u002F4.examples\u002F4.contact-sync.md","Kontaktsynchronisierung",{"type":8,"value":9,"toc":1485},"minimark",[10,14,19,22,336,340,347,777,794,798,801,1001,1005,1008,1452,1456,1481],[11,12,13],"p",{},"Synchronisieren Sie Kontakte aus Ihrer Datenbank nach Owlat — mit Upsert-Mustern und Massenoperationen.",[15,16,18],"h2",{"id":17},"einen-einzelnen-kontakt-upserten","Einen einzelnen Kontakt upserten",[11,20,21],{},"Die API hat keinen eigenen Upsert-Endpunkt, doch Sie können einen aus create + update zusammensetzen:",[23,24,29],"pre",{"className":25,"code":26,"language":27,"meta":28,"style":28},"language-typescript shiki shiki-themes github-light github-dark-dimmed","import {\n  Owlat,\n  ConflictError,\n} from '@owlat\u002Fsdk-js'\n\nconst owlat = new Owlat('lm_live_...')\n\nasync function upsertContact(email: string, data: { firstName?: string; lastName?: string }) {\n  try {\n    \u002F\u002F Try creating first\n    return await owlat.contacts.create({ email, ...data })\n  } catch (error) {\n    if (error instanceof ConflictError) {\n      \u002F\u002F Contact already exists — update instead\n      return await owlat.contacts.update(email, data)\n    }\n    throw error\n  }\n}\n\nawait upsertContact('mira@acme.io', {\n  firstName: 'Mira',\n  lastName: 'Chen',\n})\n","typescript","",[30,31,32,45,51,57,70,77,106,111,167,175,182,206,218,237,243,259,265,274,280,286,291,307,319,330],"code",{"__ignoreMap":28},[33,34,37,41],"span",{"class":35,"line":36},"line",1,[33,38,40],{"class":39},"s7YZ4","import",[33,42,44],{"class":43},"sYgZi"," {\n",[33,46,48],{"class":35,"line":47},2,[33,49,50],{"class":43},"  Owlat,\n",[33,52,54],{"class":35,"line":53},3,[33,55,56],{"class":43},"  ConflictError,\n",[33,58,60,63,66],{"class":35,"line":59},4,[33,61,62],{"class":43},"} ",[33,64,65],{"class":39},"from",[33,67,69],{"class":68},"s-HuK"," '@owlat\u002Fsdk-js'\n",[33,71,73],{"class":35,"line":72},5,[33,74,76],{"emptyLinePlaceholder":75},true,"\n",[33,78,80,83,87,90,93,97,100,103],{"class":35,"line":79},6,[33,81,82],{"class":39},"const",[33,84,86],{"class":85},"sviXB"," owlat",[33,88,89],{"class":39}," =",[33,91,92],{"class":39}," new",[33,94,96],{"class":95},"sPO5f"," Owlat",[33,98,99],{"class":43},"(",[33,101,102],{"class":68},"'lm_live_...'",[33,104,105],{"class":43},")\n",[33,107,109],{"class":35,"line":108},7,[33,110,76],{"emptyLinePlaceholder":75},[33,112,114,117,120,123,125,129,132,135,138,141,143,146,149,152,154,157,160,162,164],{"class":35,"line":113},8,[33,115,116],{"class":39},"async",[33,118,119],{"class":39}," function",[33,121,122],{"class":95}," upsertContact",[33,124,99],{"class":43},[33,126,128],{"class":127},"stnAF","email",[33,130,131],{"class":39},":",[33,133,134],{"class":85}," string",[33,136,137],{"class":43},", ",[33,139,140],{"class":127},"data",[33,142,131],{"class":39},[33,144,145],{"class":43}," { ",[33,147,148],{"class":127},"firstName",[33,150,151],{"class":39},"?:",[33,153,134],{"class":85},[33,155,156],{"class":43},"; ",[33,158,159],{"class":127},"lastName",[33,161,151],{"class":39},[33,163,134],{"class":85},[33,165,166],{"class":43}," }) {\n",[33,168,170,173],{"class":35,"line":169},9,[33,171,172],{"class":39},"  try",[33,174,44],{"class":43},[33,176,178],{"class":35,"line":177},10,[33,179,181],{"class":180},"sDN9O","    \u002F\u002F Try creating first\n",[33,183,185,188,191,194,197,200,203],{"class":35,"line":184},11,[33,186,187],{"class":39},"    return",[33,189,190],{"class":39}," await",[33,192,193],{"class":43}," owlat.contacts.",[33,195,196],{"class":95},"create",[33,198,199],{"class":43},"({ email, ",[33,201,202],{"class":39},"...",[33,204,205],{"class":43},"data })\n",[33,207,209,212,215],{"class":35,"line":208},12,[33,210,211],{"class":43},"  } ",[33,213,214],{"class":39},"catch",[33,216,217],{"class":43}," (error) {\n",[33,219,221,224,227,230,234],{"class":35,"line":220},13,[33,222,223],{"class":39},"    if",[33,225,226],{"class":43}," (error ",[33,228,229],{"class":39},"instanceof",[33,231,233],{"class":232},"sOLd2"," ConflictError",[33,235,236],{"class":43},") {\n",[33,238,240],{"class":35,"line":239},14,[33,241,242],{"class":180},"      \u002F\u002F Contact already exists — update instead\n",[33,244,246,249,251,253,256],{"class":35,"line":245},15,[33,247,248],{"class":39},"      return",[33,250,190],{"class":39},[33,252,193],{"class":43},[33,254,255],{"class":95},"update",[33,257,258],{"class":43},"(email, data)\n",[33,260,262],{"class":35,"line":261},16,[33,263,264],{"class":43},"    }\n",[33,266,268,271],{"class":35,"line":267},17,[33,269,270],{"class":39},"    throw",[33,272,273],{"class":43}," error\n",[33,275,277],{"class":35,"line":276},18,[33,278,279],{"class":43},"  }\n",[33,281,283],{"class":35,"line":282},19,[33,284,285],{"class":43},"}\n",[33,287,289],{"class":35,"line":288},20,[33,290,76],{"emptyLinePlaceholder":75},[33,292,294,297,299,301,304],{"class":35,"line":293},21,[33,295,296],{"class":39},"await",[33,298,122],{"class":95},[33,300,99],{"class":43},[33,302,303],{"class":68},"'mira@acme.io'",[33,305,306],{"class":43},", {\n",[33,308,310,313,316],{"class":35,"line":309},22,[33,311,312],{"class":43},"  firstName: ",[33,314,315],{"class":68},"'Mira'",[33,317,318],{"class":43},",\n",[33,320,322,325,328],{"class":35,"line":321},23,[33,323,324],{"class":43},"  lastName: ",[33,326,327],{"class":68},"'Chen'",[33,329,318],{"class":43},[33,331,333],{"class":35,"line":332},24,[33,334,335],{"class":43},"})\n",[15,337,339],{"id":338},"massensynchronisierung","Massensynchronisierung",[11,341,342,343,346],{},"Verwenden Sie ",[30,344,345],{},"Promise.allSettled",", um viele Kontakte zu synchronisieren, ohne dass ein einzelner Fehler den Batch stoppt. Ergänzen Sie eine Begrenzung der Nebenläufigkeit, um innerhalb der Rate Limits zu bleiben:",[23,348,350],{"className":25,"code":349,"language":27,"meta":28,"style":28},"import { Owlat, RateLimitError } from '@owlat\u002Fsdk-js'\n\nconst owlat = new Owlat('lm_live_...')\n\ninterface UserRecord {\n  email: string\n  firstName: string\n  lastName: string\n}\n\nasync function syncBatch(users: UserRecord[], concurrency = 5) {\n  const results: PromiseSettledResult\u003Cunknown>[] = []\n\n  \u002F\u002F Process in chunks to respect rate limits\n  for (let i = 0; i \u003C users.length; i += concurrency) {\n    const chunk = users.slice(i, i + concurrency)\n    const chunkResults = await Promise.allSettled(\n      chunk.map((user) => upsertContact(user.email, {\n        firstName: user.firstName,\n        lastName: user.lastName,\n      }))\n    )\n    results.push(...chunkResults)\n  }\n\n  const succeeded = results.filter((r) => r.status === 'fulfilled').length\n  const failed = results.filter((r) => r.status === 'rejected').length\n  console.log(`Synced: ${succeeded} succeeded, ${failed} failed`)\n\n  return results\n}\n",[30,351,352,363,367,385,389,399,409,418,427,431,435,466,494,498,503,541,565,588,613,618,623,628,633,648,652,657,697,730,758,763,772],{"__ignoreMap":28},[33,353,354,356,359,361],{"class":35,"line":36},[33,355,40],{"class":39},[33,357,358],{"class":43}," { Owlat, RateLimitError } ",[33,360,65],{"class":39},[33,362,69],{"class":68},[33,364,365],{"class":35,"line":47},[33,366,76],{"emptyLinePlaceholder":75},[33,368,369,371,373,375,377,379,381,383],{"class":35,"line":53},[33,370,82],{"class":39},[33,372,86],{"class":85},[33,374,89],{"class":39},[33,376,92],{"class":39},[33,378,96],{"class":95},[33,380,99],{"class":43},[33,382,102],{"class":68},[33,384,105],{"class":43},[33,386,387],{"class":35,"line":59},[33,388,76],{"emptyLinePlaceholder":75},[33,390,391,394,397],{"class":35,"line":72},[33,392,393],{"class":39},"interface",[33,395,396],{"class":232}," UserRecord",[33,398,44],{"class":43},[33,400,401,404,406],{"class":35,"line":79},[33,402,403],{"class":127},"  email",[33,405,131],{"class":39},[33,407,408],{"class":85}," string\n",[33,410,411,414,416],{"class":35,"line":108},[33,412,413],{"class":127},"  firstName",[33,415,131],{"class":39},[33,417,408],{"class":85},[33,419,420,423,425],{"class":35,"line":113},[33,421,422],{"class":127},"  lastName",[33,424,131],{"class":39},[33,426,408],{"class":85},[33,428,429],{"class":35,"line":169},[33,430,285],{"class":43},[33,432,433],{"class":35,"line":177},[33,434,76],{"emptyLinePlaceholder":75},[33,436,437,439,441,444,446,449,451,453,456,459,461,464],{"class":35,"line":184},[33,438,116],{"class":39},[33,440,119],{"class":39},[33,442,443],{"class":95}," syncBatch",[33,445,99],{"class":43},[33,447,448],{"class":127},"users",[33,450,131],{"class":39},[33,452,396],{"class":232},[33,454,455],{"class":43},"[], ",[33,457,458],{"class":127},"concurrency",[33,460,89],{"class":39},[33,462,463],{"class":85}," 5",[33,465,236],{"class":43},[33,467,468,471,474,476,479,482,485,488,491],{"class":35,"line":208},[33,469,470],{"class":39},"  const",[33,472,473],{"class":85}," results",[33,475,131],{"class":39},[33,477,478],{"class":232}," PromiseSettledResult",[33,480,481],{"class":43},"\u003C",[33,483,484],{"class":85},"unknown",[33,486,487],{"class":43},">[] ",[33,489,490],{"class":39},"=",[33,492,493],{"class":43}," []\n",[33,495,496],{"class":35,"line":220},[33,497,76],{"emptyLinePlaceholder":75},[33,499,500],{"class":35,"line":239},[33,501,502],{"class":180},"  \u002F\u002F Process in chunks to respect rate limits\n",[33,504,505,508,511,514,517,519,522,525,527,530,533,535,538],{"class":35,"line":245},[33,506,507],{"class":39},"  for",[33,509,510],{"class":43}," (",[33,512,513],{"class":39},"let",[33,515,516],{"class":43}," i ",[33,518,490],{"class":39},[33,520,521],{"class":85}," 0",[33,523,524],{"class":43},"; i ",[33,526,481],{"class":39},[33,528,529],{"class":43}," users.",[33,531,532],{"class":85},"length",[33,534,524],{"class":43},[33,536,537],{"class":39},"+=",[33,539,540],{"class":43}," concurrency) {\n",[33,542,543,546,549,551,553,556,559,562],{"class":35,"line":261},[33,544,545],{"class":39},"    const",[33,547,548],{"class":85}," chunk",[33,550,89],{"class":39},[33,552,529],{"class":43},[33,554,555],{"class":95},"slice",[33,557,558],{"class":43},"(i, i ",[33,560,561],{"class":39},"+",[33,563,564],{"class":43}," concurrency)\n",[33,566,567,569,572,574,576,579,582,585],{"class":35,"line":267},[33,568,545],{"class":39},[33,570,571],{"class":85}," chunkResults",[33,573,89],{"class":39},[33,575,190],{"class":39},[33,577,578],{"class":85}," Promise",[33,580,581],{"class":43},".",[33,583,584],{"class":95},"allSettled",[33,586,587],{"class":43},"(\n",[33,589,590,593,596,599,602,605,608,610],{"class":35,"line":276},[33,591,592],{"class":43},"      chunk.",[33,594,595],{"class":95},"map",[33,597,598],{"class":43},"((",[33,600,601],{"class":127},"user",[33,603,604],{"class":43},") ",[33,606,607],{"class":39},"=>",[33,609,122],{"class":95},[33,611,612],{"class":43},"(user.email, {\n",[33,614,615],{"class":35,"line":282},[33,616,617],{"class":43},"        firstName: user.firstName,\n",[33,619,620],{"class":35,"line":288},[33,621,622],{"class":43},"        lastName: user.lastName,\n",[33,624,625],{"class":35,"line":293},[33,626,627],{"class":43},"      }))\n",[33,629,630],{"class":35,"line":309},[33,631,632],{"class":43},"    )\n",[33,634,635,638,641,643,645],{"class":35,"line":321},[33,636,637],{"class":43},"    results.",[33,639,640],{"class":95},"push",[33,642,99],{"class":43},[33,644,202],{"class":39},[33,646,647],{"class":43},"chunkResults)\n",[33,649,650],{"class":35,"line":332},[33,651,279],{"class":43},[33,653,655],{"class":35,"line":654},25,[33,656,76],{"emptyLinePlaceholder":75},[33,658,660,662,665,667,670,673,675,678,680,682,685,688,691,694],{"class":35,"line":659},26,[33,661,470],{"class":39},[33,663,664],{"class":85}," succeeded",[33,666,89],{"class":39},[33,668,669],{"class":43}," results.",[33,671,672],{"class":95},"filter",[33,674,598],{"class":43},[33,676,677],{"class":127},"r",[33,679,604],{"class":43},[33,681,607],{"class":39},[33,683,684],{"class":43}," r.status ",[33,686,687],{"class":39},"===",[33,689,690],{"class":68}," 'fulfilled'",[33,692,693],{"class":43},").",[33,695,696],{"class":85},"length\n",[33,698,700,702,705,707,709,711,713,715,717,719,721,723,726,728],{"class":35,"line":699},27,[33,701,470],{"class":39},[33,703,704],{"class":85}," failed",[33,706,89],{"class":39},[33,708,669],{"class":43},[33,710,672],{"class":95},[33,712,598],{"class":43},[33,714,677],{"class":127},[33,716,604],{"class":43},[33,718,607],{"class":39},[33,720,684],{"class":43},[33,722,687],{"class":39},[33,724,725],{"class":68}," 'rejected'",[33,727,693],{"class":43},[33,729,696],{"class":85},[33,731,733,736,739,741,744,747,750,753,756],{"class":35,"line":732},28,[33,734,735],{"class":43},"  console.",[33,737,738],{"class":95},"log",[33,740,99],{"class":43},[33,742,743],{"class":68},"`Synced: ${",[33,745,746],{"class":43},"succeeded",[33,748,749],{"class":68},"} succeeded, ${",[33,751,752],{"class":43},"failed",[33,754,755],{"class":68},"} failed`",[33,757,105],{"class":43},[33,759,761],{"class":35,"line":760},29,[33,762,76],{"emptyLinePlaceholder":75},[33,764,766,769],{"class":35,"line":765},30,[33,767,768],{"class":39},"  return",[33,770,771],{"class":43}," results\n",[33,773,775],{"class":35,"line":774},31,[33,776,285],{"class":43},[778,779,782],"callout",{"title":780,"type":781},"Rate Limits","warning",[11,783,784,785,788,789,581],{},"Die API erzwingt Rate Limits pro Schlüssel. Wenn Sie Tausende von Kontakten synchronisieren, halten Sie die Nebenläufigkeit niedrig (3–5) und fügen Sie eine Pause zwischen den Chunks ein, falls Sie ",[30,786,787],{},"429","-Antworten erhalten. Details zu den Rate Limits finden Sie unter ",[790,791,793],"a",{"href":792},"\u002Fapi\u002Fauthentication","Authentifizierung",[15,795,797],{"id":796},"synchronisierte-kontakte-einem-topic-hinzufügen","Synchronisierte Kontakte einem Topic hinzufügen",[11,799,800],{},"Nach der Synchronisierung können Sie Kontakte einem Topic hinzufügen, um gezielte Kampagnen zu fahren:",[23,802,804],{"className":25,"code":803,"language":27,"meta":28,"style":28},"async function syncAndAddToTopic(users: UserRecord[], topicId: string) {\n  \u002F\u002F 1. Sync contacts\n  await syncBatch(users)\n\n  \u002F\u002F 2. Add each to the topic\n  const topicResults = await Promise.allSettled(\n    users.map((user) =>\n      owlat.topics.addContact({\n        topicId,\n        email: user.email,\n      })\n    )\n  )\n\n  const added = topicResults.filter((r) => r.status === 'fulfilled').length\n  console.log(`Added ${added}\u002F${users.length} contacts to topic ${topicId}`)\n}\n",[30,805,806,834,839,849,853,858,877,893,904,909,914,919,923,928,932,964,997],{"__ignoreMap":28},[33,807,808,810,812,815,817,819,821,823,825,828,830,832],{"class":35,"line":36},[33,809,116],{"class":39},[33,811,119],{"class":39},[33,813,814],{"class":95}," syncAndAddToTopic",[33,816,99],{"class":43},[33,818,448],{"class":127},[33,820,131],{"class":39},[33,822,396],{"class":232},[33,824,455],{"class":43},[33,826,827],{"class":127},"topicId",[33,829,131],{"class":39},[33,831,134],{"class":85},[33,833,236],{"class":43},[33,835,836],{"class":35,"line":47},[33,837,838],{"class":180},"  \u002F\u002F 1. Sync contacts\n",[33,840,841,844,846],{"class":35,"line":53},[33,842,843],{"class":39},"  await",[33,845,443],{"class":95},[33,847,848],{"class":43},"(users)\n",[33,850,851],{"class":35,"line":59},[33,852,76],{"emptyLinePlaceholder":75},[33,854,855],{"class":35,"line":72},[33,856,857],{"class":180},"  \u002F\u002F 2. Add each to the topic\n",[33,859,860,862,865,867,869,871,873,875],{"class":35,"line":79},[33,861,470],{"class":39},[33,863,864],{"class":85}," topicResults",[33,866,89],{"class":39},[33,868,190],{"class":39},[33,870,578],{"class":85},[33,872,581],{"class":43},[33,874,584],{"class":95},[33,876,587],{"class":43},[33,878,879,882,884,886,888,890],{"class":35,"line":108},[33,880,881],{"class":43},"    users.",[33,883,595],{"class":95},[33,885,598],{"class":43},[33,887,601],{"class":127},[33,889,604],{"class":43},[33,891,892],{"class":39},"=>\n",[33,894,895,898,901],{"class":35,"line":113},[33,896,897],{"class":43},"      owlat.topics.",[33,899,900],{"class":95},"addContact",[33,902,903],{"class":43},"({\n",[33,905,906],{"class":35,"line":169},[33,907,908],{"class":43},"        topicId,\n",[33,910,911],{"class":35,"line":177},[33,912,913],{"class":43},"        email: user.email,\n",[33,915,916],{"class":35,"line":184},[33,917,918],{"class":43},"      })\n",[33,920,921],{"class":35,"line":208},[33,922,632],{"class":43},[33,924,925],{"class":35,"line":220},[33,926,927],{"class":43},"  )\n",[33,929,930],{"class":35,"line":239},[33,931,76],{"emptyLinePlaceholder":75},[33,933,934,936,939,941,944,946,948,950,952,954,956,958,960,962],{"class":35,"line":245},[33,935,470],{"class":39},[33,937,938],{"class":85}," added",[33,940,89],{"class":39},[33,942,943],{"class":43}," topicResults.",[33,945,672],{"class":95},[33,947,598],{"class":43},[33,949,677],{"class":127},[33,951,604],{"class":43},[33,953,607],{"class":39},[33,955,684],{"class":43},[33,957,687],{"class":39},[33,959,690],{"class":68},[33,961,693],{"class":43},[33,963,696],{"class":85},[33,965,966,968,970,972,975,978,981,983,985,987,990,992,995],{"class":35,"line":261},[33,967,735],{"class":43},[33,969,738],{"class":95},[33,971,99],{"class":43},[33,973,974],{"class":68},"`Added ${",[33,976,977],{"class":43},"added",[33,979,980],{"class":68},"}\u002F${",[33,982,448],{"class":43},[33,984,581],{"class":68},[33,986,532],{"class":85},[33,988,989],{"class":68},"} contacts to topic ${",[33,991,827],{"class":43},[33,993,994],{"class":68},"}`",[33,996,105],{"class":43},[33,998,999],{"class":35,"line":267},[33,1000,285],{"class":43},[15,1002,1004],{"id":1003},"vollständiges-sync-skript","Vollständiges Sync-Skript",[11,1006,1007],{},"Alles zusammengesetzt — ein Skript, das Benutzer aus Ihrer Datenbank liest und sie nach Owlat synchronisiert:",[23,1009,1011],{"className":25,"code":1010,"language":27,"meta":28,"style":28},"import { Owlat, ConflictError } from '@owlat\u002Fsdk-js'\n\nconst owlat = new Owlat(process.env.OWLAT_API_KEY!)\n\nasync function upsertContact(email: string, data: { firstName?: string; lastName?: string }) {\n  try {\n    return await owlat.contacts.create({ email, ...data })\n  } catch (error) {\n    if (error instanceof ConflictError) {\n      return await owlat.contacts.update(email, data)\n    }\n    throw error\n  }\n}\n\nasync function main() {\n  \u002F\u002F Replace with your actual database query\n  const users = await db.users.findMany({\n    where: { emailVerified: true },\n    select: { email: true, firstName: true, lastName: true },\n  })\n\n  console.log(`Syncing ${users.length} contacts...`)\n\n  for (let i = 0; i \u003C users.length; i += 5) {\n    const chunk = users.slice(i, i + 5)\n    await Promise.allSettled(\n      chunk.map((u) => upsertContact(u.email, {\n        firstName: u.firstName,\n        lastName: u.lastName,\n      }))\n    )\n    console.log(`Progress: ${Math.min(i + 5, users.length)}\u002F${users.length}`)\n  }\n}\n\nmain()\n",[30,1012,1013,1024,1028,1051,1055,1095,1101,1117,1125,1137,1149,1153,1159,1163,1167,1171,1183,1188,1207,1218,1237,1242,1246,1268,1272,1302,1322,1335,1355,1360,1365,1369,1374,1428,1433,1438,1443],{"__ignoreMap":28},[33,1014,1015,1017,1020,1022],{"class":35,"line":36},[33,1016,40],{"class":39},[33,1018,1019],{"class":43}," { Owlat, ConflictError } ",[33,1021,65],{"class":39},[33,1023,69],{"class":68},[33,1025,1026],{"class":35,"line":47},[33,1027,76],{"emptyLinePlaceholder":75},[33,1029,1030,1032,1034,1036,1038,1040,1043,1046,1049],{"class":35,"line":53},[33,1031,82],{"class":39},[33,1033,86],{"class":85},[33,1035,89],{"class":39},[33,1037,92],{"class":39},[33,1039,96],{"class":95},[33,1041,1042],{"class":43},"(process.env.",[33,1044,1045],{"class":85},"OWLAT_API_KEY",[33,1047,1048],{"class":39},"!",[33,1050,105],{"class":43},[33,1052,1053],{"class":35,"line":59},[33,1054,76],{"emptyLinePlaceholder":75},[33,1056,1057,1059,1061,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1083,1085,1087,1089,1091,1093],{"class":35,"line":72},[33,1058,116],{"class":39},[33,1060,119],{"class":39},[33,1062,122],{"class":95},[33,1064,99],{"class":43},[33,1066,128],{"class":127},[33,1068,131],{"class":39},[33,1070,134],{"class":85},[33,1072,137],{"class":43},[33,1074,140],{"class":127},[33,1076,131],{"class":39},[33,1078,145],{"class":43},[33,1080,148],{"class":127},[33,1082,151],{"class":39},[33,1084,134],{"class":85},[33,1086,156],{"class":43},[33,1088,159],{"class":127},[33,1090,151],{"class":39},[33,1092,134],{"class":85},[33,1094,166],{"class":43},[33,1096,1097,1099],{"class":35,"line":79},[33,1098,172],{"class":39},[33,1100,44],{"class":43},[33,1102,1103,1105,1107,1109,1111,1113,1115],{"class":35,"line":108},[33,1104,187],{"class":39},[33,1106,190],{"class":39},[33,1108,193],{"class":43},[33,1110,196],{"class":95},[33,1112,199],{"class":43},[33,1114,202],{"class":39},[33,1116,205],{"class":43},[33,1118,1119,1121,1123],{"class":35,"line":113},[33,1120,211],{"class":43},[33,1122,214],{"class":39},[33,1124,217],{"class":43},[33,1126,1127,1129,1131,1133,1135],{"class":35,"line":169},[33,1128,223],{"class":39},[33,1130,226],{"class":43},[33,1132,229],{"class":39},[33,1134,233],{"class":232},[33,1136,236],{"class":43},[33,1138,1139,1141,1143,1145,1147],{"class":35,"line":177},[33,1140,248],{"class":39},[33,1142,190],{"class":39},[33,1144,193],{"class":43},[33,1146,255],{"class":95},[33,1148,258],{"class":43},[33,1150,1151],{"class":35,"line":184},[33,1152,264],{"class":43},[33,1154,1155,1157],{"class":35,"line":208},[33,1156,270],{"class":39},[33,1158,273],{"class":43},[33,1160,1161],{"class":35,"line":220},[33,1162,279],{"class":43},[33,1164,1165],{"class":35,"line":239},[33,1166,285],{"class":43},[33,1168,1169],{"class":35,"line":245},[33,1170,76],{"emptyLinePlaceholder":75},[33,1172,1173,1175,1177,1180],{"class":35,"line":261},[33,1174,116],{"class":39},[33,1176,119],{"class":39},[33,1178,1179],{"class":95}," main",[33,1181,1182],{"class":43},"() {\n",[33,1184,1185],{"class":35,"line":267},[33,1186,1187],{"class":180},"  \u002F\u002F Replace with your actual database query\n",[33,1189,1190,1192,1195,1197,1199,1202,1205],{"class":35,"line":276},[33,1191,470],{"class":39},[33,1193,1194],{"class":85}," users",[33,1196,89],{"class":39},[33,1198,190],{"class":39},[33,1200,1201],{"class":43}," db.users.",[33,1203,1204],{"class":95},"findMany",[33,1206,903],{"class":43},[33,1208,1209,1212,1215],{"class":35,"line":282},[33,1210,1211],{"class":43},"    where: { emailVerified: ",[33,1213,1214],{"class":85},"true",[33,1216,1217],{"class":43}," },\n",[33,1219,1220,1223,1225,1228,1230,1233,1235],{"class":35,"line":288},[33,1221,1222],{"class":43},"    select: { email: ",[33,1224,1214],{"class":85},[33,1226,1227],{"class":43},", firstName: ",[33,1229,1214],{"class":85},[33,1231,1232],{"class":43},", lastName: ",[33,1234,1214],{"class":85},[33,1236,1217],{"class":43},[33,1238,1239],{"class":35,"line":293},[33,1240,1241],{"class":43},"  })\n",[33,1243,1244],{"class":35,"line":309},[33,1245,76],{"emptyLinePlaceholder":75},[33,1247,1248,1250,1252,1254,1257,1259,1261,1263,1266],{"class":35,"line":321},[33,1249,735],{"class":43},[33,1251,738],{"class":95},[33,1253,99],{"class":43},[33,1255,1256],{"class":68},"`Syncing ${",[33,1258,448],{"class":43},[33,1260,581],{"class":68},[33,1262,532],{"class":85},[33,1264,1265],{"class":68},"} contacts...`",[33,1267,105],{"class":43},[33,1269,1270],{"class":35,"line":332},[33,1271,76],{"emptyLinePlaceholder":75},[33,1273,1274,1276,1278,1280,1282,1284,1286,1288,1290,1292,1294,1296,1298,1300],{"class":35,"line":654},[33,1275,507],{"class":39},[33,1277,510],{"class":43},[33,1279,513],{"class":39},[33,1281,516],{"class":43},[33,1283,490],{"class":39},[33,1285,521],{"class":85},[33,1287,524],{"class":43},[33,1289,481],{"class":39},[33,1291,529],{"class":43},[33,1293,532],{"class":85},[33,1295,524],{"class":43},[33,1297,537],{"class":39},[33,1299,463],{"class":85},[33,1301,236],{"class":43},[33,1303,1304,1306,1308,1310,1312,1314,1316,1318,1320],{"class":35,"line":659},[33,1305,545],{"class":39},[33,1307,548],{"class":85},[33,1309,89],{"class":39},[33,1311,529],{"class":43},[33,1313,555],{"class":95},[33,1315,558],{"class":43},[33,1317,561],{"class":39},[33,1319,463],{"class":85},[33,1321,105],{"class":43},[33,1323,1324,1327,1329,1331,1333],{"class":35,"line":699},[33,1325,1326],{"class":39},"    await",[33,1328,578],{"class":85},[33,1330,581],{"class":43},[33,1332,584],{"class":95},[33,1334,587],{"class":43},[33,1336,1337,1339,1341,1343,1346,1348,1350,1352],{"class":35,"line":732},[33,1338,592],{"class":43},[33,1340,595],{"class":95},[33,1342,598],{"class":43},[33,1344,1345],{"class":127},"u",[33,1347,604],{"class":43},[33,1349,607],{"class":39},[33,1351,122],{"class":95},[33,1353,1354],{"class":43},"(u.email, {\n",[33,1356,1357],{"class":35,"line":760},[33,1358,1359],{"class":43},"        firstName: u.firstName,\n",[33,1361,1362],{"class":35,"line":765},[33,1363,1364],{"class":43},"        lastName: u.lastName,\n",[33,1366,1367],{"class":35,"line":774},[33,1368,627],{"class":43},[33,1370,1372],{"class":35,"line":1371},32,[33,1373,632],{"class":43},[33,1375,1377,1380,1382,1384,1387,1390,1392,1395,1397,1400,1403,1405,1407,1409,1411,1413,1416,1418,1420,1422,1424,1426],{"class":35,"line":1376},33,[33,1378,1379],{"class":43},"    console.",[33,1381,738],{"class":95},[33,1383,99],{"class":43},[33,1385,1386],{"class":68},"`Progress: ${",[33,1388,1389],{"class":43},"Math",[33,1391,581],{"class":68},[33,1393,1394],{"class":95},"min",[33,1396,99],{"class":68},[33,1398,1399],{"class":43},"i",[33,1401,1402],{"class":39}," +",[33,1404,463],{"class":85},[33,1406,137],{"class":68},[33,1408,448],{"class":43},[33,1410,581],{"class":68},[33,1412,532],{"class":85},[33,1414,1415],{"class":68},")",[33,1417,980],{"class":68},[33,1419,448],{"class":43},[33,1421,581],{"class":68},[33,1423,532],{"class":85},[33,1425,994],{"class":68},[33,1427,105],{"class":43},[33,1429,1431],{"class":35,"line":1430},34,[33,1432,279],{"class":43},[33,1434,1436],{"class":35,"line":1435},35,[33,1437,285],{"class":43},[33,1439,1441],{"class":35,"line":1440},36,[33,1442,76],{"emptyLinePlaceholder":75},[33,1444,1446,1449],{"class":35,"line":1445},37,[33,1447,1448],{"class":95},"main",[33,1450,1451],{"class":43},"()\n",[15,1453,1455],{"id":1454},"nächste-schritte","Nächste Schritte",[1457,1458,1459,1467,1474],"ul",{},[1460,1461,1462,1466],"li",{},[790,1463,1465],{"href":1464},"\u002Fapi\u002Fcontacts","Referenz zur Contacts-API"," — vollständige Endpunkt-Dokumentation",[1460,1468,1469,1473],{},[790,1470,1472],{"href":1471},"\u002Fexamples\u002Fevent-automation","Event-Automatisierung"," — nach dem Synchronisieren von Kontakten Events auslösen",[1460,1475,1476,1480],{},[790,1477,1479],{"href":1478},"\u002Fguide\u002Ftopics","Leitfaden zu Topics"," — Kontakte in Gruppen organisieren",[1482,1483,1484],"style",{},"html pre.shiki code .s7YZ4, html code.shiki .s7YZ4{--shiki-default:#D73A49;--shiki-dark:#F47067}html pre.shiki code .sYgZi, html code.shiki .sYgZi{--shiki-default:#24292E;--shiki-dark:#ADBAC7}html pre.shiki code .s-HuK, html code.shiki .s-HuK{--shiki-default:#032F62;--shiki-dark:#96D0FF}html pre.shiki code .sviXB, html code.shiki .sviXB{--shiki-default:#005CC5;--shiki-dark:#6CB6FF}html pre.shiki code .sPO5f, html code.shiki .sPO5f{--shiki-default:#6F42C1;--shiki-dark:#DCBDFB}html pre.shiki code .stnAF, html code.shiki .stnAF{--shiki-default:#E36209;--shiki-dark:#F69D50}html pre.shiki code .sDN9O, html code.shiki .sDN9O{--shiki-default:#6A737D;--shiki-dark:#768390}html pre.shiki code .sOLd2, html code.shiki .sOLd2{--shiki-default:#6F42C1;--shiki-dark:#F69D50}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);}",{"title":28,"searchDepth":47,"depth":47,"links":1486},[1487,1488,1489,1490,1491],{"id":17,"depth":47,"text":18},{"id":338,"depth":47,"text":339},{"id":796,"depth":47,"text":797},{"id":1003,"depth":47,"text":1004},{"id":1454,"depth":47,"text":1455},"md",{},"\u002Fexamples\u002Fcontact-sync",{"title":6,"description":13},"4.examples\u002F4.contact-sync","k5vs0D08ClR0wfUuYX4rMUz-J_KC1gTqZHE53Gw8Gn0",[1499,1501],{"title":1472,"path":1471,"stem":1500,"children":-1},"4.examples\u002F3.event-automation",{"title":1502,"path":1503,"stem":1504,"children":-1},"Webhook-Handler","\u002Fexamples\u002Fwebhook-handler","4.examples\u002F5.webhook-handler",1786915111723]