How It Works
21 min
this guide provides a visual walkthrough of approvals pro's core concepts and how they work together to power your approval workflows core architecture approvals pro uses a hierarchical structure where each level provides specific functionality graph td ap\["\<div align='left'>\<b>approval process\</b>\<br/>• approval object\<br/>• record locking\<br/>• email templates\<br/>• 1+ approval paths\</div>"] ap > patha\["\<div align='left'>\<b>path a · discount\</b>\<br/>• entry criteria\<br/>• can depend on others\</div>"] ap > pathc\["\<div align='left'>\<b>path c · finance\</b>\<br/>• entry criteria\<br/>• depends on a\</div>"] ap > pathb\["\<div align='left'>\<b>path b · legal\</b>\<br/>• entry criteria\<br/>• parallel execution\</div>"] patha > a1\["step 1\<br/>manager"] patha > a2\["step 2\<br/>director"] pathc > c1\["step 1\<br/>finance"] pathb > b1\["step 1\<br/>legal"] pathc >|depends on| patha style ap fill #2a2d64,stroke #151515,color #fff style patha fill #6239eb,stroke #5429e1,color #fff style pathb fill #6239eb,stroke #5429e1,color #fff style pathc fill #6239eb,stroke #5429e1,color #fff style a1 fill #b49dff,stroke #6239eb,color #151515 style a2 fill #b49dff,stroke #6239eb,color #151515 style b1 fill #b49dff,stroke #6239eb,color #151515 style c1 fill #b49dff,stroke #6239eb,color #151515 linkstyle 7 stroke #9b5cff,stroke width 2px,stroke dasharray 5 5 the approval flow here's what happens when a record is submitted for approval 1\ submission a user clicks "submit for approval" on a record (or automation triggers submission) \[screenshot submit for approval button on quote record] 2\ process selection approvals pro evaluates all active approval processes for that object checks entry criteria on each process if multiple processes match, the one with highest process order runs creates an approval request record 3\ path evaluation for each approval path in the process evaluates path entry criteria if criteria are met, the path is activated paths without dependencies start immediately (parallel execution) paths with dependencies wait for dependent paths to complete 4\ step activation within each active path evaluates step entry criteria for each step if criteria are met, creates approval records for assigned approvers steps with dependencies wait for dependent steps 5\ approver notification for each active approval sends notification email to approver(s) approval appears in approver's home page component if group/role approver, all members see the approval 6\ approval/rejection approvers take action approve step is marked approved reject step is marked rejected, typically ending the process reassign approval transferred to another user 7\ completion when all required steps/paths complete approval status field on record is updated final notification emails are sent record is unlocked (if lock was enabled) key concepts explained approval process vs approval request approval process approval request the definition of your approval workflow a specific instance of a running approval created by administrators created when a record is submitted reusable configuration one per submission per record contains paths and steps tracks status and history approval path vs process path approval path the reusable definition of a group of steps process path the link between an approval process and an approval path (allows the same path to be used in multiple processes) approval step vs approval (record) approval step approval (record) the definition of who needs to approve the actual approval task for an approver part of the approval path configuration created when step criteria are met defines approver, conditions, settings tracks individual approver's response entry criteria flow entry criteria are evaluated at multiple levels graph td start(\["record submitted for approval"]) start > d1\["process entry criteria"] d1 > d2\["path entry criteria"] d2 > d3\["step entry criteria"] d3 > approved(\["approval created for approver(s)"]) d1 "not met" > f1\["record cannot be submitted"] d2 "not met" > f2\["path is skipped "] d3 "not met" > f3\["step is skipped "] footnote\["\<i> if 'skip if not applicable' is enabled;\<br/>otherwise process ends\</i>"] style start fill #2a2d64,stroke #151515,color #fff style approved fill #5429e1,stroke #2a2d64,color #fff style d1 fill #6239eb,stroke #5429e1,color #fff style d2 fill #6239eb,stroke #5429e1,color #fff style d3 fill #6239eb,stroke #5429e1,color #fff style f1 fill #b49dff,stroke #6239eb,color #151515 style f2 fill #b49dff,stroke #6239eb,color #151515 style f3 fill #b49dff,stroke #6239eb,color #151515 style footnote fill #c4d4f5,stroke #b49dff,color #151515 linkstyle 4 stroke #9b5cff,stroke width 2px linkstyle 5 stroke #9b5cff,stroke width 2px linkstyle 6 stroke #9b5cff,stroke width 2px condition types visual clause condition compares a field on the record to a value graph lr source\["\<div align='left'>\<b>source\</b>\<br/>field amount\</div>"] threshold\["\<div align='left'>\<b>threshold\</b>\<br/>operator greater than\<br/>value 100000\</div>"] trigger\["\<div align='left'>\<b>triggers when\</b>\<br/>amount > $100,000\</div>"] source > threshold > trigger style source fill #6239eb,stroke #5429e1,color #fff style threshold fill #6239eb,stroke #5429e1,color #fff style trigger fill #2a2d64,stroke #151515,color #fff aggregation condition calculates a value from child records graph lr source\["\<div align='left'>\<b>source\</b>\<br/>variable totallinediscount\<br/>object opportunitylineitem\<br/>function sum(discount c)\</div>"] threshold\["\<div align='left'>\<b>threshold\</b>\<br/>operator greater than\<br/>value 20\</div>"] trigger\["\<div align='left'>\<b>triggers when\</b>\<br/>total discount > 20%\</div>"] source > threshold > trigger style source fill #6239eb,stroke #5429e1,color #fff style threshold fill #6239eb,stroke #5429e1,color #fff style trigger fill #2a2d64,stroke #151515,color #fff variable calculation performs math on multiple variables graph lr source\["\<div align='left'>\<b>source\</b>\<br/>formula \<br/>($totalgross $totalnet) / $totalgross\</div>"] threshold\["\<div align='left'>\<b>threshold\</b>\<br/>operator greater than\<br/>value 0 25\</div>"] trigger\["\<div align='left'>\<b>triggers when\</b>\<br/>discount ratio > 25%\</div>"] source > threshold > trigger style source fill #6239eb,stroke #5429e1,color #fff style threshold fill #6239eb,stroke #5429e1,color #fff style trigger fill #2a2d64,stroke #151515,color #fff status lifecycle approval request status statediagram v2 direction lr \[ ] > pending submitted pending > approved pending > rejected pending > recalled rejected > pending resubmit recalled > pending resubmit approved > \[ ] classdef active fill #6239eb,stroke #5429e1,color #fff,font weight\ bold classdef done fill #2a2d64,stroke #151515,color #fff,font weight\ bold classdef intermediate fill #b49dff,stroke #6239eb,color #151515 class pending active class approved done class rejected intermediate class recalled intermediate approval (step) status statediagram v2 direction lr \[ ] > new step criteria met new > assigned notify approver assigned > approved assigned > rejected assigned > reassigned assigned > recalled approved > \[ ] rejected > \[ ] reassigned > \[ ] recalled > \[ ] classdef active fill #6239eb,stroke #5429e1,color #fff,font weight\ bold classdef done fill #2a2d64,stroke #151515,color #fff,font weight\ bold classdef intermediate fill #b49dff,stroke #6239eb,color #151515 class new active class assigned active class approved done class rejected intermediate class reassigned intermediate class recalled intermediate data model overview graph td ap\["\<b>approval process\</b>\<br/>\<i>appro approval process c\</i>"] apath\["\<b>approval path\</b>\<br/>\<i>appro approval path c\</i>"] pp\["\<b>process path\</b>\<br/>\<i>appro process path c\</i>"] step\["\<b>approval step\</b>\<br/>\<i>appro approval step c\</i>"] approver\["\<b>approver\</b>\<br/>\<i>appro approver c\</i>"] condition\["\<b>condition\</b>\<br/>\<i>appro condition c\</i>"] matrix\["\<b>matrix\</b>\<br/>\<i>appro matrix c\</i>"] ap > pp apath > pp pp > step step > approver step > condition step > matrix style ap fill #2a2d64,stroke #151515,color #fff style apath fill #2a2d64,stroke #151515,color #fff style pp fill #6239eb,stroke #5429e1,color #fff style step fill #6239eb,stroke #5429e1,color #fff style approver fill #b49dff,stroke #6239eb,color #151515 style condition fill #b49dff,stroke #6239eb,color #151515 style matrix fill #b49dff,stroke #6239eb,color #151515 next quick start guide → docid\ bwvkcrf7ysnsu7dvyjd8c