[{"data":1,"prerenderedAt":959},["ShallowReactive",2],{"search-de":3,"content-de-examples\u002Fwelcome-email":4,"surround-de-\u002Fexamples\u002Fwelcome-email":952},[],{"id":5,"title":6,"body":7,"description":13,"extension":946,"meta":947,"navigation":94,"path":948,"seo":949,"stem":950,"__hash__":951},"content_de\u002F4.examples\u002F1.welcome-email.md","Willkommens-E-Mail",{"type":8,"value":9,"toc":939},"minimark",[10,14,19,52,56,340,344,347,626,630,633,904,908,935],[11,12,13],"p",{},"Versenden Sie eine personalisierte Willkommens-E-Mail, wenn sich ein neuer Benutzer registriert.",[15,16,18],"h2",{"id":17},"voraussetzungen","Voraussetzungen",[20,21,22,43],"ul",{},[23,24,25,26,30,31,34,35,38,39,42],"li",{},"Ein veröffentlichtes transaktionales Template mit dem Slug ",[27,28,29],"code",{},"welcome",", das die Variablen ",[27,32,33],{},"firstName",", ",[27,36,37],{},"dashboardUrl"," und ",[27,40,41],{},"trialDaysLeft"," enthält",[23,44,45,46,51],{},"Ein ",[47,48,50],"a",{"href":49},"\u002Fguide\u002Fapi-keys-webhooks","API-Schlüssel"," mit Berechtigungen für den transaktionalen Versand",[15,53,55],{"id":54},"die-e-mail-versenden","Die E-Mail versenden",[57,58,59,247],"code-group",{},[60,61,67],"pre",{"className":62,"code":63,"filename":64,"language":65,"meta":66,"style":66},"language-typescript shiki shiki-themes github-light github-dark-dimmed","import { Owlat } from '@owlat\u002Fsdk-js'\n\nconst owlat = new Owlat('lm_live_...')\n\nconst result = await owlat.transactional.send({\n  slug: 'welcome',\n  email: 'mira@acme.io',\n  dataVariables: {\n    firstName: 'Mira',\n    dashboardUrl: 'https:\u002F\u002Fapp.acme.io\u002Fdashboard',\n    trialDaysLeft: '14',\n  },\n})\n\nconsole.log(result.status) \u002F\u002F \"queued\"\n","TypeScript","typescript","",[27,68,69,89,96,125,130,152,164,175,181,192,203,214,220,226,231],{"__ignoreMap":66},[70,71,74,78,82,85],"span",{"class":72,"line":73},"line",1,[70,75,77],{"class":76},"s7YZ4","import",[70,79,81],{"class":80},"sYgZi"," { Owlat } ",[70,83,84],{"class":76},"from",[70,86,88],{"class":87},"s-HuK"," '@owlat\u002Fsdk-js'\n",[70,90,92],{"class":72,"line":91},2,[70,93,95],{"emptyLinePlaceholder":94},true,"\n",[70,97,99,102,106,109,112,116,119,122],{"class":72,"line":98},3,[70,100,101],{"class":76},"const",[70,103,105],{"class":104},"sviXB"," owlat",[70,107,108],{"class":76}," =",[70,110,111],{"class":76}," new",[70,113,115],{"class":114},"sPO5f"," Owlat",[70,117,118],{"class":80},"(",[70,120,121],{"class":87},"'lm_live_...'",[70,123,124],{"class":80},")\n",[70,126,128],{"class":72,"line":127},4,[70,129,95],{"emptyLinePlaceholder":94},[70,131,133,135,138,140,143,146,149],{"class":72,"line":132},5,[70,134,101],{"class":76},[70,136,137],{"class":104}," result",[70,139,108],{"class":76},[70,141,142],{"class":76}," await",[70,144,145],{"class":80}," owlat.transactional.",[70,147,148],{"class":114},"send",[70,150,151],{"class":80},"({\n",[70,153,155,158,161],{"class":72,"line":154},6,[70,156,157],{"class":80},"  slug: ",[70,159,160],{"class":87},"'welcome'",[70,162,163],{"class":80},",\n",[70,165,167,170,173],{"class":72,"line":166},7,[70,168,169],{"class":80},"  email: ",[70,171,172],{"class":87},"'mira@acme.io'",[70,174,163],{"class":80},[70,176,178],{"class":72,"line":177},8,[70,179,180],{"class":80},"  dataVariables: {\n",[70,182,184,187,190],{"class":72,"line":183},9,[70,185,186],{"class":80},"    firstName: ",[70,188,189],{"class":87},"'Mira'",[70,191,163],{"class":80},[70,193,195,198,201],{"class":72,"line":194},10,[70,196,197],{"class":80},"    dashboardUrl: ",[70,199,200],{"class":87},"'https:\u002F\u002Fapp.acme.io\u002Fdashboard'",[70,202,163],{"class":80},[70,204,206,209,212],{"class":72,"line":205},11,[70,207,208],{"class":80},"    trialDaysLeft: ",[70,210,211],{"class":87},"'14'",[70,213,163],{"class":80},[70,215,217],{"class":72,"line":216},12,[70,218,219],{"class":80},"  },\n",[70,221,223],{"class":72,"line":222},13,[70,224,225],{"class":80},"})\n",[70,227,229],{"class":72,"line":228},14,[70,230,95],{"emptyLinePlaceholder":94},[70,232,234,237,240,243],{"class":72,"line":233},15,[70,235,236],{"class":80},"console.",[70,238,239],{"class":114},"log",[70,241,242],{"class":80},"(result.status) ",[70,244,246],{"class":245},"sDN9O","\u002F\u002F \"queued\"\n",[60,248,253],{"className":249,"code":250,"filename":251,"language":252,"meta":66,"style":66},"language-sh shiki shiki-themes github-light github-dark-dimmed","curl -X POST https:\u002F\u002Fyour-deployment.convex.site\u002Fapi\u002Fv1\u002Ftransactional \\\n  -H \"Authorization: Bearer lm_live_...\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"slug\": \"welcome\",\n    \"email\": \"mira@acme.io\",\n    \"dataVariables\": {\n      \"firstName\": \"Mira\",\n      \"dashboardUrl\": \"https:\u002F\u002Fapp.acme.io\u002Fdashboard\",\n      \"trialDaysLeft\": \"14\"\n    }\n  }'\n","curl","sh",[27,254,255,273,283,292,300,305,310,315,320,325,330,335],{"__ignoreMap":66},[70,256,257,260,263,266,269],{"class":72,"line":73},[70,258,251],{"class":259},"sOLd2",[70,261,262],{"class":104}," -X",[70,264,265],{"class":87}," POST",[70,267,268],{"class":87}," https:\u002F\u002Fyour-deployment.convex.site\u002Fapi\u002Fv1\u002Ftransactional",[70,270,272],{"class":271},"s74oq"," \\\n",[70,274,275,278,281],{"class":72,"line":91},[70,276,277],{"class":104},"  -H",[70,279,280],{"class":87}," \"Authorization: Bearer lm_live_...\"",[70,282,272],{"class":271},[70,284,285,287,290],{"class":72,"line":98},[70,286,277],{"class":104},[70,288,289],{"class":87}," \"Content-Type: application\u002Fjson\"",[70,291,272],{"class":271},[70,293,294,297],{"class":72,"line":127},[70,295,296],{"class":104},"  -d",[70,298,299],{"class":87}," '{\n",[70,301,302],{"class":72,"line":132},[70,303,304],{"class":87},"    \"slug\": \"welcome\",\n",[70,306,307],{"class":72,"line":154},[70,308,309],{"class":87},"    \"email\": \"mira@acme.io\",\n",[70,311,312],{"class":72,"line":166},[70,313,314],{"class":87},"    \"dataVariables\": {\n",[70,316,317],{"class":72,"line":177},[70,318,319],{"class":87},"      \"firstName\": \"Mira\",\n",[70,321,322],{"class":72,"line":183},[70,323,324],{"class":87},"      \"dashboardUrl\": \"https:\u002F\u002Fapp.acme.io\u002Fdashboard\",\n",[70,326,327],{"class":72,"line":194},[70,328,329],{"class":87},"      \"trialDaysLeft\": \"14\"\n",[70,331,332],{"class":72,"line":205},[70,333,334],{"class":87},"    }\n",[70,336,337],{"class":72,"line":216},[70,338,339],{"class":87},"  }'\n",[15,341,343],{"id":342},"fehlerbehandlung","Fehlerbehandlung",[11,345,346],{},"Kapseln Sie den Sendeaufruf, um gängige Fehlerfälle abzufangen:",[60,348,350],{"className":62,"code":349,"language":65,"meta":66,"style":66},"import { Owlat, ValidationError, RateLimitError } from '@owlat\u002Fsdk-js'\n\nconst owlat = new Owlat('lm_live_...')\n\nasync function sendWelcomeEmail(email: string, firstName: string) {\n  try {\n    const result = await owlat.transactional.send({\n      slug: 'welcome',\n      email,\n      dataVariables: {\n        firstName,\n        dashboardUrl: `https:\u002F\u002Fapp.acme.io\u002Fdashboard`,\n        trialDaysLeft: '14',\n      },\n    })\n    return result\n  } catch (error) {\n    if (error instanceof ValidationError) {\n      console.error('Invalid request:', error.message)\n    } else if (error instanceof RateLimitError) {\n      console.error('Rate limited — retry with backoff')\n    } else {\n      throw error\n    }\n  }\n}\n",[27,351,352,363,367,385,389,423,431,448,457,462,467,472,482,491,496,501,510,522,539,556,577,591,600,609,614,620],{"__ignoreMap":66},[70,353,354,356,359,361],{"class":72,"line":73},[70,355,77],{"class":76},[70,357,358],{"class":80}," { Owlat, ValidationError, RateLimitError } ",[70,360,84],{"class":76},[70,362,88],{"class":87},[70,364,365],{"class":72,"line":91},[70,366,95],{"emptyLinePlaceholder":94},[70,368,369,371,373,375,377,379,381,383],{"class":72,"line":98},[70,370,101],{"class":76},[70,372,105],{"class":104},[70,374,108],{"class":76},[70,376,111],{"class":76},[70,378,115],{"class":114},[70,380,118],{"class":80},[70,382,121],{"class":87},[70,384,124],{"class":80},[70,386,387],{"class":72,"line":127},[70,388,95],{"emptyLinePlaceholder":94},[70,390,391,394,397,400,402,406,409,412,414,416,418,420],{"class":72,"line":132},[70,392,393],{"class":76},"async",[70,395,396],{"class":76}," function",[70,398,399],{"class":114}," sendWelcomeEmail",[70,401,118],{"class":80},[70,403,405],{"class":404},"stnAF","email",[70,407,408],{"class":76},":",[70,410,411],{"class":104}," string",[70,413,34],{"class":80},[70,415,33],{"class":404},[70,417,408],{"class":76},[70,419,411],{"class":104},[70,421,422],{"class":80},") {\n",[70,424,425,428],{"class":72,"line":154},[70,426,427],{"class":76},"  try",[70,429,430],{"class":80}," {\n",[70,432,433,436,438,440,442,444,446],{"class":72,"line":166},[70,434,435],{"class":76},"    const",[70,437,137],{"class":104},[70,439,108],{"class":76},[70,441,142],{"class":76},[70,443,145],{"class":80},[70,445,148],{"class":114},[70,447,151],{"class":80},[70,449,450,453,455],{"class":72,"line":177},[70,451,452],{"class":80},"      slug: ",[70,454,160],{"class":87},[70,456,163],{"class":80},[70,458,459],{"class":72,"line":183},[70,460,461],{"class":80},"      email,\n",[70,463,464],{"class":72,"line":194},[70,465,466],{"class":80},"      dataVariables: {\n",[70,468,469],{"class":72,"line":205},[70,470,471],{"class":80},"        firstName,\n",[70,473,474,477,480],{"class":72,"line":216},[70,475,476],{"class":80},"        dashboardUrl: ",[70,478,479],{"class":87},"`https:\u002F\u002Fapp.acme.io\u002Fdashboard`",[70,481,163],{"class":80},[70,483,484,487,489],{"class":72,"line":222},[70,485,486],{"class":80},"        trialDaysLeft: ",[70,488,211],{"class":87},[70,490,163],{"class":80},[70,492,493],{"class":72,"line":228},[70,494,495],{"class":80},"      },\n",[70,497,498],{"class":72,"line":233},[70,499,500],{"class":80},"    })\n",[70,502,504,507],{"class":72,"line":503},16,[70,505,506],{"class":76},"    return",[70,508,509],{"class":80}," result\n",[70,511,513,516,519],{"class":72,"line":512},17,[70,514,515],{"class":80},"  } ",[70,517,518],{"class":76},"catch",[70,520,521],{"class":80}," (error) {\n",[70,523,525,528,531,534,537],{"class":72,"line":524},18,[70,526,527],{"class":76},"    if",[70,529,530],{"class":80}," (error ",[70,532,533],{"class":76},"instanceof",[70,535,536],{"class":259}," ValidationError",[70,538,422],{"class":80},[70,540,542,545,548,550,553],{"class":72,"line":541},19,[70,543,544],{"class":80},"      console.",[70,546,547],{"class":114},"error",[70,549,118],{"class":80},[70,551,552],{"class":87},"'Invalid request:'",[70,554,555],{"class":80},", error.message)\n",[70,557,559,562,565,568,570,572,575],{"class":72,"line":558},20,[70,560,561],{"class":80},"    } ",[70,563,564],{"class":76},"else",[70,566,567],{"class":76}," if",[70,569,530],{"class":80},[70,571,533],{"class":76},[70,573,574],{"class":259}," RateLimitError",[70,576,422],{"class":80},[70,578,580,582,584,586,589],{"class":72,"line":579},21,[70,581,544],{"class":80},[70,583,547],{"class":114},[70,585,118],{"class":80},[70,587,588],{"class":87},"'Rate limited — retry with backoff'",[70,590,124],{"class":80},[70,592,594,596,598],{"class":72,"line":593},22,[70,595,561],{"class":80},[70,597,564],{"class":76},[70,599,430],{"class":80},[70,601,603,606],{"class":72,"line":602},23,[70,604,605],{"class":76},"      throw",[70,607,608],{"class":80}," error\n",[70,610,612],{"class":72,"line":611},24,[70,613,334],{"class":80},[70,615,617],{"class":72,"line":616},25,[70,618,619],{"class":80},"  }\n",[70,621,623],{"class":72,"line":622},26,[70,624,625],{"class":80},"}\n",[15,627,629],{"id":628},"vollständiger-route-handler","Vollständiger Route-Handler",[11,631,632],{},"Ein vollständiger Handler im Express-\u002FHono-Stil, der die Willkommens-E-Mail nach der Benutzeranlage versendet:",[60,634,636],{"className":62,"code":635,"language":65,"meta":66,"style":66},"import { Hono } from 'hono'\nimport { Owlat } from '@owlat\u002Fsdk-js'\n\nconst app = new Hono()\nconst owlat = new Owlat(process.env.OWLAT_API_KEY!)\n\napp.post('\u002Fapi\u002Fsignup', async (c) => {\n  const { email, firstName } = await c.req.json()\n\n  \u002F\u002F 1. Create user in your database\n  const user = await db.users.create({ email, firstName })\n\n  \u002F\u002F 2. Send the welcome email\n  await owlat.transactional.send({\n    slug: 'welcome',\n    email,\n    dataVariables: {\n      firstName,\n      dashboardUrl: `https:\u002F\u002Fapp.acme.io\u002Fdashboard\u002F${user.id}`,\n      trialDaysLeft: '14',\n    },\n  })\n\n  return c.json({ userId: user.id })\n})\n",[27,637,638,650,660,664,681,704,708,739,769,773,778,798,802,807,818,827,832,837,842,864,873,878,883,887,900],{"__ignoreMap":66},[70,639,640,642,645,647],{"class":72,"line":73},[70,641,77],{"class":76},[70,643,644],{"class":80}," { Hono } ",[70,646,84],{"class":76},[70,648,649],{"class":87}," 'hono'\n",[70,651,652,654,656,658],{"class":72,"line":91},[70,653,77],{"class":76},[70,655,81],{"class":80},[70,657,84],{"class":76},[70,659,88],{"class":87},[70,661,662],{"class":72,"line":98},[70,663,95],{"emptyLinePlaceholder":94},[70,665,666,668,671,673,675,678],{"class":72,"line":127},[70,667,101],{"class":76},[70,669,670],{"class":104}," app",[70,672,108],{"class":76},[70,674,111],{"class":76},[70,676,677],{"class":114}," Hono",[70,679,680],{"class":80},"()\n",[70,682,683,685,687,689,691,693,696,699,702],{"class":72,"line":132},[70,684,101],{"class":76},[70,686,105],{"class":104},[70,688,108],{"class":76},[70,690,111],{"class":76},[70,692,115],{"class":114},[70,694,695],{"class":80},"(process.env.",[70,697,698],{"class":104},"OWLAT_API_KEY",[70,700,701],{"class":76},"!",[70,703,124],{"class":80},[70,705,706],{"class":72,"line":154},[70,707,95],{"emptyLinePlaceholder":94},[70,709,710,713,716,718,721,723,725,728,731,734,737],{"class":72,"line":166},[70,711,712],{"class":80},"app.",[70,714,715],{"class":114},"post",[70,717,118],{"class":80},[70,719,720],{"class":87},"'\u002Fapi\u002Fsignup'",[70,722,34],{"class":80},[70,724,393],{"class":76},[70,726,727],{"class":80}," (",[70,729,730],{"class":404},"c",[70,732,733],{"class":80},") ",[70,735,736],{"class":76},"=>",[70,738,430],{"class":80},[70,740,741,744,747,749,751,753,756,759,761,764,767],{"class":72,"line":177},[70,742,743],{"class":76},"  const",[70,745,746],{"class":80}," { ",[70,748,405],{"class":104},[70,750,34],{"class":80},[70,752,33],{"class":104},[70,754,755],{"class":80}," } ",[70,757,758],{"class":76},"=",[70,760,142],{"class":76},[70,762,763],{"class":80}," c.req.",[70,765,766],{"class":114},"json",[70,768,680],{"class":80},[70,770,771],{"class":72,"line":183},[70,772,95],{"emptyLinePlaceholder":94},[70,774,775],{"class":72,"line":194},[70,776,777],{"class":245},"  \u002F\u002F 1. Create user in your database\n",[70,779,780,782,785,787,789,792,795],{"class":72,"line":205},[70,781,743],{"class":76},[70,783,784],{"class":104}," user",[70,786,108],{"class":76},[70,788,142],{"class":76},[70,790,791],{"class":80}," db.users.",[70,793,794],{"class":114},"create",[70,796,797],{"class":80},"({ email, firstName })\n",[70,799,800],{"class":72,"line":216},[70,801,95],{"emptyLinePlaceholder":94},[70,803,804],{"class":72,"line":222},[70,805,806],{"class":245},"  \u002F\u002F 2. Send the welcome email\n",[70,808,809,812,814,816],{"class":72,"line":228},[70,810,811],{"class":76},"  await",[70,813,145],{"class":80},[70,815,148],{"class":114},[70,817,151],{"class":80},[70,819,820,823,825],{"class":72,"line":233},[70,821,822],{"class":80},"    slug: ",[70,824,160],{"class":87},[70,826,163],{"class":80},[70,828,829],{"class":72,"line":503},[70,830,831],{"class":80},"    email,\n",[70,833,834],{"class":72,"line":512},[70,835,836],{"class":80},"    dataVariables: {\n",[70,838,839],{"class":72,"line":524},[70,840,841],{"class":80},"      firstName,\n",[70,843,844,847,850,853,856,859,862],{"class":72,"line":541},[70,845,846],{"class":80},"      dashboardUrl: ",[70,848,849],{"class":87},"`https:\u002F\u002Fapp.acme.io\u002Fdashboard\u002F${",[70,851,852],{"class":80},"user",[70,854,855],{"class":87},".",[70,857,858],{"class":80},"id",[70,860,861],{"class":87},"}`",[70,863,163],{"class":80},[70,865,866,869,871],{"class":72,"line":558},[70,867,868],{"class":80},"      trialDaysLeft: ",[70,870,211],{"class":87},[70,872,163],{"class":80},[70,874,875],{"class":72,"line":579},[70,876,877],{"class":80},"    },\n",[70,879,880],{"class":72,"line":593},[70,881,882],{"class":80},"  })\n",[70,884,885],{"class":72,"line":602},[70,886,95],{"emptyLinePlaceholder":94},[70,888,889,892,895,897],{"class":72,"line":611},[70,890,891],{"class":76},"  return",[70,893,894],{"class":80}," c.",[70,896,766],{"class":114},[70,898,899],{"class":80},"({ userId: user.id })\n",[70,901,902],{"class":72,"line":616},[70,903,225],{"class":80},[15,905,907],{"id":906},"nächste-schritte","Nächste Schritte",[20,909,910,917,928],{},[23,911,912,916],{},[47,913,915],{"href":914},"\u002Fexamples\u002Fbilling-email","Rechnungs-E-Mail"," — Anhänge zu transaktionalen E-Mails hinzufügen",[23,918,919,923,924,927],{},[47,920,922],{"href":921},"\u002Fexamples\u002Fevent-automation","Event-Automatisierung"," — parallel zur Willkommens-E-Mail ein ",[27,925,926],{},"trial_started","-Event auslösen",[23,929,930,934],{},[47,931,933],{"href":932},"\u002Fapi\u002Ftransactional","Referenz zur Transactional-API"," — vollständige Dokumentation zu Request und Response",[936,937,938],"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 .sDN9O, html code.shiki .sDN9O{--shiki-default:#6A737D;--shiki-dark:#768390}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 .sOLd2, html code.shiki .sOLd2{--shiki-default:#6F42C1;--shiki-dark:#F69D50}html pre.shiki code .s74oq, html code.shiki .s74oq{--shiki-default:#005CC5;--shiki-dark:#F47067}html pre.shiki code .stnAF, html code.shiki .stnAF{--shiki-default:#E36209;--shiki-dark:#F69D50}",{"title":66,"searchDepth":91,"depth":91,"links":940},[941,942,943,944,945],{"id":17,"depth":91,"text":18},{"id":54,"depth":91,"text":55},{"id":342,"depth":91,"text":343},{"id":628,"depth":91,"text":629},{"id":906,"depth":91,"text":907},"md",{},"\u002Fexamples\u002Fwelcome-email",{"title":6,"description":13},"4.examples\u002F1.welcome-email","Wb1qZiJ0-K9bvAoIt1yS5bD8YkdFXxteHDIr0iiMif8",[953,957],{"title":954,"path":955,"stem":956,"children":-1},"Beispiele","\u002Fexamples","4.examples\u002F0.index",{"title":915,"path":914,"stem":958,"children":-1},"4.examples\u002F2.billing-email",1786915111624]