[{"data":1,"prerenderedAt":492},["ShallowReactive",2],{"docs-navigation":3,"docs-\u002Frunning\u002Fintegrations":254,"surround-\u002Frunning\u002Fintegrations":489},[4,33,86,114,173,212,231],{"title":5,"path":6,"stem":7,"children":8},"Start","\u002Fstart","1.start",[9,13,18,23,28],{"title":10,"path":6,"stem":11,"description":12},"Start here","1.start\u002Findex","What Desifex is, and how to get an application of your own running.",{"title":14,"path":15,"stem":16,"description":17},"What Desifex is","\u002Fstart\u002Fwhat-desifex-is","1.start\u002F1.what-desifex-is","An application factory where conversation is the interface — and the handful of things it deliberately will not do.",{"title":19,"path":20,"stem":21,"description":22},"Your first application","\u002Fstart\u002Fyour-first-application","1.start\u002F2.your-first-application","From a sentence to something running, in about twenty minutes, with nothing to install.",{"title":24,"path":25,"stem":26,"description":27},"The workbench","\u002Fstart\u002Fthe-workbench","1.start\u002F3.the-workbench","A tour of the screen you will spend your time on — the conversation, the six tabs, and the menu.",{"title":29,"path":30,"stem":31,"description":32},"What to expect","\u002Fstart\u002Fwhat-to-expect","1.start\u002F4.what-to-expect","How long things take, what a good working rhythm looks like, and the parts that genuinely go wrong.",{"title":34,"path":35,"stem":36,"children":37},"Building","\u002Fbuilding","2.building",[38,41,46,51,56,61,66,71,76,81],{"title":34,"path":35,"stem":39,"description":40},"2.building\u002Findex","Getting what you actually wanted out of the conversation.",{"title":42,"path":43,"stem":44,"description":45},"Describing what you need","\u002Fbuilding\u002Fdescribing-what-you-need","2.building\u002F1.describing-what-you-need","How to phrase a request so that what comes back is what you meant.",{"title":47,"path":48,"stem":49,"description":50},"Watching a build","\u002Fbuilding\u002Fwatching-a-build","2.building\u002F2.watching-a-build","What the steps mean, what is happening underneath, and why you are not shown a log.",{"title":52,"path":53,"stem":54,"description":55},"Changing your mind","\u002Fbuilding\u002Fchanging-your-mind","2.building\u002F3.changing-your-mind","Interrupting a build, correcting a misunderstanding, and undoing something you asked for.",{"title":57,"path":58,"stem":59,"description":60},"When a build fails","\u002Fbuilding\u002Fwhen-a-build-fails","2.building\u002F4.when-a-build-fails","What a failure actually means, what to try, and when to ask us.",{"title":62,"path":63,"stem":64,"description":65},"Showing it a file","\u002Fbuilding\u002Fshowing-it-files","2.building\u002F5.showing-it-files","Attaching a screenshot, a spreadsheet or a document to the conversation — often faster than describing it.",{"title":67,"path":68,"stem":69,"description":70},"Choosing a design system","\u002Fbuilding\u002Fchoosing-a-design-system","2.building\u002F6.choosing-a-design-system","What a design system decides, how to pick one, and what changing it later does.",{"title":72,"path":73,"stem":74,"description":75},"Asking for settings","\u002Fbuilding\u002Fasking-for-settings","2.building\u002F7.asking-for-settings","The conversation reaches the whole platform — addresses, icons, redirects, users, integrations and shipping. If you do not know where a setting is, ask.",{"title":77,"path":78,"stem":79,"description":80},"When it asks you","\u002Fbuilding\u002Fwhen-it-asks-you","2.building\u002F8.when-it-asks-you","Some decisions arrive as a screen rather than a message — a table to correct, a list to choose from — and the build waits for your answer.",{"title":82,"path":83,"stem":84,"description":85},"Starting from what you have","\u002Fbuilding\u002Fstarting-from-what-you-have","2.building\u002F9.starting-from-what-you-have","A spreadsheet, a document, a picture or a page of your own site — attached, read, and built from.",{"title":87,"path":88,"stem":89,"children":90},"Shipping","\u002Fshipping","3.shipping",[91,94,99,104,109],{"title":87,"path":88,"stem":92,"description":93},"3.shipping\u002Findex","Getting what you built in front of people, and getting back to an earlier version.",{"title":95,"path":96,"stem":97,"description":98},"Versions","\u002Fshipping\u002Fversions","3.shipping\u002F1.versions","Every build is kept, named after what was asked for, and can be compared and restored.",{"title":100,"path":101,"stem":102,"description":103},"Environments","\u002Fshipping\u002Fenvironments","3.shipping\u002F2.environments","Preview, test and live — what each one is, who can reach it, and why their data is separate.",{"title":105,"path":106,"stem":107,"description":108},"Deploying","\u002Fshipping\u002Fdeploying","3.shipping\u002F3.deploying","Putting a version into test or live, what happens while it deploys, and what happens if it fails.",{"title":110,"path":111,"stem":112,"description":113},"Going back","\u002Fshipping\u002Fgoing-back","3.shipping\u002F4.going-back","Restoring an earlier version when a change turned out to be wrong.",{"title":115,"path":116,"stem":117,"children":118},"Running","\u002Frunning","4.running",[119,123,128,133,138,143,148,153,158,163,168],{"title":120,"path":116,"stem":121,"description":122},"Running it","4.running\u002Findex","Everything in Settings — addresses, access, people, files, integrations and what crawlers are told.",{"title":124,"path":125,"stem":126,"description":127},"Addresses and domains","\u002Frunning\u002Faddresses-and-domains","4.running\u002F01.addresses-and-domains","The address an application gets, and how to put it on a domain you own.",{"title":129,"path":130,"stem":131,"description":132},"Who can reach it","\u002Frunning\u002Fwho-can-reach-it","4.running\u002F02.who-can-reach-it","Open, behind one shared password, or accounts — and why the choice is enforced in front of the application.",{"title":134,"path":135,"stem":136,"description":137},"People who sign in","\u002Frunning\u002Fpeople-who-sign-in","4.running\u002F03.people-who-sign-in","The workspace's user directory — adding the people who use your applications, which ones each may open, what you can keep about them, and two-step sign-in.",{"title":139,"path":140,"stem":141,"description":142},"Published files","\u002Frunning\u002Fpublished-files","4.running\u002F04.published-files","Documents your application hands to its users — a price list, a brochure, a form — with a stable address and no build to change them.",{"title":144,"path":145,"stem":146,"description":147},"Integrations","\u002Frunning\u002Fintegrations","4.running\u002F05.integrations","Email, SMS and Google — connected once, used by the application without it ever holding a credential.",{"title":149,"path":150,"stem":151,"description":152},"Appearance","\u002Frunning\u002Fappearance","4.running\u002F06.appearance","The browser tab, the icon, what a link looks like when somebody pastes it, and adding it to a phone's home screen.",{"title":154,"path":155,"stem":156,"description":157},"Redirects and search engines","\u002Frunning\u002Fredirects-and-search-engines","4.running\u002F07.redirects-and-search-engines","Old addresses that still get visited, and what crawlers are told about each environment.",{"title":159,"path":160,"stem":161,"description":162},"Configuration values","\u002Frunning\u002Fconfiguration-values","4.running\u002F08.configuration-values","Named values the application needs but must not contain — API keys, account numbers, thresholds.",{"title":164,"path":165,"stem":166,"description":167},"Your data","\u002Frunning\u002Fyour-data","4.running\u002F09.your-data","The Data tab — reading, correcting, adding to and clearing out what your application has stored, one environment at a time.",{"title":169,"path":170,"stem":171,"description":172},"Visitors","\u002Frunning\u002Fvisitors","4.running\u002F10.visitors","Who is using the application, counted without identifying anybody and with nothing to set up.",{"title":174,"path":175,"stem":176,"children":177},"Workspace","\u002Fworkspace","5.workspace",[178,182,187,192,197,202,207],{"title":179,"path":175,"stem":180,"description":181},"Your workspace","5.workspace\u002Findex","What every application in it shares — the domain, the design systems, the people, the user directory and, if you want it, one set of records — and how to be in more than one.",{"title":183,"path":184,"stem":185,"description":186},"People and roles","\u002Fworkspace\u002Fpeople-and-roles","5.workspace\u002F1.people-and-roles","Three roles, what each can do, how they apply to the builder as well as to the buttons, and why they belong to a workspace rather than to an account.",{"title":188,"path":189,"stem":190,"description":191},"More than one workspace","\u002Fworkspace\u002Fmore-than-one-workspace","5.workspace\u002F2.more-than-one-workspace","Belonging to several, switching between them, the role you hold in each, and why nothing crosses over.",{"title":193,"path":194,"stem":195,"description":196},"Organising applications","\u002Fworkspace\u002Ffolders-and-organising","5.workspace\u002F3.folders-and-organising","Folders on the dashboard, and how to keep a growing list navigable.",{"title":198,"path":199,"stem":200,"description":201},"Your own design systems","\u002Fworkspace\u002Fyour-own-design-systems","5.workspace\u002F4.your-own-design-systems","Authoring a design system for your brand, or a client's, by importing guidelines, a website or a Figma library.",{"title":203,"path":204,"stem":205,"description":206},"Your profile","\u002Fworkspace\u002Fyour-profile","5.workspace\u002F5.your-profile","Your name, your password, your picture, and the theme.",{"title":208,"path":209,"stem":210,"description":211},"Where records live","\u002Fworkspace\u002Fwhere-records-live","5.workspace\u002F6.where-records-live","One store per environment, one across an application's environments, or one the whole workspace shares — what each costs you, and how to change it.",{"title":213,"path":214,"stem":215,"children":216},"Developers","\u002Fdevelopers","6.developers",[217,221,226],{"title":218,"path":214,"stem":219,"description":220},"For developers","6.developers\u002Findex","What is actually generated, and what to do when you inherit one.",{"title":222,"path":223,"stem":224,"description":225},"What gets built","\u002Fdevelopers\u002Fwhat-gets-built","6.developers\u002F1.what-gets-built","The stack, the shape of the repository, and the parts the platform provides rather than the application.",{"title":227,"path":228,"stem":229,"description":230},"Taking one over","\u002Fdevelopers\u002Ftaking-it-over","6.developers\u002F2.taking-it-over","For the developer who has just been handed an application built here.",{"title":232,"path":233,"stem":234,"children":235},"Reference","\u002Freference","7.reference",[236,239,244,249],{"title":232,"path":233,"stem":237,"description":238},"7.reference\u002Findex","Terms, limits, and what to do when something specific has gone wrong.",{"title":240,"path":241,"stem":242,"description":243},"Glossary","\u002Freference\u002Fglossary","7.reference\u002F1.glossary","Every term this documentation uses, in one place.",{"title":245,"path":246,"stem":247,"description":248},"Limits","\u002Freference\u002Flimits","7.reference\u002F2.limits","The boundaries that are real, so you do not discover them at an inconvenient moment.",{"title":250,"path":251,"stem":252,"description":253},"Troubleshooting","\u002Freference\u002Ftroubleshooting","7.reference\u002F3.troubleshooting","Specific symptoms, and what each one usually means.",{"id":255,"title":144,"body":256,"description":147,"extension":482,"hidden":483,"meta":484,"navTitle":485,"navigation":486,"path":145,"seo":487,"stem":146,"__hash__":488},"docs\u002F4.running\u002F05.integrations.md",{"type":257,"value":258,"toc":470},"minimark",[259,267,272,284,291,294,298,355,359,362,368,382,385,392,395,399,402,428,440,444,447,453,458,463,467],[260,261,262,266],"p",{},[263,264,265],"strong",{},"Settings › Integrations."," Your application does not hold an email provider's\nkey or speak an SMS vendor's API. It asks the platform, and the platform does\nthe work with whatever you configured.",[268,269,271],"h2",{"id":270},"asked-for-before-they-are-connected","Asked for before they are connected",[260,273,274,275,278,279,283],{},"An application can be ",[263,276,277],{},"built to use"," something before anybody has the\naccount for it. Tick it on the creation screen — ",[280,281,282],"em",{},"What should it be able to\ndo?"," — and the first build writes the code that sends the email, then carries\non quietly without it until it is connected.",[260,285,286,287,290],{},"The Integrations screen leads with anything in that state: ",[280,288,289],{},"this application\nwas built to use Email, and it is not connected yet",". Connecting it needs no\nrebuild; it works from the next request.",[260,292,293],{},"That is worth doing in that order. Retrofitting email into an application that\nwas never built with it in mind is a change; leaving a path it already has is\na setting.",[268,295,297],{"id":296},"what-is-available","What is available",[299,300,301,314],"table",{},[302,303,304],"thead",{},[305,306,307,311],"tr",{},[308,309,310],"th",{},"Capability",[308,312,313],{},"Providers",[315,316,317,332,345],"tbody",{},[305,318,319,325],{},[320,321,322],"td",{},[263,323,324],{},"Email",[320,326,327,328,331],{},"Postmark ",[280,329,330],{},"(recommended)",", Mailjet, Mailgun, Resend, SendGrid, or your own SMTP server",[305,333,334,339],{},[320,335,336],{},[263,337,338],{},"SMS",[320,340,341,342,344],{},"Telnyx ",[280,343,330],{},", Twilio",[305,346,347,352],{},[320,348,349],{},[263,350,351],{},"Google",[320,353,354],{},"Drive, Docs and Calendar",[268,356,358],{"id":357},"connecting-one","Connecting one",[260,360,361],{},"Choose the capability, choose the provider, paste what it asks for, and press\nthe test.",[260,363,364,367],{},[263,365,366],{},"Testing is a real send."," A credentials check that passes and then fails on\nyour first customer is worse than no check at all.",[369,370,371,377],"ul",{},[372,373,374,376],"li",{},[263,375,324],{}," goes to an address that accepts and discards it, so nothing lands in\nanyone's inbox and it costs nothing.",[372,378,379,381],{},[263,380,338],{}," has no equivalent, so it asks for a number and costs one message.\nThat is said plainly rather than charged silently.",[268,383,351],{"id":384},"google",[260,386,387,388,391],{},"Connected ",[263,389,390],{},"per application",", by consent — you are taken to Google, you approve\nit, you come back.",[260,393,394],{},"Per application rather than per workspace on purpose: a client-facing\napplication and an internal one can use different accounts, and revoking one\nleaves the others working.",[268,396,398],{"id":397},"why-this-is-the-shape-it-is","Why this is the shape it is",[260,400,401],{},"Four things follow from the platform holding the credential rather than the\napplication:",[369,403,404,410,416,422],{},[372,405,406,409],{},[263,407,408],{},"You configure a service, not a library."," Nobody installs anything.",[372,411,412,415],{},[263,413,414],{},"Switching provider is a settings change."," The same application sends\nthrough Postmark today and Mailgun tomorrow, with no rebuild and no build\nspent, because it only ever knew \"send an email\".",[372,417,418,421],{},[263,419,420],{},"Credentials never reach the application."," They stay encrypted on the\nplatform. An application that is compromised cannot walk off with your email\naccount or your Drive.",[372,423,424,427],{},[263,425,426],{},"One implementation to keep working."," A provider changing its API is one fix\nhere, not a rebuild of every application that used it.",[260,429,430,431,434,435,439],{},"The cost is real and worth stating: ",[263,432,433],{},"a service we have not implemented cannot\nbe used this way at all."," An application can still call an ordinary HTTP API\nwith a key you put in ",[436,437,438],"a",{"href":160},"Configuration"," — it just\ndoes not get the properties above.",[268,441,443],{"id":442},"using-them","Using them",[260,445,446],{},"Once a capability is connected, the builder knows it is available and will use\nit when you ask:",[448,449,450],"blockquote",{},[260,451,452],{},"Email the site engineer when a visit is assigned to them.",[448,454,455],{},[260,456,457],{},"Text the customer the day before their appointment.",[448,459,460],{},[260,461,462],{},"Put a copy of each signed report in our Drive folder.",[268,464,466],{"id":465},"disconnecting","Disconnecting",[260,468,469],{},"Stops the capability. An application that tries to send afterwards gets a\nfailure rather than sending through something unexpected.",{"title":471,"searchDepth":472,"depth":472,"links":473},"",3,[474,476,477,478,479,480,481],{"id":270,"depth":475,"text":271},2,{"id":296,"depth":475,"text":297},{"id":357,"depth":475,"text":358},{"id":384,"depth":475,"text":351},{"id":397,"depth":475,"text":398},{"id":442,"depth":475,"text":443},{"id":465,"depth":475,"text":466},"md",false,{},null,true,{"title":144,"description":147},"1ZOhBiTDzMh9lfFG7_wbnuMMATBeCckm_mnMZn1ufWE",[490,491],{"title":139,"path":140,"stem":141,"description":142,"children":-1},{"title":149,"path":150,"stem":151,"description":152,"children":-1},1790202296896]