[{"data":1,"prerenderedAt":879},["ShallowReactive",2],{"doc:\u002Fv\u002F2026.3\u002Fautomation\u002Fworkflow-actions":3},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"section":10,"version":11,"lastUpdated":12,"body":13,"_type":873,"_id":874,"_source":875,"_file":876,"_stem":877,"_extension":878},"\u002Fv\u002F2026.3\u002Fautomation\u002Fworkflow-actions","automation",false,"","Workflow actions","Every step a workflow can take, what each one changes, the permission it needs, and how workflows are stopped from looping.","Automation and AI","2026.3","2026-09-30",{"type":14,"children":15,"toc":862},"root",[16,59,65,201,213,218,305,311,316,429,435,492,497,612,618,623,794,800,805,818,823,829,850],{"type":17,"tag":18,"props":19,"children":20},"element","p",{},[21,24,30,32,37,39,44,45,50,52,57],{"type":22,"value":23},"text","Add steps with ",{"type":17,"tag":25,"props":26,"children":27},"strong",{},[28],{"type":22,"value":29},"Add a step",{"type":22,"value":31},". Steps are grouped as ",{"type":17,"tag":25,"props":33,"children":34},{},[35],{"type":22,"value":36},"Messages",{"type":22,"value":38},", ",{"type":17,"tag":25,"props":40,"children":41},{},[42],{"type":22,"value":43},"Tasks and people",{"type":22,"value":38},{"type":17,"tag":25,"props":46,"children":47},{},[48],{"type":22,"value":49},"Flow",{"type":22,"value":51}," and ",{"type":17,"tag":25,"props":53,"children":54},{},[55],{"type":22,"value":56},"AI",{"type":22,"value":58},". Which steps you're offered depends on the trigger: a step that needs a client only shows on triggers that carry one, and a step you don't have permission for is hidden.",{"type":17,"tag":60,"props":61,"children":63},"h2",{"id":62},"messages",[64],{"type":22,"value":36},{"type":17,"tag":66,"props":67,"children":68},"ul",{},[69,100,110,138,171],{"type":17,"tag":70,"props":71,"children":72},"li",{},[73,78,80,85,87,92,93,98],{"type":17,"tag":25,"props":74,"children":75},{},[76],{"type":22,"value":77},"Send email",{"type":22,"value":79}," — to the lead, the client, the assigned teammate, or someone else. Choose the mailbox it sends from under ",{"type":17,"tag":25,"props":81,"children":82},{},[83],{"type":22,"value":84},"From",{"type":22,"value":86},"; replies arrive in that mailbox in Inbox. In ",{"type":17,"tag":25,"props":88,"children":89},{},[90],{"type":22,"value":91},"Settings",{"type":22,"value":38},{"type":17,"tag":25,"props":94,"children":95},{},[96],{"type":22,"value":97},"Sends from",{"type":22,"value":99}," sets the mailbox on every email step at once.",{"type":17,"tag":70,"props":101,"children":102},{},[103,108],{"type":17,"tag":25,"props":104,"children":105},{},[106],{"type":22,"value":107},"Send text message",{"type":22,"value":109}," — to the same kinds of recipients. Only text people who agreed to get texts from you; clients who opted out are skipped. Text steps need a plan that includes them.",{"type":17,"tag":70,"props":111,"children":112},{},[113,118,120,124,125,129,131,136],{"type":17,"tag":25,"props":114,"children":115},{},[116],{"type":22,"value":117},"Only send during business hours",{"type":22,"value":119}," — an option on ",{"type":17,"tag":25,"props":121,"children":122},{},[123],{"type":22,"value":77},{"type":22,"value":51},{"type":17,"tag":25,"props":126,"children":127},{},[128],{"type":22,"value":107},{"type":22,"value":130},". A send that falls outside the business hours set in Inbox settings is held until the next opening, and later steps count from that time. With no hours set it does nothing, and the step shows ",{"type":17,"tag":25,"props":132,"children":133},{},[134],{"type":22,"value":135},"Set business hours",{"type":22,"value":137},". A workflow with an AI decision sends at any time.",{"type":17,"tag":70,"props":139,"children":140},{},[141,146,148,155,157,162,164,169],{"type":17,"tag":25,"props":142,"children":143},{},[144],{"type":22,"value":145},"Reply to sender",{"type":22,"value":147}," — replies on the same channel and in the same conversation as the incoming message. It's only in workflows with an ",{"type":17,"tag":149,"props":150,"children":152},"a",{"href":151},"\u002Fv\u002F2026.3\u002Fautomation\u002Fai-decisions\u002F",[153],{"type":22,"value":154},"AI decision",{"type":22,"value":156},". In a workflow without one, use ",{"type":17,"tag":25,"props":158,"children":159},{},[160],{"type":22,"value":161},"Email the sender",{"type":22,"value":163}," or ",{"type":17,"tag":25,"props":165,"children":166},{},[167],{"type":22,"value":168},"Text the sender",{"type":22,"value":170}," instead: a new message to the sender, from the mailbox you choose.",{"type":17,"tag":70,"props":172,"children":173},{},[174,179,181,186,187,192,194,199],{"type":17,"tag":25,"props":175,"children":176},{},[177],{"type":22,"value":178},"Notify teammates",{"type":22,"value":180}," — an in-app and push notification. Choose ",{"type":17,"tag":25,"props":182,"children":183},{},[184],{"type":22,"value":185},"All teammates",{"type":22,"value":38},{"type":17,"tag":25,"props":188,"children":189},{},[190],{"type":22,"value":191},"Chosen teammates",{"type":22,"value":193},", or the ",{"type":17,"tag":25,"props":195,"children":196},{},[197],{"type":22,"value":198},"Assigned teammate",{"type":22,"value":200},", whoever is assigned when the step runs.",{"type":17,"tag":18,"props":202,"children":203},{},[204,206,211],{"type":22,"value":205},"On an incoming-message trigger, ",{"type":17,"tag":25,"props":207,"children":208},{},[209],{"type":22,"value":210},"The client",{"type":22,"value":212}," as a recipient is the sender. For a text message that came from an email conversation (or the other way round), it goes to the matching client's phone (or email). If the sender isn't a client, the step is skipped.",{"type":17,"tag":60,"props":214,"children":216},{"id":215},"tasks-and-people",[217],{"type":22,"value":43},{"type":17,"tag":66,"props":219,"children":220},{},[221,231,248],{"type":17,"tag":70,"props":222,"children":223},{},[224,229],{"type":17,"tag":25,"props":225,"children":226},{},[227],{"type":22,"value":228},"Create task",{"type":22,"value":230}," — a task on a board, with its title, description, priority, due date and assignees. It's linked to the client, the lead and the project of the record that started the workflow.",{"type":17,"tag":70,"props":232,"children":233},{},[234,239,241,246],{"type":17,"tag":25,"props":235,"children":236},{},[237],{"type":22,"value":238},"Create reminder",{"type":22,"value":240}," — a reminder for a teammate, ",{"type":17,"tag":25,"props":242,"children":243},{},[244],{"type":22,"value":245},"Right away",{"type":22,"value":247}," or later.",{"type":17,"tag":70,"props":249,"children":250},{},[251,256,258,263,265,270,272,277,279,284,286],{"type":17,"tag":25,"props":252,"children":253},{},[254],{"type":22,"value":255},"Assign to teammate",{"type":22,"value":257}," — hands a new lead to ",{"type":17,"tag":25,"props":259,"children":260},{},[261],{"type":22,"value":262},"One person",{"type":22,"value":264}," or rotates it between several (",{"type":17,"tag":25,"props":266,"children":267},{},[268],{"type":22,"value":269},"Round robin",{"type":22,"value":271},"). It shows ",{"type":17,"tag":25,"props":273,"children":274},{},[275],{"type":22,"value":276},"Next up",{"type":22,"value":278},", and you can drag teammates to reorder the rotation. Only people who can see Requests can be picked. It's offered on the ",{"type":17,"tag":25,"props":280,"children":281},{},[282],{"type":22,"value":283},"New lead",{"type":22,"value":285}," trigger.\n",{"type":17,"tag":66,"props":287,"children":288},{},[289],{"type":17,"tag":70,"props":290,"children":291},{},[292,297,299,303],{"type":17,"tag":25,"props":293,"children":294},{},[295],{"type":22,"value":296},"Also move their booked call",{"type":22,"value":298}," — moves the lead's upcoming booked calls to the new teammate, when they're free at that time. If they're busy, or their calendar can't be read at that moment, the call stays with its host and the run says so. ",{"type":17,"tag":25,"props":300,"children":301},{},[302],{"type":22,"value":276},{"type":22,"value":304}," in the rotation moves on when you publish. The client keeps their invite and meeting link.",{"type":17,"tag":60,"props":306,"children":308},{"id":307},"client-and-lead-records",[309],{"type":22,"value":310},"Client and lead records",{"type":17,"tag":18,"props":312,"children":313},{},[314],{"type":22,"value":315},"These change a record, and they need permission (see the table).",{"type":17,"tag":66,"props":317,"children":318},{},[319,329,346,384,394],{"type":17,"tag":70,"props":320,"children":321},{},[322,327],{"type":17,"tag":25,"props":323,"children":324},{},[325],{"type":22,"value":326},"Move client to stage",{"type":22,"value":328}," — moves the client to a stage you choose, even if one of your stage rules would move them elsewhere. Workflows that start on a stage change will run.",{"type":17,"tag":70,"props":330,"children":331},{},[332,337,339,344],{"type":17,"tag":25,"props":333,"children":334},{},[335],{"type":22,"value":336},"Update a client field",{"type":22,"value":338}," — sets a field on the client, or clears it (",{"type":17,"tag":25,"props":340,"children":341},{},[342],{"type":22,"value":343},"Clear the field instead",{"type":22,"value":345},").",{"type":17,"tag":70,"props":347,"children":348},{},[349,354,356,361,363,368,370,375,377,382],{"type":17,"tag":25,"props":350,"children":351},{},[352],{"type":22,"value":353},"Add or remove tag",{"type":22,"value":355}," — under ",{"type":17,"tag":25,"props":357,"children":358},{},[359],{"type":22,"value":360},"Tags go on",{"type":22,"value":362},", choose ",{"type":17,"tag":25,"props":364,"children":365},{},[366],{"type":22,"value":367},"the client",{"type":22,"value":369}," (or ",{"type":17,"tag":25,"props":371,"children":372},{},[373],{"type":22,"value":374},"the lead",{"type":22,"value":376},", on lead triggers). On ",{"type":17,"tag":25,"props":378,"children":379},{},[380],{"type":22,"value":381},"Lead converted to client",{"type":22,"value":383}," it tags the lead, not the client it became.",{"type":17,"tag":70,"props":385,"children":386},{},[387,392],{"type":17,"tag":25,"props":388,"children":389},{},[390],{"type":22,"value":391},"Set lead status",{"type":22,"value":393}," — marks the lead new, reviewed or archived. An archived lead is left as it is; restore it in Requests to change its status.",{"type":17,"tag":70,"props":395,"children":396},{},[397,402,404,409,411,415,416,421,422,427],{"type":17,"tag":25,"props":398,"children":399},{},[400],{"type":22,"value":401},"Convert lead to client",{"type":22,"value":403}," — creates the client, or links an existing client with the same email or phone, and marks the lead converted. ",{"type":17,"tag":25,"props":405,"children":406},{},[407],{"type":22,"value":408},"Client created",{"type":22,"value":410}," workflows will run. Offered on ",{"type":17,"tag":25,"props":412,"children":413},{},[414],{"type":22,"value":283},{"type":22,"value":38},{"type":17,"tag":25,"props":417,"children":418},{},[419],{"type":22,"value":420},"Lead status changed",{"type":22,"value":51},{"type":17,"tag":25,"props":423,"children":424},{},[425],{"type":22,"value":426},"Lead assigned",{"type":22,"value":428},".",{"type":17,"tag":60,"props":430,"children":432},{"id":431},"documents",[433],{"type":22,"value":434},"Documents",{"type":17,"tag":66,"props":436,"children":437},{},[438,455,465,482],{"type":17,"tag":70,"props":439,"children":440},{},[441,446,448,453],{"type":17,"tag":25,"props":442,"children":443},{},[444],{"type":22,"value":445},"Convert proposal to invoice",{"type":22,"value":447}," — offered on ",{"type":17,"tag":25,"props":449,"children":450},{},[451],{"type":22,"value":452},"Proposal accepted",{"type":22,"value":454},". The invoice gets the next invoice number and a payment link.",{"type":17,"tag":70,"props":456,"children":457},{},[458,463],{"type":17,"tag":25,"props":459,"children":460},{},[461],{"type":22,"value":462},"Send invoice",{"type":22,"value":464}," — offered on invoice triggers. Sends the invoice with its PDF and payment link. Leave the message empty to use your invoice email template.",{"type":17,"tag":70,"props":466,"children":467},{},[468,473,475,480],{"type":17,"tag":25,"props":469,"children":470},{},[471],{"type":22,"value":472},"Send contract",{"type":22,"value":474}," — sends a contract from a ",{"type":17,"tag":25,"props":476,"children":477},{},[478],{"type":22,"value":479},"Template",{"type":22,"value":481},". A template with roles you fill in by hand can't be sent by a workflow. It uses a contract from your plan, or Tokens when there are none left.",{"type":17,"tag":70,"props":483,"children":484},{},[485,490],{"type":17,"tag":25,"props":486,"children":487},{},[488],{"type":22,"value":489},"Remind contract signers",{"type":22,"value":491}," — offered on contract triggers where someone can still sign. Emails everyone who was sent the contract and hasn't signed. Anyone reminded in the last 24 hours is skipped.",{"type":17,"tag":60,"props":493,"children":495},{"id":494},"flow",[496],{"type":22,"value":49},{"type":17,"tag":66,"props":498,"children":499},{},[500,544,581],{"type":17,"tag":70,"props":501,"children":502},{},[503,508,510,515,517,522,524,529,530,535,537,542],{"type":17,"tag":25,"props":504,"children":505},{},[506],{"type":22,"value":507},"Stop the workflow",{"type":22,"value":509}," — ends the run when a condition matches, so nothing after it runs. The run shows ",{"type":17,"tag":25,"props":511,"children":512},{},[513],{"type":22,"value":514},"Stopped",{"type":22,"value":516},". Choose ",{"type":17,"tag":25,"props":518,"children":519},{},[520],{"type":22,"value":521},"Stop when",{"type":22,"value":523},", then ",{"type":17,"tag":25,"props":525,"children":526},{},[527],{"type":22,"value":528},"All rules match",{"type":22,"value":163},{"type":17,"tag":25,"props":531,"children":532},{},[533],{"type":22,"value":534},"Any rule matches",{"type":22,"value":536},". ",{"type":17,"tag":25,"props":538,"children":539},{},[540],{"type":22,"value":541},"Common rules",{"type":22,"value":543}," gives you ready-made ones, such as \"The invoice is paid\" or \"The client has accepted or declined\". Stop steps also work in workflows with an AI decision.",{"type":17,"tag":70,"props":545,"children":546},{},[547,552,554,559,560,565,567,572,574,580],{"type":17,"tag":25,"props":548,"children":549},{},[550],{"type":22,"value":551},"Check a condition",{"type":22,"value":553}," — splits the flow into ",{"type":17,"tag":25,"props":555,"children":556},{},[557],{"type":22,"value":558},"Yes",{"type":22,"value":51},{"type":17,"tag":25,"props":561,"children":562},{},[563],{"type":22,"value":564},"No",{"type":22,"value":566}," on the record's own fields, with no AI. Steps on ",{"type":17,"tag":25,"props":568,"children":569},{},[570],{"type":22,"value":571},"Then",{"type":22,"value":573}," run for every record. See ",{"type":17,"tag":149,"props":575,"children":577},{"href":576},"\u002Fv\u002F2026.3\u002Fautomation\u002Fbuild-test-activate-workflow\u002F#check-a-condition",[578],{"type":22,"value":579},"Build a workflow",{"type":22,"value":428},{"type":17,"tag":70,"props":582,"children":583},{},[584,589,591,596,598,603,605,611],{"type":17,"tag":25,"props":585,"children":586},{},[587],{"type":22,"value":588},"Wait",{"type":22,"value":590}," — ",{"type":17,"tag":25,"props":592,"children":593},{},[594],{"type":22,"value":595},"Wait for a time",{"type":22,"value":597},", or ",{"type":17,"tag":25,"props":599,"children":600},{},[601],{"type":22,"value":602},"Wait until a date",{"type":22,"value":604}," on the record, for up to 365 days in all. See ",{"type":17,"tag":149,"props":606,"children":608},{"href":607},"\u002Fv\u002F2026.3\u002Fautomation\u002Fbuild-test-activate-workflow\u002F#waits",[609],{"type":22,"value":610},"Waits",{"type":22,"value":428},{"type":17,"tag":60,"props":613,"children":615},{"id":614},"permissions",[616],{"type":22,"value":617},"Permissions",{"type":17,"tag":18,"props":619,"children":620},{},[621],{"type":22,"value":622},"A step that changes a record runs with the rights of the person who last published the workflow. If they lose the permission, the step fails with a message saying so; give the permission back, or have someone who has it publish the workflow again. In the editor, you need the permission yourself to change one of these steps.",{"type":17,"tag":624,"props":625,"children":626},"table",{},[627,646],{"type":17,"tag":628,"props":629,"children":630},"thead",{},[631],{"type":17,"tag":632,"props":633,"children":634},"tr",{},[635,641],{"type":17,"tag":636,"props":637,"children":638},"th",{},[639],{"type":22,"value":640},"Step",{"type":17,"tag":636,"props":642,"children":643},{},[644],{"type":22,"value":645},"You need permission to",{"type":17,"tag":647,"props":648,"children":649},"tbody",{},[650,668,685,704,719,734,749,764,779],{"type":17,"tag":632,"props":651,"children":652},{},[653,663],{"type":17,"tag":654,"props":655,"children":656},"td",{},[657,661],{"type":17,"tag":25,"props":658,"children":659},{},[660],{"type":22,"value":353},{"type":22,"value":662}," (client)",{"type":17,"tag":654,"props":664,"children":665},{},[666],{"type":22,"value":667},"edit clients",{"type":17,"tag":632,"props":669,"children":670},{},[671,680],{"type":17,"tag":654,"props":672,"children":673},{},[674,678],{"type":17,"tag":25,"props":675,"children":676},{},[677],{"type":22,"value":353},{"type":22,"value":679}," (lead)",{"type":17,"tag":654,"props":681,"children":682},{},[683],{"type":22,"value":684},"edit leads",{"type":17,"tag":632,"props":686,"children":687},{},[688,700],{"type":17,"tag":654,"props":689,"children":690},{},[691,695,696],{"type":17,"tag":25,"props":692,"children":693},{},[694],{"type":22,"value":326},{"type":22,"value":38},{"type":17,"tag":25,"props":697,"children":698},{},[699],{"type":22,"value":336},{"type":17,"tag":654,"props":701,"children":702},{},[703],{"type":22,"value":667},{"type":17,"tag":632,"props":705,"children":706},{},[707,714],{"type":17,"tag":654,"props":708,"children":709},{},[710],{"type":17,"tag":25,"props":711,"children":712},{},[713],{"type":22,"value":391},{"type":17,"tag":654,"props":715,"children":716},{},[717],{"type":22,"value":718},"edit leads (archive leads, to archive)",{"type":17,"tag":632,"props":720,"children":721},{},[722,729],{"type":17,"tag":654,"props":723,"children":724},{},[725],{"type":17,"tag":25,"props":726,"children":727},{},[728],{"type":22,"value":401},{"type":17,"tag":654,"props":730,"children":731},{},[732],{"type":22,"value":733},"convert leads and add clients",{"type":17,"tag":632,"props":735,"children":736},{},[737,744],{"type":17,"tag":654,"props":738,"children":739},{},[740],{"type":17,"tag":25,"props":741,"children":742},{},[743],{"type":22,"value":445},{"type":17,"tag":654,"props":745,"children":746},{},[747],{"type":22,"value":748},"convert proposals to invoices",{"type":17,"tag":632,"props":750,"children":751},{},[752,759],{"type":17,"tag":654,"props":753,"children":754},{},[755],{"type":17,"tag":25,"props":756,"children":757},{},[758],{"type":22,"value":462},{"type":17,"tag":654,"props":760,"children":761},{},[762],{"type":22,"value":763},"send invoices and send emails",{"type":17,"tag":632,"props":765,"children":766},{},[767,774],{"type":17,"tag":654,"props":768,"children":769},{},[770],{"type":17,"tag":25,"props":771,"children":772},{},[773],{"type":22,"value":472},{"type":17,"tag":654,"props":775,"children":776},{},[777],{"type":22,"value":778},"create contracts, send contracts and view contracts",{"type":17,"tag":632,"props":780,"children":781},{},[782,789],{"type":17,"tag":654,"props":783,"children":784},{},[785],{"type":17,"tag":25,"props":786,"children":787},{},[788],{"type":22,"value":489},{"type":17,"tag":654,"props":790,"children":791},{},[792],{"type":22,"value":793},"send contracts",{"type":17,"tag":60,"props":795,"children":797},{"id":796},"loop-protection",[798],{"type":22,"value":799},"Loop protection",{"type":17,"tag":18,"props":801,"children":802},{},[803],{"type":22,"value":804},"Workflows can trigger each other: one moves a client to a stage, and another starts on that stage change. To stop this running away:",{"type":17,"tag":66,"props":806,"children":807},{},[808,813],{"type":17,"tag":70,"props":809,"children":810},{},[811],{"type":22,"value":812},"A workflow never starts itself from a change it made.",{"type":17,"tag":70,"props":814,"children":815},{},[816],{"type":22,"value":817},"If workflows change the same record 3 times in 10 minutes, the 4th run stops at that step and logs \"Loop stopped: workflows changed this client 3 times in 10 minutes.\"",{"type":17,"tag":18,"props":819,"children":820},{},[821],{"type":22,"value":822},"One run that changes the same record several times counts once.",{"type":17,"tag":60,"props":824,"children":826},{"id":825},"next-steps",[827],{"type":22,"value":828},"Next steps",{"type":17,"tag":66,"props":830,"children":831},{},[832,841],{"type":17,"tag":70,"props":833,"children":834},{},[835],{"type":17,"tag":149,"props":836,"children":838},{"href":837},"\u002Fv\u002F2026.3\u002Fautomation\u002Fworkflow-triggers\u002F",[839],{"type":22,"value":840},"Workflow triggers",{"type":17,"tag":70,"props":842,"children":843},{},[844],{"type":17,"tag":149,"props":845,"children":847},{"href":846},"\u002Fv\u002F2026.3\u002Fautomation\u002Fworkflow-runs\u002F",[848],{"type":22,"value":849},"Workflow runs",{"type":17,"tag":18,"props":851,"children":852},{},[853,855,861],{"type":22,"value":854},"Return to ",{"type":17,"tag":149,"props":856,"children":858},{"href":857},"\u002Fv\u002F2026.3\u002Fautomation\u002Fautomations\u002F",[859],{"type":22,"value":860},"Workflows",{"type":22,"value":428},{"title":7,"searchDepth":863,"depth":863,"links":864},2,[865,866,867,868,869,870,871,872],{"id":62,"depth":863,"text":36},{"id":215,"depth":863,"text":43},{"id":307,"depth":863,"text":310},{"id":431,"depth":863,"text":434},{"id":494,"depth":863,"text":49},{"id":614,"depth":863,"text":617},{"id":796,"depth":863,"text":799},{"id":825,"depth":863,"text":828},"markdown","content:v:2026.3:automation:workflow-actions.md","content","v\u002F2026.3\u002Fautomation\u002Fworkflow-actions.md","v\u002F2026.3\u002Fautomation\u002Fworkflow-actions","md",1790834917944]