[{"data":1,"prerenderedAt":586},["ShallowReactive",2],{"navigation":3,"\u002Ftransactional\u002Ftemplates":216,"\u002Ftransactional\u002Ftemplates-surround":581},[4,9,14,40,57,74,95,112,133,150,199,208],{"title":5,"path":6,"stem":7,"icon":8},"Quick start","\u002Fgetting-started","01.getting-started","i-lucide-rocket",{"title":10,"path":11,"stem":12,"icon":13},"Set up from the terminal","\u002Fcli","02.cli","i-lucide-terminal",{"title":15,"path":16,"stem":17,"children":18,"page":39},"Domains & DNS","\u002Fdomains","03.domains",[19,23,27,31,35],{"title":20,"path":21,"stem":22},"Adding a domain","\u002Fdomains\u002Fadding-a-domain","03.domains\u002F01.adding-a-domain",{"title":24,"path":25,"stem":26},"Automatic DNS setup","\u002Fdomains\u002Fautomatic-dns-setup","03.domains\u002F02.automatic-dns-setup",{"title":28,"path":29,"stem":30},"Manual DNS records","\u002Fdomains\u002Fmanual-dns-records","03.domains\u002F03.manual-dns-records",{"title":32,"path":33,"stem":34},"Domain verification","\u002Fdomains\u002Fverification","03.domains\u002F04.verification",{"title":36,"path":37,"stem":38},"Troubleshooting DNS","\u002Fdomains\u002Ftroubleshooting","03.domains\u002F05.troubleshooting",false,{"title":41,"path":42,"stem":43,"children":44,"page":39},"Mailboxes & Aliases","\u002Fmailboxes","04.mailboxes",[45,49,53],{"title":46,"path":47,"stem":48},"Creating mailboxes","\u002Fmailboxes\u002Fcreating-mailboxes","04.mailboxes\u002F01.creating-mailboxes",{"title":50,"path":51,"stem":52},"Aliases","\u002Fmailboxes\u002Faliases","04.mailboxes\u002F02.aliases",{"title":54,"path":55,"stem":56},"Passwords, passkeys & access","\u002Fmailboxes\u002Fpasswords-and-access","04.mailboxes\u002F03.passwords-and-access",{"title":58,"path":59,"stem":60,"children":61,"page":39},"Using Your Mail","\u002Fmail","05.mail",[62,66,70],{"title":63,"path":64,"stem":65},"Webmail","\u002Fmail\u002Fwebmail","05.mail\u002F01.webmail",{"title":67,"path":68,"stem":69},"IMAP & SMTP settings","\u002Fmail\u002Fimap-smtp-settings","05.mail\u002F02.imap-smtp-settings",{"title":71,"path":72,"stem":73},"iPhone setup","\u002Fmail\u002Fios-profile","05.mail\u002F03.ios-profile",{"title":75,"path":76,"stem":77,"children":78,"page":39},"Drive","\u002Fdrive","06.drive",[79,83,87,91],{"title":80,"path":81,"stem":82},"Drive overview","\u002Fdrive\u002Foverview","06.drive\u002F01.overview",{"title":84,"path":85,"stem":86},"Uploading & organising files","\u002Fdrive\u002Ffiles-and-folders","06.drive\u002F02.files-and-folders",{"title":88,"path":89,"stem":90},"Sharing files","\u002Fdrive\u002Fsharing","06.drive\u002F03.sharing",{"title":92,"path":93,"stem":94},"Connect Drive to other apps","\u002Fdrive\u002Fconnect-apps","06.drive\u002F04.connect-apps",{"title":96,"path":97,"stem":98,"children":99,"page":39},"Sending & Campaigns","\u002Fsending","07.sending",[100,104,108],{"title":101,"path":102,"stem":103},"Sending limits","\u002Fsending\u002Flimits","07.sending\u002F01.limits",{"title":105,"path":106,"stem":107},"Campaigns","\u002Fsending\u002Fcampaigns","07.sending\u002F02.campaigns",{"title":109,"path":110,"stem":111},"Deliverability & staying out of spam","\u002Fsending\u002Fdeliverability","07.sending\u002F03.deliverability",{"title":113,"path":114,"stem":115,"children":116,"page":39},"Transactional Email","\u002Ftransactional","08.transactional",[117,121,125,129],{"title":118,"path":119,"stem":120},"Transactional email","\u002Ftransactional\u002Foverview","08.transactional\u002F01.overview",{"title":122,"path":123,"stem":124},"Templates","\u002Ftransactional\u002Ftemplates","08.transactional\u002F02.templates",{"title":126,"path":127,"stem":128},"Sending via the API","\u002Ftransactional\u002Fsend-api","08.transactional\u002F03.send-api",{"title":130,"path":131,"stem":132},"Webhooks","\u002Ftransactional\u002Fwebhooks","08.transactional\u002F04.webhooks",{"title":134,"path":135,"stem":136,"children":137,"page":39},"Migrations","\u002Fmigrations","09.migrations",[138,142,146],{"title":139,"path":140,"stem":141},"Migrating your email","\u002Fmigrations\u002Foverview","09.migrations\u002F01.overview",{"title":143,"path":144,"stem":145},"Migrating from Gmail","\u002Fmigrations\u002Ffrom-gmail","09.migrations\u002F02.from-gmail",{"title":147,"path":148,"stem":149},"Migrating from Microsoft 365","\u002Fmigrations\u002Ffrom-microsoft-365","09.migrations\u002F03.from-microsoft-365",{"title":151,"path":152,"stem":153,"children":154,"page":39},"AI & Developers","\u002Fdevelopers","10.developers",[155,159,163,167,170,174,178,182,187,191,195],{"title":156,"path":157,"stem":158,"icon":8},"Quickstart","\u002Fdevelopers\u002Fquickstart","10.developers\u002F00.quickstart",{"title":160,"path":161,"stem":162},"Connect Claude","\u002Fdevelopers\u002Fconnect-claude","10.developers\u002F01.connect-claude",{"title":164,"path":165,"stem":166},"AI agents & API keys","\u002Fdevelopers\u002Fai-agents","10.developers\u002F02.ai-agents",{"title":130,"path":168,"stem":169},"\u002Fdevelopers\u002Fwebhooks","10.developers\u002F03.webhooks",{"title":171,"path":172,"stem":173},"Partner API","\u002Fdevelopers\u002Fpartners","10.developers\u002F04.partners",{"title":175,"path":176,"stem":177},"Intake and Lens","\u002Fdevelopers\u002Fintake","10.developers\u002F05.intake",{"title":179,"path":180,"stem":181},"Use Faivelo from your coding agent","\u002Fdevelopers\u002Fcoding-agents","10.developers\u002F06.coding-agents",{"title":183,"path":184,"stem":185,"icon":186},"Errors","\u002Fdevelopers\u002Ferrors","10.developers\u002F07.errors","i-lucide-circle-alert",{"title":188,"path":189,"stem":190},"Email your agent","\u002Fdevelopers\u002Femail-your-agent","10.developers\u002F08.email-your-agent",{"title":192,"path":193,"stem":194},"Email agent with Claude","\u002Fdevelopers\u002Fagent-with-claude","10.developers\u002F09.agent-with-claude",{"title":196,"path":197,"stem":198},"Email agent with ChatGPT","\u002Fdevelopers\u002Fagent-with-chatgpt","10.developers\u002F10.agent-with-chatgpt",{"title":200,"path":201,"stem":202,"children":203,"page":39},"Billing","\u002Fbilling","11.billing",[204],{"title":205,"path":206,"stem":207},"Billing & plans","\u002Fbilling\u002Fplans","11.billing\u002F01.plans",{"title":209,"path":210,"stem":211,"children":212,"page":39},"Security","\u002Fsecurity","12.security",[213],{"title":209,"path":214,"stem":215},"\u002Fsecurity\u002Foverview","12.security\u002F01.overview",{"id":217,"title":122,"body":218,"description":574,"extension":575,"links":576,"meta":577,"navigation":578,"path":123,"seo":579,"stem":124,"__hash__":580},"docs\u002F08.transactional\u002F02.templates.md",{"type":219,"value":220,"toc":565},"minimark",[221,230,249,253,276,287,291,298,357,368,372,379,476,487,491,507,513,517,528,532,543,547,561],[222,223,224,225,229],"p",{},"Templates separate ",[226,227,228],"strong",{},"design from triggering",": someone designs the receipt once in the visual editor, and your code sends it with three lines — an alias and the variables that change per email. No HTML in your codebase, and design fixes ship without a deploy.",[222,231,232,233,236,237,240,241,244,245,248],{},"Find the editor in the dashboard under ",[226,234,235],{},"Transactional → Templates",". Any signed-in account can browse it; creating and sending templates requires a ",[226,238,239],{},"Pro"," or ",[226,242,243],{},"Business"," plan (see ",[246,247,118],"a",{"href":119},").",[250,251,50],"h2",{"id":252},"aliases",[222,254,255,256,259,260,264,265,268,269,272,273,248],{},"Every template has an ",[226,257,258],{},"alias"," — a short handle like ",[261,262,263],"code",{},"order-confirmation"," — which is what your code passes as ",[261,266,267],{},"templateAlias"," on the ",[246,270,271],{"href":127},"send call",". Aliases are unique per account; if you create a template with a taken alias, Faivelo appends a number (",[261,274,275],{},"order-confirmation-2",[222,277,278,279,282,283,286],{},"A template can be ",[226,280,281],{},"paused"," from the dashboard. Sends that reference a paused template fail with ",[261,284,285],{},"409"," and nothing goes out — useful when a template is mid-edit and must not be triggered.",[250,288,290],{"id":289},"variables","Variables",[222,292,293,294,297],{},"Write ",[261,295,296],{},"{{name}}"," anywhere in the subject or body and it becomes a variable your code fills at send time:",[299,300,305],"pre",{"className":301,"code":302,"language":303,"meta":304,"style":304},"language-json shiki shiki-themes github-light-high-contrast","{ \"templateAlias\": \"order-confirmation\", \"variables\": { \"name\": \"Robin\", \"total\": \"$42.00\" } }\n","json","",[261,306,307],{"__ignoreMap":304},[308,309,312,316,320,323,327,330,333,336,339,341,344,346,349,351,354],"span",{"class":310,"line":311},"line",1,[308,313,315],{"class":314},"sigWx","{ ",[308,317,319],{"class":318},"s742_","\"templateAlias\"",[308,321,322],{"class":314},": ",[308,324,326],{"class":325},"sYEJz","\"order-confirmation\"",[308,328,329],{"class":314},", ",[308,331,332],{"class":318},"\"variables\"",[308,334,335],{"class":314},": { ",[308,337,338],{"class":318},"\"name\"",[308,340,322],{"class":314},[308,342,343],{"class":325},"\"Robin\"",[308,345,329],{"class":314},[308,347,348],{"class":318},"\"total\"",[308,350,322],{"class":314},[308,352,353],{"class":325},"\"$42.00\"",[308,355,356],{"class":314}," } }\n",[222,358,359,360,363,364,367],{},"Rendering is ",[226,361,362],{},"strict",": if the template references a variable the send call didn't provide, the call fails with ",[261,365,366],{},"422"," listing what's missing — nothing is sent. A receipt can't go out with a blank total.",[250,369,371],{"id":370},"repeating-sections","Repeating sections",[222,373,374,375,378],{},"For variable-length content — order line items, a list of alerts — mark a block as a ",[226,376,377],{},"section",". In the send call, feed it an array of rows, and the block renders once per row:",[299,380,382],{"className":301,"code":381,"language":303,"meta":304,"style":304},"{\n  \"variables\": {\n    \"items\": [\n      { \"product\": \"Notebook\", \"price\": \"$12.00\" },\n      { \"product\": \"Pen\", \"price\": \"$3.00\" }\n    ]\n  }\n}\n",[261,383,384,389,398,407,434,458,464,470],{"__ignoreMap":304},[308,385,386],{"class":310,"line":311},[308,387,388],{"class":314},"{\n",[308,390,392,395],{"class":310,"line":391},2,[308,393,394],{"class":318},"  \"variables\"",[308,396,397],{"class":314},": {\n",[308,399,401,404],{"class":310,"line":400},3,[308,402,403],{"class":318},"    \"items\"",[308,405,406],{"class":314},": [\n",[308,408,410,413,416,418,421,423,426,428,431],{"class":310,"line":409},4,[308,411,412],{"class":314},"      { ",[308,414,415],{"class":318},"\"product\"",[308,417,322],{"class":314},[308,419,420],{"class":325},"\"Notebook\"",[308,422,329],{"class":314},[308,424,425],{"class":318},"\"price\"",[308,427,322],{"class":314},[308,429,430],{"class":325},"\"$12.00\"",[308,432,433],{"class":314}," },\n",[308,435,437,439,441,443,446,448,450,452,455],{"class":310,"line":436},5,[308,438,412],{"class":314},[308,440,415],{"class":318},[308,442,322],{"class":314},[308,444,445],{"class":325},"\"Pen\"",[308,447,329],{"class":314},[308,449,425],{"class":318},[308,451,322],{"class":314},[308,453,454],{"class":325},"\"$3.00\"",[308,456,457],{"class":314}," }\n",[308,459,461],{"class":310,"line":460},6,[308,462,463],{"class":314},"    ]\n",[308,465,467],{"class":310,"line":466},7,[308,468,469],{"class":314},"  }\n",[308,471,473],{"class":310,"line":472},8,[308,474,475],{"class":314},"}\n",[222,477,478,479,482,483,486],{},"Inside the section block, ",[261,480,481],{},"{{product}}"," and ",[261,484,485],{},"{{price}}"," refer to the current row's values.",[250,488,490],{"id":489},"the-api-content-slot","The API-content slot",[222,492,493,494,497,498,501,502,506],{},"A template can include an ",[226,495,496],{},"API-content slot"," — a placeholder that your send call fills with its own ",[261,499,500],{},"html",". The caller's markup renders ",[503,504,505],"em",{},"inside"," the designed template (header, theme, footer intact) instead of replacing it. This is the pattern for emails whose body is generated by your app — a digest, a report — that should still wear your design.",[222,508,509,510,512],{},"If a template has no slot, any ",[261,511,500],{}," on a template send is simply unused.",[250,514,516],{"id":515},"shared-theme","Shared theme",[222,518,519,520,523,524,527],{},"Your account has a shared ",[226,521,522],{},"theme"," — brand color, fonts, logo — that every template inherits by default. Change the theme once and every inheriting template updates together. A template can also ",[226,525,526],{},"detach"," and carry its own values when one email needs to look different.",[250,529,531],{"id":530},"test-sends","Test sends",[222,533,534,535,538,539,542],{},"The editor's ",[226,536,537],{},"test send"," delivers the template to an address you choose through the real production pipeline, with the sample values shown in the preview — a faithful rehearsal, not a simulation. Test sends count against your ",[246,540,541],{"href":102},"monthly sending limit"," like any other delivery.",[250,544,546],{"id":545},"next-steps","Next steps",[548,549,550,556],"ul",{},[551,552,553],"li",{},[246,554,555],{"href":127},"Send a template from code",[551,557,558],{},[246,559,560],{"href":131},"Get delivery events pushed to your server",[562,563,564],"style",{},"html pre.shiki code .sigWx, html code.shiki .sigWx{--shiki-default:#0E1116}html pre.shiki code .s742_, html code.shiki .s742_{--shiki-default:#024C1A}html pre.shiki code .sYEJz, html code.shiki .sYEJz{--shiki-default:#032563}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);}",{"title":304,"searchDepth":311,"depth":391,"links":566},[567,568,569,570,571,572,573],{"id":252,"depth":391,"text":50},{"id":289,"depth":391,"text":290},{"id":370,"depth":391,"text":371},{"id":489,"depth":391,"text":490},{"id":515,"depth":391,"text":516},{"id":530,"depth":391,"text":531},{"id":545,"depth":391,"text":546},"Design transactional emails visually, then trigger them from code.","md",null,{},true,{"title":122,"description":574},"m_DKoeKU5UP7NaZP8rNMKpZiv8tES6oYYX43JmU916I",[582,584],{"title":118,"path":119,"stem":120,"description":583,"children":-1},"Send receipts, alerts, and notifications from your own domain via API.",{"title":126,"path":127,"stem":128,"description":585,"children":-1},"Send transactional email with POST \u002Fapi\u002Fv1\u002Femails.",1792109925014]