> ## Documentation Index
> Fetch the complete documentation index at: https://university.triggr-app.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Approvals

> Choose who approves a workflow's requests, let them correct a request first, and see what your team and your client's approver see.

A workflow with approval waits before changing anything in the client's tenant. Your team decides internal requests on Approvals; the client's approver decides external ones from an emailed link. A request routed to a [group](#set-up-approval-groups) isn't emailed: it waits on Approvals for any member, and with Ticketing on, its PSA ticket gets a note linking to Approvals.

## Set it up

<Frame caption="Choose who approves: None, Internal, External, conditional overrides and letting the approver correct the request (1:19).">
  <video controls preload="none" playsInline className="w-full aspect-video rounded-xl" poster="/images/videos/approvals-setup.jpg" src="https://mintcdn.com/triggr/rFRD51HB_88hTzdJ/images/videos/approvals-setup.mp4?fit=max&auto=format&n=rFRD51HB_88hTzdJ&q=85&s=113fbb039deda91c8e2125d45b4bec2b" data-path="images/videos/approvals-setup.mp4" />
</Frame>

<Steps>
  <Step title="Choose a teammate">
    On the workflow's **Execution config** tab, choose Internal on the Approval card and pick the user or [user group](#set-up-approval-groups) who approves.

    <Frame>
      <img src="https://mintcdn.com/triggr/MwzXHG3UWzFixdSz/images/core/approvals/approval-internal.png?fit=max&auto=format&n=MwzXHG3UWzFixdSz&q=85&s=29ec131afe54237c5e1746cfa47bc5ee" alt="The Approval card on Base config with Internal selected, Approver set to User and Alex Morgan, the Let the approver edit the request switch on, and Conditional overrides with an Add an override button." width="1664" height="1030" data-path="images/core/approvals/approval-internal.png" />
    </Frame>
  </Step>

  <Step title="Or choose the client">
    Choose External, then pick each client in the scope dropdown, click **Override** on its Approval card and enter the Client approver name and email. Any email address can approve, without an account.

    <Frame caption="Base config.">
      <img src="https://mintcdn.com/triggr/MwzXHG3UWzFixdSz/images/core/approvals/approval-external.png?fit=max&auto=format&n=MwzXHG3UWzFixdSz&q=85&s=382447b619f3224375dc9650a255011c" alt="The Approval card on Base config with External selected, the note Client approver: Set on each client's config page. A run for a client that has none is blocked at submit until it's set, and the Let the approver edit the request switch on." width="1664" height="1062" data-path="images/core/approvals/approval-external.png" />
    </Frame>

    <Frame caption="Acme Corp's override.">
      <img src="https://mintcdn.com/triggr/MwzXHG3UWzFixdSz/images/core/approvals/approval-client.png?fit=max&auto=format&n=MwzXHG3UWzFixdSz&q=85&s=26d11f85b06d1e6f7447742d4c8a3859" alt="The Approval card for one client marked Overridden with a Reset button, External selected, Client approver name Dana Reyes, Client approver email dana@acme.com and the Let the approver edit the request switch on." width="1664" height="1094" data-path="images/core/approvals/approval-client.png" />
    </Frame>
  </Step>

  <Step title="Let the approver correct the request (optional)">
    Turn on **Let the approver edit the request**. It applies to requests submitted after that; with an external approver, anyone holding the link can also browse the client's directory in the request's people pickers until it's answered.
  </Step>

  <Step title="Save">
    Click **Save changes**.
  </Step>
</Steps>

To route some requests to a different approval, add a rule under Conditional overrides; the first match wins. Each override has its own Let the approver edit the request switch, off by default, and its approval replaces the default rather than adding to it. Overriding the Approval card for a client copies the base conditional overrides into that client, so later base changes to them don't reach it.

What an approver can correct, when editing is on:

| | Internal | External |
| - | - | - |
| Where | The request on Approvals | The emailed link |
| What | Any answer | Any answer except who receives a password |
| Work email | Regenerated from a corrected name | Regenerated; must be a suggested address not already in use |
| Saved | On Save changes, before approving | On approve; dropped on reject |

Core re-checks corrected answers as it would a new request, keeps any temporary password already shown, and the run uses the corrections.

## Set up approval groups

Route approvals to a group of teammates. Any member can decide a request, and the first decision settles it.

<Frame caption="Set up approval groups: create a group, add members and route a workflow's approval to it (1:28).">
  <video controls preload="none" playsInline className="w-full aspect-video rounded-xl" poster="/images/videos/approval-groups.jpg" src="https://mintcdn.com/triggr/rFRD51HB_88hTzdJ/images/videos/approval-groups.mp4?fit=max&auto=format&n=rFRD51HB_88hTzdJ&q=85&s=7dfeab65a21362585b9984030f42fbc7" data-path="images/videos/approval-groups.mp4" />
</Frame>

<Steps>
  <Step title="Create the group">
    Go to **Settings > User groups**, click **New group**, enter a Name and an optional Description, and click Create group.

    <Frame>
      <img src="https://mintcdn.com/triggr/MwzXHG3UWzFixdSz/images/core/approvals/group-new.png?fit=max&auto=format&n=MwzXHG3UWzFixdSz&q=85&s=3d7607d6a4faffd419a58008ebcb06b1" alt="The New group dialog with Name Service Desk, Description Approves client requests, and Cancel and Create group buttons." width="800" height="688" data-path="images/core/approvals/group-new.png" />
    </Frame>
  </Step>

  <Step title="Add members">
    Click the group and pick each teammate from **Add a person…**. Changes save as you go; click the cross next to someone to remove them.

    <Frame>
      <img src="https://mintcdn.com/triggr/MwzXHG3UWzFixdSz/images/core/approvals/group-members.png?fit=max&auto=format&n=MwzXHG3UWzFixdSz&q=85&s=b4254c11bb86a057c39950e0031afd40" alt="The Service Desk panel with 3 members, Alex Morgan, Sam Okafor and Priya Nair, each with a remove cross, the Add a person picker and Delete group." width="766" height="1140" data-path="images/core/approvals/group-members.png" />
    </Frame>
  </Step>

  <Step title="Route approvals to it">
    Open the workflow from Config. On Execution config, under Approval, choose Internal, set Approver to Group, pick the group and click **Save changes**. Every client inherits it unless you override the Approval card for that client. To send only some requests to the group, use a conditional override and choose Internal, Group and the group under Then.

    <Frame>
      <img src="https://mintcdn.com/triggr/MwzXHG3UWzFixdSz/images/core/approvals/approval-group.png?fit=max&auto=format&n=MwzXHG3UWzFixdSz&q=85&s=ec15ffda895900c37e14ec31937b7db0" alt="The Approval card with Internal selected, Approver set to Group and Service Desk chosen, the Let the approver edit the request switch, and Conditional overrides with Add an override." width="1664" height="1036" data-path="images/core/approvals/approval-group.png" />
    </Frame>
  </Step>
</Steps>

When a request arrives, it waits on Approvals with the group's name as Approver. Group approvals aren't emailed. If the workflow creates a PSA ticket and Log actions to the ticket is on (the default), the ticket gets an internal note, Awaiting internal approval, linking to Approvals.

<Frame caption="The run waits at Approval after noting the ticket.">
  <img src="https://mintcdn.com/triggr/MwzXHG3UWzFixdSz/images/core/approvals/group-ticket-note.png?fit=max&auto=format&n=MwzXHG3UWzFixdSz&q=85&s=50dbb5c757bc8bce842f32e297fbcf69" alt="A User Onboarding run for Acme Corp, Running, with Trigger, Set Client, Create Ticket, Workflow started, Approval needed? and Awaiting internal approval marked Success, and Approval marked Pending." width="1342" height="1060" data-path="images/core/approvals/group-ticket-note.png" />
</Frame>

<Warning>
  Before you delete a group, choose a new approver for the workflows that use it. Requests routed to a deleted group can't be approved.
</Warning>

## Approve in Core

<Frame caption="Approve a request: open it, correct the details and decide, in Core (1:02).">
  <video controls preload="none" playsInline className="w-full aspect-video rounded-xl" poster="/images/videos/approve-in-core.jpg" src="https://mintcdn.com/triggr/rFRD51HB_88hTzdJ/images/videos/approve-in-core.mp4?fit=max&auto=format&n=rFRD51HB_88hTzdJ&q=85&s=1634b5c83e62a860f1585b1013cfd4da" data-path="images/videos/approve-in-core.mp4" />
</Frame>

<Steps>
  <Step title="Open the request">
    Go to **Approvals** and click a request. Only its approver, or a member of its group, can decide it.

    <Frame>
      <img src="https://mintcdn.com/triggr/MwzXHG3UWzFixdSz/images/core/approvals/approvals-list.png?fit=max&auto=format&n=MwzXHG3UWzFixdSz&q=85&s=1971dbf6b4bf4cf0e8cf92434f0d2970" alt="The Approvals page filtered to Pending, with a Refresh button, a Search approvals box and three requests titled Approval required for Acme Corp, Globex and Initech, with approvers alex@yourmsp.com and Service Desk, Pending statuses and requested dates." width="2288" height="703" data-path="images/core/approvals/approvals-list.png" />
    </Frame>
  </Step>

  <Step title="Check the details">
    Request details lists the answers as submitted.

    <Frame>
      <img src="https://mintcdn.com/triggr/MwzXHG3UWzFixdSz/images/core/approvals/approval-request.png?fit=max&auto=format&n=MwzXHG3UWzFixdSz&q=85&s=4472ba57b1c6c02f58018c1a8ce472af" alt="An open request titled Approval required for Acme Corp, Approver alex@yourmsp.com, Pending, with the body Create a new user account for Jane Doe (jane.doe@acme.com), Request details with an Edit details button, Workflow execution Running, and Reject and Approve buttons." width="768" height="1400" data-path="images/core/approvals/approval-request.png" />
    </Frame>
  </Step>

  <Step title="Correct them (optional)">
    Click **Edit details**, fix the answers and click Save changes.

    <Frame>
      <img src="https://mintcdn.com/triggr/MwzXHG3UWzFixdSz/images/core/approvals/approval-edit.png?fit=max&auto=format&n=MwzXHG3UWzFixdSz&q=85&s=4933a7dc5e8318415884a980bac71c7a" alt="The request in edit mode: the note Correct anything that's wrong, then save, fields for First name, Last name, Work email (UPN) with Generated from the name, Job title changed to Senior account manager, Department, Start date and Reporting manager, and Cancel and Save changes buttons." width="768" height="1480" data-path="images/core/approvals/approval-edit.png" />
    </Frame>

    <Frame caption="After saving: who edited it, with the original answers struck through.">
      <img src="https://mintcdn.com/triggr/MwzXHG3UWzFixdSz/images/core/approvals/approval-edited.png?fit=max&auto=format&n=MwzXHG3UWzFixdSz&q=85&s=ee5526e26b16d50a64b37c5594faa83a" alt="Request details after the edit, with Job title Senior account manager above the struck-through Account manager, and the line Edited by alex@yourmsp.com, 16 Oct, 10:14, original answers are struck through." width="768" height="1480" data-path="images/core/approvals/approval-edited.png" />
    </Frame>
  </Step>

  <Step title="Approve or reject">
    Click **Approve**. To reject, click Reject, give a reason and confirm; the run stops.

    <Frame>
      <img src="https://mintcdn.com/triggr/MwzXHG3UWzFixdSz/images/core/approvals/reject-dialog.png?fit=max&auto=format&n=MwzXHG3UWzFixdSz&q=85&s=d6fce9265fd226946020304f49016f18" alt="The Reject this request? dialog, saying This can't be undone and the workflow will stop, with a required Reason for rejection, and Cancel and Confirm rejection buttons." width="768" height="530" data-path="images/core/approvals/reject-dialog.png" />
    </Frame>
  </Step>
</Steps>

Filter by Approved or Rejected to see past decisions, who made them and the reason.

## What the client's approver sees

<Frame caption="What your client's approver sees: the email, the approval page, correcting the details and the decision (1:03).">
  <video controls preload="none" playsInline className="w-full aspect-video rounded-xl" poster="/images/videos/client-approver.jpg" src="https://mintcdn.com/triggr/rFRD51HB_88hTzdJ/images/videos/client-approver.mp4?fit=max&auto=format&n=rFRD51HB_88hTzdJ&q=85&s=b6ef11a26a1cd05bd7868928e13d0c64" data-path="images/videos/client-approver.mp4" />
</Frame>

External requests don't appear on Approvals. Send your clients' approvers the [Approve a request](/guides/approve-a-request) guide.

<Steps>
  <Step title="The email">
    It comes from your [approval sender](/core/get-started/add-your-branding#send-client-emails-from-your-own-address-optional) and says who requested the change.

    <Frame>
      <img src="https://mintcdn.com/triggr/MwzXHG3UWzFixdSz/images/core/approvals/approval-email.png?fit=max&auto=format&n=MwzXHG3UWzFixdSz&q=85&s=fb1a275e280292846f27885fafdaef97" alt="An email titled Approval required for Acme Corp from Your MSP to dana@acme.com: Before we make the following change for Acme Corp, we need your approval: Create a new user account for Jane Doe (jane.doe@acme.com). Requested by hr@acme.com. A View Details button, signed Your MSP." width="1288" height="907" data-path="images/core/approvals/approval-email.png" />
    </Frame>
  </Step>

  <Step title="The approval page">
    View Details opens a page with your branding, on your [public forms domain](/core/get-started/add-your-branding#use-your-own-domain-optional) if you've set one, otherwise on Core's own address. There's no sign-in: anyone with the link can answer, and it stops working once someone has.

    <Frame>
      <img src="https://mintcdn.com/triggr/MwzXHG3UWzFixdSz/images/core/approvals/external-page.png?fit=max&auto=format&n=MwzXHG3UWzFixdSz&q=85&s=304092cb8efb7c9899ae85308d3b0d47" alt="The Approval required page headed Your MSP with a Secure link label: Your MSP needs your response to continue, a Request details card with an Edit button and the new starter's answers, then the approval request summary, Do you approve this request? with Approve and Reject options, Comments (optional) and a Submit button." width="2048" height="2426" data-path="images/core/approvals/external-page.png" />
    </Frame>
  </Step>

  <Step title="Correcting the details">
    With editing on, Edit turns the details into a form. Who receives a password isn't shown, and anything else they can't change has a padlock.

    <Frame>
      <img src="https://mintcdn.com/triggr/MwzXHG3UWzFixdSz/images/core/approvals/external-edit.png?fit=max&auto=format&n=MwzXHG3UWzFixdSz&q=85&s=af589e8498443b21de2ef76374173f1d" alt="Request details in edit mode: Correct anything that's wrong. Your changes are applied when you approve, a Discard changes link, and fields for First name, Last name, Work email (UPN) generated from the name, Job title changed to Senior account manager, Department, Start date and Reporting manager." width="1312" height="1642" data-path="images/core/approvals/external-edit.png" />
    </Frame>

    <Frame caption="A Password Reset: where the password goes is locked.">
      <img src="https://mintcdn.com/triggr/MwzXHG3UWzFixdSz/images/core/approvals/external-locked.png?fit=max&auto=format&n=MwzXHG3UWzFixdSz&q=85&s=f0a920be52d294cef01b6dae7483a484" alt="Request details in edit mode for a password reset: User, Require a change at next sign-in? and Reason / ticket reference are editable, Send the new password to Their manager has a padlock, and a note says Locked details can't be changed here. If one is wrong, reject the request and say what needs fixing." width="1312" height="1179" data-path="images/core/approvals/external-locked.png" />
    </Frame>
  </Step>

  <Step title="The decision">
    They approve or reject, add an optional comment and click Submit. Corrections are saved only if they approve.

    <Frame>
      <img src="https://mintcdn.com/triggr/MwzXHG3UWzFixdSz/images/core/approvals/external-decision.png?fit=max&auto=format&n=MwzXHG3UWzFixdSz&q=85&s=86884d89c728693a100d1145062354ae" alt="The decision card: Approval request Create a new user account for Jane Doe (jane.doe@acme.com), Do you approve this request? with Approve — proceed with the request selected, a comment, and a Submit button." width="1312" height="927" data-path="images/core/approvals/external-decision.png" />
    </Frame>
  </Step>

  <Step title="Confirmation">
    Thank you means the answer reached Core and the run has carried on.

    <Frame>
      <img src="https://mintcdn.com/triggr/MwzXHG3UWzFixdSz/images/core/approvals/external-thank-you.png?fit=max&auto=format&n=MwzXHG3UWzFixdSz&q=85&s=857eba6475fe3b10202c6286a47cbf59" alt="The Thank you page headed Your MSP: Your response has been recorded and sent to Your MSP. You can close this page." width="2048" height="1200" data-path="images/core/approvals/external-thank-you.png" />
    </Frame>
  </Step>
</Steps>

Opening the link again shows one of these:

<Tabs>
  <Tab title="This link isn't available">
    The request has already been answered.

    <Frame>
      <img src="https://mintcdn.com/triggr/MwzXHG3UWzFixdSz/images/core/approvals/external-link-unavailable.png?fit=max&auto=format&n=MwzXHG3UWzFixdSz&q=85&s=d78e1de2195ee927054fdaf66ee3ce27" alt="The This link isn't available page: This request has already been answered, or the link has expired. If you were asked to review something, reply to the email you received and whoever sent it can re-issue the link." width="2048" height="1200" data-path="images/core/approvals/external-link-unavailable.png" />
    </Frame>
  </Tab>

  <Tab title="Already completed">
    Someone answered while the page was open.

    <Frame>
      <img src="https://mintcdn.com/triggr/MwzXHG3UWzFixdSz/images/core/approvals/external-already-completed.png?fit=max&auto=format&n=MwzXHG3UWzFixdSz&q=85&s=f6c113dd755d83152a841a75b3cbbd9e" alt="The Already completed page headed Your MSP: This request has already been answered, there's nothing left to do here. You can close this page." width="2048" height="1200" data-path="images/core/approvals/external-already-completed.png" />
    </Frame>
  </Tab>
</Tabs>

## After the decision

Follow the run on [Executions](/core/use/executions): an external request waits at its Client approval step, and a rejected request ends at Not Approved. With Log actions to the ticket on, the PSA ticket also gets these notes:

| Note | When |
| - | - |
| Awaiting internal approval, or Awaiting client approval | The request starts waiting; the client note names the approver's email. |
| Request corrected by the approver | After the decision, if anyone corrected it: who, and each change as `Label: before → after`. |
| Request not approved | The request was rejected. |

## Troubleshooting

<AccordionGroup>
  <Accordion title="“… needs a client approver email — set it on this client's config page.”">
    The client has no approver. Override its Approval card and enter a Client approver email.
  </Accordion>

  <Accordion title="“these changes would need a different approval …”">
    The corrected answers match a different conditional override. Reject the request and submit a new one with the corrected details.
  </Accordion>

  <Accordion title="There's no Edit details button">
    Editing applies only to requests submitted after it was turned on, and only the request's approver can edit, while it's pending.
  </Accordion>

  <Accordion title="“You are not the designated approver for this request”">
    Only the named approver can decide it. For a group the message reads "You are not a member of the group that can approve this request": add them under **Settings > User groups**.
  </Accordion>

  <Accordion title="The client's approver didn't get the email">
    Check the client's Client approver email and your approval sender. Without a sending profile, ask them to check spam for mail from `app@triggr-app.com`.
  </Accordion>
</AccordionGroup>

Next: [Reports](/core/use/reports).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.