[{"data":1,"prerenderedAt":1741},["ShallowReactive",2],{"content-query-RmHiz6rMBf":3,"content-query-yP1cWMns5L":1538,"content-query-M5aWdXgQKx":1542,"content-query-W4RtfFQaoh":1549,"content-query-eJ9XWy0CGH":1573,"content-query-UP87PRcOMw":1586,"content-query-7VgBfxLOWV":1590,"content-query-Z6fTkbgt1D":1612,"content-query-9giMhwHrGj":1617,"content-query-j8GGVgf9na":1624,"content-query-G03kJtQzJS":1637,"content-query-1mvwAKmUBq":1656,"content-query-zRSmsuVl55":1681,"content-query-No6iPTj4EO":1685,"content-query-MsdmgXewTK":1695,"content-query-BMhIInEJl2":1702},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"intro":10,"type":11,"layout":12,"level":13,"section":5,"body":14,"_type":1531,"_id":1532,"_source":1533,"_file":1534,"_stem":1535,"_extension":1536,"sitemap":1537},"/docs/email/cli","email",false,"","Create & poll email addresses from the CLI","Use the relay CLI to create inbound email addresses and consume the messages they receive. Create an address in one command (with an optional sender filter), then poll the bucket for parsed emails as JSON — one-shot, follow mode, or piped into jq.","Prefer the terminal to the dashboard? The relay CLI can create an inbound email address in a single command and poll a bucket for the messages it receives. Great for throwaway inboxes, scripts and CI.","tutorial","doc","Intermediate",{"type":15,"children":16,"toc":1517},"root",[17,41,46,80,103,110,115,208,229,265,424,437,533,563,575,687,693,698,737,757,763,780,811,832,864,869,967,973,999,1132,1142,1345,1351,1384,1455,1461,1511],{"type":18,"tag":19,"props":20,"children":21},"element","p",{},[22,25,39],{"type":23,"value":24},"text","The ",{"type":18,"tag":26,"props":27,"children":29},"a",{"href":28},"/docs/installation/cli",[30,37],{"type":18,"tag":31,"props":32,"children":34},"code",{"className":33},[],[35],{"type":23,"value":36},"relay",{"type":23,"value":38}," CLI",{"type":23,"value":40}," can create inbound email addresses and consume the messages they receive, without opening the dashboard. It's the quickest way to grab a throwaway inbox, wire an address into a script, or watch mail arrive in your terminal.",{"type":18,"tag":19,"props":42,"children":43},{},[44],{"type":23,"value":45},"Two commands do the work:",{"type":18,"tag":47,"props":48,"children":49},"ul",{},[50,66],{"type":18,"tag":51,"props":52,"children":53},"li",{},[54,64],{"type":18,"tag":55,"props":56,"children":57},"strong",{},[58],{"type":18,"tag":31,"props":59,"children":61},{"className":60},[],[62],{"type":23,"value":63},"relay email create",{"type":23,"value":65}," — create an inbound address (optionally on a fresh throwaway bucket).",{"type":18,"tag":51,"props":67,"children":68},{},[69,78],{"type":18,"tag":55,"props":70,"children":71},{},[72],{"type":18,"tag":31,"props":73,"children":75},{"className":74},[],[76],{"type":23,"value":77},"relay events",{"type":23,"value":79}," — pull the parsed emails from the bucket as they arrive.",{"type":18,"tag":81,"props":82,"children":83},"blockquote",{},[84],{"type":18,"tag":19,"props":85,"children":86},{},[87,89,94,96,101],{"type":23,"value":88},"You need the CLI installed and authenticated first — see ",{"type":18,"tag":26,"props":90,"children":91},{"href":28},[92],{"type":23,"value":93},"Install the CLI",{"type":23,"value":95},". All commands accept a bucket by ",{"type":18,"tag":55,"props":97,"children":98},{},[99],{"type":23,"value":100},"name or ID",{"type":23,"value":102},".",{"type":18,"tag":104,"props":105,"children":107},"h2",{"id":106},"create-an-address",[108],{"type":23,"value":109},"Create an address",{"type":18,"tag":19,"props":111,"children":112},{},[113],{"type":23,"value":114},"The fastest path — no arguments — creates a throwaway bucket and prints a ready-to-use address:",{"type":18,"tag":116,"props":117,"children":121},"pre",{"className":118,"code":119,"language":120,"meta":7,"style":7},"language-console shiki shiki-themes github-dark","$ relay email create\nInbound email address created.\n\n  Address:  eb9649a3-b781-4158-be69-bb210596e759@in.webhookrelay-mail.com\n  Bucket:   email-c8e44869  (9bf342ce-9582-42ea-8662-ac73d60e2db6, created for you)\n  Input:    eb9649a3-b781-4158-be69-bb210596e759\n\nPoll it with:\n  relay events --bucket email-c8e44869 --follow\n","console",[122],{"type":18,"tag":31,"props":123,"children":124},{"__ignoreMap":7},[125,136,145,155,164,173,182,190,199],{"type":18,"tag":126,"props":127,"children":130},"span",{"class":128,"line":129},"line",1,[131],{"type":18,"tag":126,"props":132,"children":133},{},[134],{"type":23,"value":135},"$ relay email create\n",{"type":18,"tag":126,"props":137,"children":139},{"class":128,"line":138},2,[140],{"type":18,"tag":126,"props":141,"children":142},{},[143],{"type":23,"value":144},"Inbound email address created.\n",{"type":18,"tag":126,"props":146,"children":148},{"class":128,"line":147},3,[149],{"type":18,"tag":126,"props":150,"children":152},{"emptyLinePlaceholder":151},true,[153],{"type":23,"value":154},"\n",{"type":18,"tag":126,"props":156,"children":158},{"class":128,"line":157},4,[159],{"type":18,"tag":126,"props":160,"children":161},{},[162],{"type":23,"value":163},"  Address:  eb9649a3-b781-4158-be69-bb210596e759@in.webhookrelay-mail.com\n",{"type":18,"tag":126,"props":165,"children":167},{"class":128,"line":166},5,[168],{"type":18,"tag":126,"props":169,"children":170},{},[171],{"type":23,"value":172},"  Bucket:   email-c8e44869  (9bf342ce-9582-42ea-8662-ac73d60e2db6, created for you)\n",{"type":18,"tag":126,"props":174,"children":176},{"class":128,"line":175},6,[177],{"type":18,"tag":126,"props":178,"children":179},{},[180],{"type":23,"value":181},"  Input:    eb9649a3-b781-4158-be69-bb210596e759\n",{"type":18,"tag":126,"props":183,"children":185},{"class":128,"line":184},7,[186],{"type":18,"tag":126,"props":187,"children":188},{"emptyLinePlaceholder":151},[189],{"type":23,"value":154},{"type":18,"tag":126,"props":191,"children":193},{"class":128,"line":192},8,[194],{"type":18,"tag":126,"props":195,"children":196},{},[197],{"type":23,"value":198},"Poll it with:\n",{"type":18,"tag":126,"props":200,"children":202},{"class":128,"line":201},9,[203],{"type":18,"tag":126,"props":204,"children":205},{},[206],{"type":23,"value":207},"  relay events --bucket email-c8e44869 --follow\n",{"type":18,"tag":19,"props":209,"children":210},{},[211,213,219,221,227],{"type":23,"value":212},"The address is the input's ID at your environment's inbound domain (",{"type":18,"tag":31,"props":214,"children":216},{"className":215},[],[217],{"type":23,"value":218},"\u003Cinput-id>@in.webhookrelay-mail.com",{"type":23,"value":220},"). Send mail to it and every message is parsed into ",{"type":18,"tag":26,"props":222,"children":224},{"href":223},"/docs/email/payload",[225],{"type":23,"value":226},"JSON",{"type":23,"value":228}," and stored on the bucket.",{"type":18,"tag":19,"props":230,"children":231},{},[232,234,239,241,247,249,255,257,263],{"type":23,"value":233},"Attach the address to an ",{"type":18,"tag":55,"props":235,"children":236},{},[237],{"type":23,"value":238},"existing bucket",{"type":23,"value":240}," with ",{"type":18,"tag":31,"props":242,"children":244},{"className":243},[],[245],{"type":23,"value":246},"--bucket",{"type":23,"value":248},", and restrict who may send with ",{"type":18,"tag":31,"props":250,"children":252},{"className":251},[],[253],{"type":23,"value":254},"--filter-from",{"type":23,"value":256}," (repeatable; exact-match ",{"type":18,"tag":26,"props":258,"children":260},{"href":259},"/docs/email/filtering-and-policy",[261],{"type":23,"value":262},"sender allowlist",{"type":23,"value":264},"):",{"type":18,"tag":116,"props":266,"children":270},{"className":267,"code":268,"language":269,"meta":7,"style":7},"language-bash shiki shiki-themes github-dark","# Into an existing bucket, only accept mail from one sender\nrelay email create --bucket signups --filter-from noreply@stripe.com\n\n# Several allowed senders, drop attachments, give it a name\nrelay email create --bucket signups \\\n  --name \"stripe-receipts\" \\\n  --filter-from alerts@stripe.com \\\n  --filter-from ci@stripe.com \\\n  --no-attachments\n","bash",[271],{"type":18,"tag":31,"props":272,"children":273},{"__ignoreMap":7},[274,283,323,330,338,366,383,400,416],{"type":18,"tag":126,"props":275,"children":276},{"class":128,"line":129},[277],{"type":18,"tag":126,"props":278,"children":280},{"style":279},"--shiki-default:#6A737D",[281],{"type":23,"value":282},"# Into an existing bucket, only accept mail from one sender\n",{"type":18,"tag":126,"props":284,"children":285},{"class":128,"line":138},[286,291,297,302,308,313,318],{"type":18,"tag":126,"props":287,"children":289},{"style":288},"--shiki-default:#B392F0",[290],{"type":23,"value":36},{"type":18,"tag":126,"props":292,"children":294},{"style":293},"--shiki-default:#9ECBFF",[295],{"type":23,"value":296}," email",{"type":18,"tag":126,"props":298,"children":299},{"style":293},[300],{"type":23,"value":301}," create",{"type":18,"tag":126,"props":303,"children":305},{"style":304},"--shiki-default:#79B8FF",[306],{"type":23,"value":307}," --bucket",{"type":18,"tag":126,"props":309,"children":310},{"style":293},[311],{"type":23,"value":312}," signups",{"type":18,"tag":126,"props":314,"children":315},{"style":304},[316],{"type":23,"value":317}," --filter-from",{"type":18,"tag":126,"props":319,"children":320},{"style":293},[321],{"type":23,"value":322}," noreply@stripe.com\n",{"type":18,"tag":126,"props":324,"children":325},{"class":128,"line":147},[326],{"type":18,"tag":126,"props":327,"children":328},{"emptyLinePlaceholder":151},[329],{"type":23,"value":154},{"type":18,"tag":126,"props":331,"children":332},{"class":128,"line":157},[333],{"type":18,"tag":126,"props":334,"children":335},{"style":279},[336],{"type":23,"value":337},"# Several allowed senders, drop attachments, give it a name\n",{"type":18,"tag":126,"props":339,"children":340},{"class":128,"line":166},[341,345,349,353,357,361],{"type":18,"tag":126,"props":342,"children":343},{"style":288},[344],{"type":23,"value":36},{"type":18,"tag":126,"props":346,"children":347},{"style":293},[348],{"type":23,"value":296},{"type":18,"tag":126,"props":350,"children":351},{"style":293},[352],{"type":23,"value":301},{"type":18,"tag":126,"props":354,"children":355},{"style":304},[356],{"type":23,"value":307},{"type":18,"tag":126,"props":358,"children":359},{"style":293},[360],{"type":23,"value":312},{"type":18,"tag":126,"props":362,"children":363},{"style":304},[364],{"type":23,"value":365}," \\\n",{"type":18,"tag":126,"props":367,"children":368},{"class":128,"line":175},[369,374,379],{"type":18,"tag":126,"props":370,"children":371},{"style":304},[372],{"type":23,"value":373},"  --name",{"type":18,"tag":126,"props":375,"children":376},{"style":293},[377],{"type":23,"value":378}," \"stripe-receipts\"",{"type":18,"tag":126,"props":380,"children":381},{"style":304},[382],{"type":23,"value":365},{"type":18,"tag":126,"props":384,"children":385},{"class":128,"line":184},[386,391,396],{"type":18,"tag":126,"props":387,"children":388},{"style":304},[389],{"type":23,"value":390},"  --filter-from",{"type":18,"tag":126,"props":392,"children":393},{"style":293},[394],{"type":23,"value":395}," alerts@stripe.com",{"type":18,"tag":126,"props":397,"children":398},{"style":304},[399],{"type":23,"value":365},{"type":18,"tag":126,"props":401,"children":402},{"class":128,"line":192},[403,407,412],{"type":18,"tag":126,"props":404,"children":405},{"style":304},[406],{"type":23,"value":390},{"type":18,"tag":126,"props":408,"children":409},{"style":293},[410],{"type":23,"value":411}," ci@stripe.com",{"type":18,"tag":126,"props":413,"children":414},{"style":304},[415],{"type":23,"value":365},{"type":18,"tag":126,"props":417,"children":418},{"class":128,"line":201},[419],{"type":18,"tag":126,"props":420,"children":421},{"style":304},[422],{"type":23,"value":423},"  --no-attachments\n",{"type":18,"tag":19,"props":425,"children":426},{},[427,429,435],{"type":23,"value":428},"For scripts, ",{"type":18,"tag":31,"props":430,"children":432},{"className":431},[],[433],{"type":23,"value":434},"--json",{"type":23,"value":436}," prints the address and IDs as JSON:",{"type":18,"tag":116,"props":438,"children":440},{"className":118,"code":439,"language":120,"meta":7,"style":7},"$ relay email create --bucket signups --name stripe-receipts --filter-from noreply@stripe.com --json\n{\n  \"email_address\": \"15a51b42-7de4-42ff-8628-4645565fa8b1@in.webhookrelay-mail.com\",\n  \"input_id\": \"15a51b42-7de4-42ff-8628-4645565fa8b1\",\n  \"bucket_id\": \"9bf342ce-9582-42ea-8662-ac73d60e2db6\",\n  \"bucket_name\": \"signups\",\n  \"allowed_senders\": [\"noreply@stripe.com\"]\n}\n\n# Capture just the address\n$ ADDR=$(relay email create --json | jq -r .email_address)\n",[441],{"type":18,"tag":31,"props":442,"children":443},{"__ignoreMap":7},[444,452,460,468,476,484,492,500,508,515,524],{"type":18,"tag":126,"props":445,"children":446},{"class":128,"line":129},[447],{"type":18,"tag":126,"props":448,"children":449},{},[450],{"type":23,"value":451},"$ relay email create --bucket signups --name stripe-receipts --filter-from noreply@stripe.com --json\n",{"type":18,"tag":126,"props":453,"children":454},{"class":128,"line":138},[455],{"type":18,"tag":126,"props":456,"children":457},{},[458],{"type":23,"value":459},"{\n",{"type":18,"tag":126,"props":461,"children":462},{"class":128,"line":147},[463],{"type":18,"tag":126,"props":464,"children":465},{},[466],{"type":23,"value":467},"  \"email_address\": \"15a51b42-7de4-42ff-8628-4645565fa8b1@in.webhookrelay-mail.com\",\n",{"type":18,"tag":126,"props":469,"children":470},{"class":128,"line":157},[471],{"type":18,"tag":126,"props":472,"children":473},{},[474],{"type":23,"value":475},"  \"input_id\": \"15a51b42-7de4-42ff-8628-4645565fa8b1\",\n",{"type":18,"tag":126,"props":477,"children":478},{"class":128,"line":166},[479],{"type":18,"tag":126,"props":480,"children":481},{},[482],{"type":23,"value":483},"  \"bucket_id\": \"9bf342ce-9582-42ea-8662-ac73d60e2db6\",\n",{"type":18,"tag":126,"props":485,"children":486},{"class":128,"line":175},[487],{"type":18,"tag":126,"props":488,"children":489},{},[490],{"type":23,"value":491},"  \"bucket_name\": \"signups\",\n",{"type":18,"tag":126,"props":493,"children":494},{"class":128,"line":184},[495],{"type":18,"tag":126,"props":496,"children":497},{},[498],{"type":23,"value":499},"  \"allowed_senders\": [\"noreply@stripe.com\"]\n",{"type":18,"tag":126,"props":501,"children":502},{"class":128,"line":192},[503],{"type":18,"tag":126,"props":504,"children":505},{},[506],{"type":23,"value":507},"}\n",{"type":18,"tag":126,"props":509,"children":510},{"class":128,"line":201},[511],{"type":18,"tag":126,"props":512,"children":513},{"emptyLinePlaceholder":151},[514],{"type":23,"value":154},{"type":18,"tag":126,"props":516,"children":518},{"class":128,"line":517},10,[519],{"type":18,"tag":126,"props":520,"children":521},{},[522],{"type":23,"value":523},"# Capture just the address\n",{"type":18,"tag":126,"props":525,"children":527},{"class":128,"line":526},11,[528],{"type":18,"tag":126,"props":529,"children":530},{},[531],{"type":23,"value":532},"$ ADDR=$(relay email create --json | jq -r .email_address)\n",{"type":18,"tag":534,"props":535,"children":536},"hint",{},[537],{"type":18,"tag":19,"props":538,"children":539},{},[540,542,547,549,554,556,561],{"type":23,"value":541},"When you don't pass ",{"type":18,"tag":31,"props":543,"children":545},{"className":544},[],[546],{"type":23,"value":246},{"type":23,"value":548},", ",{"type":18,"tag":31,"props":550,"children":552},{"className":551},[],[553],{"type":23,"value":63},{"type":23,"value":555}," provisions a throwaway bucket for the address. If the address can't be created afterwards, that throwaway bucket is cleaned up automatically — a bucket you pass with ",{"type":18,"tag":31,"props":557,"children":559},{"className":558},[],[560],{"type":23,"value":246},{"type":23,"value":562}," is never removed.",{"type":18,"tag":564,"props":565,"children":567},"h3",{"id":566},"relay-email-create-flags",[568,573],{"type":18,"tag":31,"props":569,"children":571},{"className":570},[],[572],{"type":23,"value":63},{"type":23,"value":574}," flags",{"type":18,"tag":576,"props":577,"children":578},"table",{},[579,598],{"type":18,"tag":580,"props":581,"children":582},"thead",{},[583],{"type":18,"tag":584,"props":585,"children":586},"tr",{},[587,593],{"type":18,"tag":588,"props":589,"children":590},"th",{},[591],{"type":23,"value":592},"Flag",{"type":18,"tag":588,"props":594,"children":595},{},[596],{"type":23,"value":597},"Description",{"type":18,"tag":599,"props":600,"children":601},"tbody",{},[602,620,637,654,671],{"type":18,"tag":584,"props":603,"children":604},{},[605,615],{"type":18,"tag":606,"props":607,"children":608},"td",{},[609],{"type":18,"tag":31,"props":610,"children":612},{"className":611},[],[613],{"type":23,"value":614},"-b, --bucket \u003Cname|id>",{"type":18,"tag":606,"props":616,"children":617},{},[618],{"type":23,"value":619},"Bucket to attach the address to. A throwaway bucket is created if omitted.",{"type":18,"tag":584,"props":621,"children":622},{},[623,632],{"type":18,"tag":606,"props":624,"children":625},{},[626],{"type":18,"tag":31,"props":627,"children":629},{"className":628},[],[630],{"type":23,"value":631},"--name \u003Cstring>",{"type":18,"tag":606,"props":633,"children":634},{},[635],{"type":23,"value":636},"Friendly name for the email input.",{"type":18,"tag":584,"props":638,"children":639},{},[640,649],{"type":18,"tag":606,"props":641,"children":642},{},[643],{"type":18,"tag":31,"props":644,"children":646},{"className":645},[],[647],{"type":23,"value":648},"--filter-from \u003Caddr>",{"type":18,"tag":606,"props":650,"children":651},{},[652],{"type":23,"value":653},"Only accept mail from this sender (repeatable; exact, case-insensitive match).",{"type":18,"tag":584,"props":655,"children":656},{},[657,666],{"type":18,"tag":606,"props":658,"children":659},{},[660],{"type":18,"tag":31,"props":661,"children":663},{"className":662},[],[664],{"type":23,"value":665},"--no-attachments",{"type":18,"tag":606,"props":667,"children":668},{},[669],{"type":23,"value":670},"Drop attachments instead of storing them.",{"type":18,"tag":584,"props":672,"children":673},{},[674,682],{"type":18,"tag":606,"props":675,"children":676},{},[677],{"type":18,"tag":31,"props":678,"children":680},{"className":679},[],[681],{"type":23,"value":434},{"type":18,"tag":606,"props":683,"children":684},{},[685],{"type":23,"value":686},"Output the created address as JSON.",{"type":18,"tag":104,"props":688,"children":690},{"id":689},"list-addresses-in-a-bucket",[691],{"type":23,"value":692},"List addresses in a bucket",{"type":18,"tag":19,"props":694,"children":695},{},[696],{"type":23,"value":697},"Lost an address? List a bucket's inbound addresses:",{"type":18,"tag":116,"props":699,"children":701},{"className":118,"code":700,"language":120,"meta":7,"style":7},"$ relay email list --bucket signups\nADDRESS                                                        NAME             FILTER              STATUS\n15a51b42-7de4-42ff-8628-4645565fa8b1@in.webhookrelay-mail.com  stripe-receipts  noreply@stripe.com  -\neb9649a3-b781-4158-be69-bb210596e759@in.webhookrelay-mail.com  -                any sender          -\n",[702],{"type":18,"tag":31,"props":703,"children":704},{"__ignoreMap":7},[705,713,721,729],{"type":18,"tag":126,"props":706,"children":707},{"class":128,"line":129},[708],{"type":18,"tag":126,"props":709,"children":710},{},[711],{"type":23,"value":712},"$ relay email list --bucket signups\n",{"type":18,"tag":126,"props":714,"children":715},{"class":128,"line":138},[716],{"type":18,"tag":126,"props":717,"children":718},{},[719],{"type":23,"value":720},"ADDRESS                                                        NAME             FILTER              STATUS\n",{"type":18,"tag":126,"props":722,"children":723},{"class":128,"line":147},[724],{"type":18,"tag":126,"props":725,"children":726},{},[727],{"type":23,"value":728},"15a51b42-7de4-42ff-8628-4645565fa8b1@in.webhookrelay-mail.com  stripe-receipts  noreply@stripe.com  -\n",{"type":18,"tag":126,"props":730,"children":731},{"class":128,"line":157},[732],{"type":18,"tag":126,"props":733,"children":734},{},[735],{"type":23,"value":736},"eb9649a3-b781-4158-be69-bb210596e759@in.webhookrelay-mail.com  -                any sender          -\n",{"type":18,"tag":19,"props":738,"children":739},{},[740,742,747,749,755],{"type":23,"value":741},"Add ",{"type":18,"tag":31,"props":743,"children":745},{"className":744},[],[746],{"type":23,"value":434},{"type":23,"value":748}," for the full objects (including ",{"type":18,"tag":31,"props":750,"children":752},{"className":751},[],[753],{"type":23,"value":754},"email_input",{"type":23,"value":756}," policy).",{"type":18,"tag":104,"props":758,"children":760},{"id":759},"poll-for-email",[761],{"type":23,"value":762},"Poll for email",{"type":18,"tag":19,"props":764,"children":765},{},[766,771,773,778],{"type":18,"tag":31,"props":767,"children":769},{"className":768},[],[770],{"type":23,"value":77},{"type":23,"value":772}," consumes the bucket's ",{"type":18,"tag":55,"props":774,"children":775},{},[776],{"type":23,"value":777},"pull-delivery queue",{"type":23,"value":779},": each call returns the emails that haven't been delivered yet and marks them delivered, so repeated calls drain the queue. Inbound emails show up with their sender and subject:",{"type":18,"tag":116,"props":781,"children":783},{"className":118,"code":782,"language":120,"meta":7,"style":7},"$ relay events --bucket signups\nID                                    AGE        FROM                SUBJECT\n373e52cb-764e-4f0f-9c8f-6b1e2a0d9f11  6 seconds  noreply@stripe.com  Your receipt\n",[784],{"type":18,"tag":31,"props":785,"children":786},{"__ignoreMap":7},[787,795,803],{"type":18,"tag":126,"props":788,"children":789},{"class":128,"line":129},[790],{"type":18,"tag":126,"props":791,"children":792},{},[793],{"type":23,"value":794},"$ relay events --bucket signups\n",{"type":18,"tag":126,"props":796,"children":797},{"class":128,"line":138},[798],{"type":18,"tag":126,"props":799,"children":800},{},[801],{"type":23,"value":802},"ID                                    AGE        FROM                SUBJECT\n",{"type":18,"tag":126,"props":804,"children":805},{"class":128,"line":147},[806],{"type":18,"tag":126,"props":807,"children":808},{},[809],{"type":23,"value":810},"373e52cb-764e-4f0f-9c8f-6b1e2a0d9f11  6 seconds  noreply@stripe.com  Your receipt\n",{"type":18,"tag":19,"props":812,"children":813},{},[814,816,822,824,830],{"type":23,"value":815},"Use ",{"type":18,"tag":31,"props":817,"children":819},{"className":818},[],[820],{"type":23,"value":821},"--follow",{"type":23,"value":823}," (like ",{"type":18,"tag":31,"props":825,"children":827},{"className":826},[],[828],{"type":23,"value":829},"tail -f",{"type":23,"value":831},") to block and print new emails as they land:",{"type":18,"tag":116,"props":833,"children":835},{"className":267,"code":834,"language":269,"meta":7,"style":7},"relay events --bucket signups --follow\n",[836],{"type":18,"tag":31,"props":837,"children":838},{"__ignoreMap":7},[839],{"type":18,"tag":126,"props":840,"children":841},{"class":128,"line":129},[842,846,851,855,859],{"type":18,"tag":126,"props":843,"children":844},{"style":288},[845],{"type":23,"value":36},{"type":18,"tag":126,"props":847,"children":848},{"style":293},[849],{"type":23,"value":850}," events",{"type":18,"tag":126,"props":852,"children":853},{"style":304},[854],{"type":23,"value":307},{"type":18,"tag":126,"props":856,"children":857},{"style":293},[858],{"type":23,"value":312},{"type":18,"tag":126,"props":860,"children":861},{"style":304},[862],{"type":23,"value":863}," --follow\n",{"type":18,"tag":19,"props":865,"children":866},{},[867],{"type":23,"value":868},"Pull a larger batch, look further back, or restrict to a single output:",{"type":18,"tag":116,"props":870,"children":872},{"className":267,"code":871,"language":269,"meta":7,"style":7},"# Up to 50 per poll, looking back 1 hour\nrelay events --bucket signups --limit 50 --max-age 1h\n\n# Only events routed to a specific output\nrelay events --bucket signups --output out_1a2b\n",[873],{"type":18,"tag":31,"props":874,"children":875},{"__ignoreMap":7},[876,884,923,930,938],{"type":18,"tag":126,"props":877,"children":878},{"class":128,"line":129},[879],{"type":18,"tag":126,"props":880,"children":881},{"style":279},[882],{"type":23,"value":883},"# Up to 50 per poll, looking back 1 hour\n",{"type":18,"tag":126,"props":885,"children":886},{"class":128,"line":138},[887,891,895,899,903,908,913,918],{"type":18,"tag":126,"props":888,"children":889},{"style":288},[890],{"type":23,"value":36},{"type":18,"tag":126,"props":892,"children":893},{"style":293},[894],{"type":23,"value":850},{"type":18,"tag":126,"props":896,"children":897},{"style":304},[898],{"type":23,"value":307},{"type":18,"tag":126,"props":900,"children":901},{"style":293},[902],{"type":23,"value":312},{"type":18,"tag":126,"props":904,"children":905},{"style":304},[906],{"type":23,"value":907}," --limit",{"type":18,"tag":126,"props":909,"children":910},{"style":304},[911],{"type":23,"value":912}," 50",{"type":18,"tag":126,"props":914,"children":915},{"style":304},[916],{"type":23,"value":917}," --max-age",{"type":18,"tag":126,"props":919,"children":920},{"style":293},[921],{"type":23,"value":922}," 1h\n",{"type":18,"tag":126,"props":924,"children":925},{"class":128,"line":147},[926],{"type":18,"tag":126,"props":927,"children":928},{"emptyLinePlaceholder":151},[929],{"type":23,"value":154},{"type":18,"tag":126,"props":931,"children":932},{"class":128,"line":157},[933],{"type":18,"tag":126,"props":934,"children":935},{"style":279},[936],{"type":23,"value":937},"# Only events routed to a specific output\n",{"type":18,"tag":126,"props":939,"children":940},{"class":128,"line":166},[941,945,949,953,957,962],{"type":18,"tag":126,"props":942,"children":943},{"style":288},[944],{"type":23,"value":36},{"type":18,"tag":126,"props":946,"children":947},{"style":293},[948],{"type":23,"value":850},{"type":18,"tag":126,"props":950,"children":951},{"style":304},[952],{"type":23,"value":307},{"type":18,"tag":126,"props":954,"children":955},{"style":293},[956],{"type":23,"value":312},{"type":18,"tag":126,"props":958,"children":959},{"style":304},[960],{"type":23,"value":961}," --output",{"type":18,"tag":126,"props":963,"children":964},{"style":293},[965],{"type":23,"value":966}," out_1a2b\n",{"type":18,"tag":564,"props":968,"children":970},{"id":969},"scripting",[971],{"type":23,"value":972},"Scripting",{"type":18,"tag":19,"props":974,"children":975},{},[976,981,983,989,991,997],{"type":18,"tag":31,"props":977,"children":979},{"className":978},[],[980],{"type":23,"value":434},{"type":23,"value":982}," emits the full event objects; ",{"type":18,"tag":31,"props":984,"children":986},{"className":985},[],[987],{"type":23,"value":988},"--body",{"type":23,"value":990}," emits just the parsed-email JSON (one per line), which is handy for piping into ",{"type":18,"tag":31,"props":992,"children":994},{"className":993},[],[995],{"type":23,"value":996},"jq",{"type":23,"value":998},":",{"type":18,"tag":116,"props":1000,"children":1002},{"className":267,"code":1001,"language":269,"meta":7,"style":7},"# Extract sender + subject of each email\nrelay events --bucket signups --json | jq '.[].body | fromjson | {from, subject}'\n\n# Stream raw parsed emails\nrelay events --bucket signups --body\n\n# Only the event IDs (e.g. to feed into `relay inspect`)\nrelay events --bucket signups -q\n",[1003],{"type":18,"tag":31,"props":1004,"children":1005},{"__ignoreMap":7},[1006,1014,1054,1061,1069,1093,1100,1108],{"type":18,"tag":126,"props":1007,"children":1008},{"class":128,"line":129},[1009],{"type":18,"tag":126,"props":1010,"children":1011},{"style":279},[1012],{"type":23,"value":1013},"# Extract sender + subject of each email\n",{"type":18,"tag":126,"props":1015,"children":1016},{"class":128,"line":138},[1017,1021,1025,1029,1033,1038,1044,1049],{"type":18,"tag":126,"props":1018,"children":1019},{"style":288},[1020],{"type":23,"value":36},{"type":18,"tag":126,"props":1022,"children":1023},{"style":293},[1024],{"type":23,"value":850},{"type":18,"tag":126,"props":1026,"children":1027},{"style":304},[1028],{"type":23,"value":307},{"type":18,"tag":126,"props":1030,"children":1031},{"style":293},[1032],{"type":23,"value":312},{"type":18,"tag":126,"props":1034,"children":1035},{"style":304},[1036],{"type":23,"value":1037}," --json",{"type":18,"tag":126,"props":1039,"children":1041},{"style":1040},"--shiki-default:#F97583",[1042],{"type":23,"value":1043}," |",{"type":18,"tag":126,"props":1045,"children":1046},{"style":288},[1047],{"type":23,"value":1048}," jq",{"type":18,"tag":126,"props":1050,"children":1051},{"style":293},[1052],{"type":23,"value":1053}," '.[].body | fromjson | {from, subject}'\n",{"type":18,"tag":126,"props":1055,"children":1056},{"class":128,"line":147},[1057],{"type":18,"tag":126,"props":1058,"children":1059},{"emptyLinePlaceholder":151},[1060],{"type":23,"value":154},{"type":18,"tag":126,"props":1062,"children":1063},{"class":128,"line":157},[1064],{"type":18,"tag":126,"props":1065,"children":1066},{"style":279},[1067],{"type":23,"value":1068},"# Stream raw parsed emails\n",{"type":18,"tag":126,"props":1070,"children":1071},{"class":128,"line":166},[1072,1076,1080,1084,1088],{"type":18,"tag":126,"props":1073,"children":1074},{"style":288},[1075],{"type":23,"value":36},{"type":18,"tag":126,"props":1077,"children":1078},{"style":293},[1079],{"type":23,"value":850},{"type":18,"tag":126,"props":1081,"children":1082},{"style":304},[1083],{"type":23,"value":307},{"type":18,"tag":126,"props":1085,"children":1086},{"style":293},[1087],{"type":23,"value":312},{"type":18,"tag":126,"props":1089,"children":1090},{"style":304},[1091],{"type":23,"value":1092}," --body\n",{"type":18,"tag":126,"props":1094,"children":1095},{"class":128,"line":175},[1096],{"type":18,"tag":126,"props":1097,"children":1098},{"emptyLinePlaceholder":151},[1099],{"type":23,"value":154},{"type":18,"tag":126,"props":1101,"children":1102},{"class":128,"line":184},[1103],{"type":18,"tag":126,"props":1104,"children":1105},{"style":279},[1106],{"type":23,"value":1107},"# Only the event IDs (e.g. to feed into `relay inspect`)\n",{"type":18,"tag":126,"props":1109,"children":1110},{"class":128,"line":192},[1111,1115,1119,1123,1127],{"type":18,"tag":126,"props":1112,"children":1113},{"style":288},[1114],{"type":23,"value":36},{"type":18,"tag":126,"props":1116,"children":1117},{"style":293},[1118],{"type":23,"value":850},{"type":18,"tag":126,"props":1120,"children":1121},{"style":304},[1122],{"type":23,"value":307},{"type":18,"tag":126,"props":1124,"children":1125},{"style":293},[1126],{"type":23,"value":312},{"type":18,"tag":126,"props":1128,"children":1129},{"style":304},[1130],{"type":23,"value":1131}," -q\n",{"type":18,"tag":564,"props":1133,"children":1135},{"id":1134},"relay-events-flags",[1136,1141],{"type":18,"tag":31,"props":1137,"children":1139},{"className":1138},[],[1140],{"type":23,"value":77},{"type":23,"value":574},{"type":18,"tag":576,"props":1143,"children":1144},{},[1145,1159],{"type":18,"tag":580,"props":1146,"children":1147},{},[1148],{"type":18,"tag":584,"props":1149,"children":1150},{},[1151,1155],{"type":18,"tag":588,"props":1152,"children":1153},{},[1154],{"type":23,"value":592},{"type":18,"tag":588,"props":1156,"children":1157},{},[1158],{"type":23,"value":597},{"type":18,"tag":599,"props":1160,"children":1161},{},[1162,1178,1195,1212,1237,1254,1279,1295,1311,1328],{"type":18,"tag":584,"props":1163,"children":1164},{},[1165,1173],{"type":18,"tag":606,"props":1166,"children":1167},{},[1168],{"type":18,"tag":31,"props":1169,"children":1171},{"className":1170},[],[1172],{"type":23,"value":614},{"type":18,"tag":606,"props":1174,"children":1175},{},[1176],{"type":23,"value":1177},"Bucket to consume from (required).",{"type":18,"tag":584,"props":1179,"children":1180},{},[1181,1190],{"type":18,"tag":606,"props":1182,"children":1183},{},[1184],{"type":18,"tag":31,"props":1185,"children":1187},{"className":1186},[],[1188],{"type":23,"value":1189},"--output \u003Cid>",{"type":18,"tag":606,"props":1191,"children":1192},{},[1193],{"type":23,"value":1194},"Only consume events for this output ID.",{"type":18,"tag":584,"props":1196,"children":1197},{},[1198,1207],{"type":18,"tag":606,"props":1199,"children":1200},{},[1201],{"type":18,"tag":31,"props":1202,"children":1204},{"className":1203},[],[1205],{"type":23,"value":1206},"--limit \u003Cn>",{"type":18,"tag":606,"props":1208,"children":1209},{},[1210],{"type":23,"value":1211},"Max events per poll (max 100; CLI default 20).",{"type":18,"tag":584,"props":1213,"children":1214},{},[1215,1224],{"type":18,"tag":606,"props":1216,"children":1217},{},[1218],{"type":18,"tag":31,"props":1219,"children":1221},{"className":1220},[],[1222],{"type":23,"value":1223},"--max-age \u003Cdur>",{"type":18,"tag":606,"props":1225,"children":1226},{},[1227,1229,1235],{"type":23,"value":1228},"How far back to look for undelivered events (Go duration, e.g. ",{"type":18,"tag":31,"props":1230,"children":1232},{"className":1231},[],[1233],{"type":23,"value":1234},"1h",{"type":23,"value":1236},"; server default 24h).",{"type":18,"tag":584,"props":1238,"children":1239},{},[1240,1249],{"type":18,"tag":606,"props":1241,"children":1242},{},[1243],{"type":18,"tag":31,"props":1244,"children":1246},{"className":1245},[],[1247],{"type":23,"value":1248},"-f, --follow",{"type":18,"tag":606,"props":1250,"children":1251},{},[1252],{"type":23,"value":1253},"Keep polling and print new events as they arrive.",{"type":18,"tag":584,"props":1255,"children":1256},{},[1257,1266],{"type":18,"tag":606,"props":1258,"children":1259},{},[1260],{"type":18,"tag":31,"props":1261,"children":1263},{"className":1262},[],[1264],{"type":23,"value":1265},"--interval \u003Cdur>",{"type":18,"tag":606,"props":1267,"children":1268},{},[1269,1271,1277],{"type":23,"value":1270},"Poll interval when following (default ",{"type":18,"tag":31,"props":1272,"children":1274},{"className":1273},[],[1275],{"type":23,"value":1276},"2s",{"type":23,"value":1278},").",{"type":18,"tag":584,"props":1280,"children":1281},{},[1282,1290],{"type":18,"tag":606,"props":1283,"children":1284},{},[1285],{"type":18,"tag":31,"props":1286,"children":1288},{"className":1287},[],[1289],{"type":23,"value":434},{"type":18,"tag":606,"props":1291,"children":1292},{},[1293],{"type":23,"value":1294},"Output full event objects as JSON.",{"type":18,"tag":584,"props":1296,"children":1297},{},[1298,1306],{"type":18,"tag":606,"props":1299,"children":1300},{},[1301],{"type":18,"tag":31,"props":1302,"children":1304},{"className":1303},[],[1305],{"type":23,"value":988},{"type":18,"tag":606,"props":1307,"children":1308},{},[1309],{"type":23,"value":1310},"Print only the raw event bodies (parsed email JSON).",{"type":18,"tag":584,"props":1312,"children":1313},{},[1314,1323],{"type":18,"tag":606,"props":1315,"children":1316},{},[1317],{"type":18,"tag":31,"props":1318,"children":1320},{"className":1319},[],[1321],{"type":23,"value":1322},"--format \u003Ctmpl>",{"type":18,"tag":606,"props":1324,"children":1325},{},[1326],{"type":23,"value":1327},"Pretty-print events using a Go template.",{"type":18,"tag":584,"props":1329,"children":1330},{},[1331,1340],{"type":18,"tag":606,"props":1332,"children":1333},{},[1334],{"type":18,"tag":31,"props":1335,"children":1337},{"className":1336},[],[1338],{"type":23,"value":1339},"-q, --quiet",{"type":18,"tag":606,"props":1341,"children":1342},{},[1343],{"type":23,"value":1344},"Only display event IDs.",{"type":18,"tag":564,"props":1346,"children":1348},{"id":1347},"how-polling-works",[1349],{"type":23,"value":1350},"How polling works",{"type":18,"tag":19,"props":1352,"children":1353},{},[1354,1359,1361,1366,1368,1374,1376,1382],{"type":18,"tag":31,"props":1355,"children":1357},{"className":1356},[],[1358],{"type":23,"value":77},{"type":23,"value":1360}," is a ",{"type":18,"tag":55,"props":1362,"children":1363},{},[1364],{"type":23,"value":1365},"consuming",{"type":23,"value":1367}," queue: returning an email to you ",{"type":18,"tag":1369,"props":1370,"children":1371},"em",{},[1372],{"type":23,"value":1373},"is",{"type":23,"value":1375}," its delivery, so each row is marked delivered (",{"type":18,"tag":31,"props":1377,"children":1379},{"className":1378},[],[1380],{"type":23,"value":1381},"RECEIVED → SENT",{"type":23,"value":1383},") before the response is sent and won't appear on the next poll. This makes it a reliable \"process each email once\" channel:",{"type":18,"tag":47,"props":1385,"children":1386},{},[1387,1406,1427],{"type":18,"tag":51,"props":1388,"children":1389},{},[1390,1392,1397,1399,1404],{"type":23,"value":1391},"The queue ",{"type":18,"tag":55,"props":1393,"children":1394},{},[1395],{"type":23,"value":1396},"drains",{"type":23,"value":1398}," — keep polling (or use ",{"type":18,"tag":31,"props":1400,"children":1402},{"className":1401},[],[1403],{"type":23,"value":821},{"type":23,"value":1405},") until you get an empty page.",{"type":18,"tag":51,"props":1407,"children":1408},{},[1409,1411,1417,1419,1425],{"type":23,"value":1410},"If you consumed an email but failed to handle it, correct the outcome afterwards with ",{"type":18,"tag":31,"props":1412,"children":1414},{"className":1413},[],[1415],{"type":23,"value":1416},"relay api",{"type":23,"value":1418}," (",{"type":18,"tag":31,"props":1420,"children":1422},{"className":1421},[],[1423],{"type":23,"value":1424},"PUT /v1/logs/{id}",{"type":23,"value":1426},") so it can be retried.",{"type":18,"tag":51,"props":1428,"children":1429},{},[1430,1432,1437,1439,1445,1447,1453],{"type":23,"value":1431},"For a ",{"type":18,"tag":55,"props":1433,"children":1434},{},[1435],{"type":23,"value":1436},"non-destructive",{"type":23,"value":1438}," view of everything a bucket received, use ",{"type":18,"tag":31,"props":1440,"children":1442},{"className":1441},[],[1443],{"type":23,"value":1444},"relay logs",{"type":23,"value":1446}," and ",{"type":18,"tag":31,"props":1448,"children":1450},{"className":1449},[],[1451],{"type":23,"value":1452},"relay inspect",{"type":23,"value":1454}," instead — they read the audit log without consuming.",{"type":18,"tag":104,"props":1456,"children":1458},{"id":1457},"related",[1459],{"type":23,"value":1460},"Related",{"type":18,"tag":47,"props":1462,"children":1463},{},[1464,1475,1485,1495],{"type":18,"tag":51,"props":1465,"children":1466},{},[1467,1473],{"type":18,"tag":26,"props":1468,"children":1470},{"href":1469},"/docs/email",[1471],{"type":23,"value":1472},"Receive emails as webhooks",{"type":23,"value":1474}," — the feature overview and dashboard flow.",{"type":18,"tag":51,"props":1476,"children":1477},{},[1478,1483],{"type":18,"tag":26,"props":1479,"children":1480},{"href":223},[1481],{"type":23,"value":1482},"Email webhook payload",{"type":23,"value":1484}," — every field your events contain.",{"type":18,"tag":51,"props":1486,"children":1487},{},[1488,1493],{"type":18,"tag":26,"props":1489,"children":1490},{"href":259},[1491],{"type":23,"value":1492},"Sender filtering & policy",{"type":23,"value":1494}," — allowlists, attachments, limits.",{"type":18,"tag":51,"props":1496,"children":1497},{},[1498,1502,1504,1509],{"type":18,"tag":26,"props":1499,"children":1500},{"href":28},[1501],{"type":23,"value":93},{"type":23,"value":1503}," — get the ",{"type":18,"tag":31,"props":1505,"children":1507},{"className":1506},[],[1508],{"type":23,"value":36},{"type":23,"value":1510}," binary.",{"type":18,"tag":1512,"props":1513,"children":1514},"style",{},[1515],{"type":23,"value":1516},"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":7,"searchDepth":147,"depth":147,"links":1518},[1519,1523,1524,1530],{"id":106,"depth":138,"text":109,"children":1520},[1521],{"id":566,"depth":147,"text":1522},"relay email create flags",{"id":689,"depth":138,"text":692},{"id":759,"depth":138,"text":762,"children":1525},[1526,1527,1529],{"id":969,"depth":147,"text":972},{"id":1134,"depth":147,"text":1528},"relay events flags",{"id":1347,"depth":147,"text":1350},{"id":1457,"depth":138,"text":1460},"markdown","content:docs:email:4.cli.md","content","docs/email/4.cli.md","docs/email/4.cli","md",{"loc":4},[1539],{"_path":1540,"title":1541},"/docs/webhooks/internal/localhost","Receiving webhooks on localhost",[1543,1546],{"_path":1544,"title":1545},"/docs/webhooks/public/public-destination","Forward to public URL",{"_path":1547,"title":1548},"/docs/webhooks/public/multiple-destination-urls","Multiple destinations",[1550,1552,1555,1558,1561,1564,1567,1570],{"_path":28,"title":1551},"CLI",{"_path":1553,"title":1554},"/docs/installation/docker","Docker container",{"_path":1556,"title":1557},"/docs/installation/docker-compose","Docker Compose",{"_path":1559,"title":1560},"/docs/installation/kubernetes","Kubernetes",{"_path":1562,"title":1563},"/docs/installation/autostart-windows","Autostart (Windows)",{"_path":1565,"title":1566},"/docs/installation/autostart-linux","Autostart (Linux)",{"_path":1568,"title":1569},"/docs/installation/autostart-macos","Autostart (MacOS)",{"_path":1571,"title":1572},"/docs/installation/behind-proxy","HTTP proxy configuration",[1574,1577,1580,1583],{"_path":1575,"title":1576},"/docs/webhooks/auth/username-password","Username and password",{"_path":1578,"title":1579},"/docs/webhooks/auth/hmac","HMAC",{"_path":1581,"title":1582},"/docs/webhooks/auth/jwt","JWT authentication",{"_path":1584,"title":1585},"/docs/webhooks/auth/http-method","Auth using request method",[1587],{"_path":1588,"title":1589},"/docs/webhooks/cron/using-cron-webhooks","Schedule recurring webhooks",[1591,1594,1597,1600,1603,1606,1609],{"_path":1592,"title":1593},"/docs/service-connections","Service Connections",{"_path":1595,"title":1596},"/docs/service-connections/aws_s3","AWS S3",{"_path":1598,"title":1599},"/docs/service-connections/aws_sns","AWS SNS",{"_path":1601,"title":1602},"/docs/service-connections/aws_sqs","AWS SQS",{"_path":1604,"title":1605},"/docs/service-connections/azure","Azure",{"_path":1607,"title":1608},"/docs/service-connections/gcp_gcs","GCP Cloud Storage",{"_path":1610,"title":1611},"/docs/service-connections/gcp_pubsub","GCP Pub/Sub",[1613,1614,1615,1616],{"_path":1469,"title":1472},{"_path":223,"title":1482},{"_path":259,"title":1492},{"_path":4,"title":8},[1618,1621],{"_path":1619,"title":1620},"/docs/tunnels/demoing-your-website","Demoing your website",{"_path":1622,"title":1623},"/docs/tunnels/regions","Regions",[1625,1628,1631,1634],{"_path":1626,"title":1627},"/docs/account/account-management","Account management",{"_path":1629,"title":1630},"/docs/account/mfa","Multi-factor authentication (MFA)",{"_path":1632,"title":1633},"/docs/account/team","Teams and sub-accounts",{"_path":1635,"title":1636},"/docs/account/billing-and-subscriptions","Billing & subscriptions",[1638,1641,1644,1647,1650,1653],{"_path":1639,"title":1640},"/docs/tutorials/cicd/jenkins-bitbucket","Jenkins and Bitbucket",{"_path":1642,"title":1643},"/docs/tutorials/cicd/jenkins-github","Jenkins and GitHub",{"_path":1645,"title":1646},"/docs/tutorials/cicd/jenkins-plugin","Jenkins Plugin",{"_path":1648,"title":1649},"/docs/tutorials/cicd/kubernetes-operator","Kubernetes Operator",{"_path":1651,"title":1652},"/docs/tutorials/cicd/terraform-atlantis","Terraform Atlantis",{"_path":1654,"title":1655},"/docs/tutorials/cicd/webhook-exec","Execute scripts on webhook",[1657,1660,1663,1666,1669,1672,1675,1678],{"_path":1658,"title":1659},"/docs/tutorials/email/airtable","Email to Airtable",{"_path":1661,"title":1662},"/docs/tutorials/email/api","Email to API",{"_path":1664,"title":1665},"/docs/tutorials/email/database","Email to Database",{"_path":1667,"title":1668},"/docs/tutorials/email/discord","Email to Discord",{"_path":1670,"title":1671},"/docs/tutorials/email/google-sheets","Email to Google Sheets",{"_path":1673,"title":1674},"/docs/tutorials/email/microsoft-teams","Email to Microsoft Teams",{"_path":1676,"title":1677},"/docs/tutorials/email/notion","Email to Notion",{"_path":1679,"title":1680},"/docs/tutorials/email/slack","Email to Slack",[1682],{"_path":1683,"title":1684},"/docs/tutorials/warehouse/bigquery","GCP BigQuery",[1686,1689,1692],{"_path":1687,"title":1688},"/docs/tutorials/edge/home-assistant","Home Assistant",{"_path":1690,"title":1691},"/docs/tutorials/edge/javascript-app","JavaScript app",{"_path":1693,"title":1694},"/docs/tutorials/edge/node-red","Node-RED",[1696,1699],{"_path":1697,"title":1698},"/docs/tutorials/transform/docker-to-slack","DockerHub webhook to Slack notification",{"_path":1700,"title":1701},"/docs/tutorials/transform/enrich-webhooks","Enrich webhooks from APIs",[1703,1706,1709,1712,1715,1718,1721,1724,1727,1730,1732,1735,1738],{"_path":1704,"title":1705},"/docs/webhooks/functions/manipulating-json","JSON encoding",{"_path":1707,"title":1708},"/docs/webhooks/functions/make-http-request","Make HTTP request",{"_path":1710,"title":1711},"/docs/webhooks/functions/modify-request","Read, write request data",{"_path":1713,"title":1714},"/docs/webhooks/functions/multipart-form-data","Multipart form to JSON",{"_path":1716,"title":1717},"/docs/webhooks/functions/url-encoded-data","URL Encoded Form",{"_path":1719,"title":1720},"/docs/webhooks/functions/working-with-time","Working with time",{"_path":1722,"title":1723},"/docs/webhooks/functions/send-emails","Sending emails",{"_path":1725,"title":1726},"/docs/webhooks/functions/crypto-functions","Base64, encryption",{"_path":1728,"title":1729},"/docs/webhooks/functions/integrate-into-cicd","Integrating into CI/CD",{"_path":1731,"title":1684},"/docs/webhooks/functions/big-query",{"_path":1733,"title":1734},"/docs/webhooks/functions/accessing-metadata","Accessing metadata",{"_path":1736,"title":1737},"/docs/webhooks/functions/response-functions","Response (post-delivery) functions",{"_path":1739,"title":1740},"/docs/webhooks/functions","Functions",1783063115356]