Using the SweetHawk Approve app for Zendesk you can automatically either send, or apply an unsent approval to a Zendesk ticket. This mandates that the agent who is working on the ticket must complete the approval request before they are able to solve the ticket.
Here's a video that shows how this can be setup:
For every approval definition created in the Approve app, a corresponding Zendesk webhook is created with the same name. This webhook can be called in any trigger which starts the approval process. However, there is a shortcut you can use in the app to quickly create a trigger that you can then alter to suit your needs.
To access this shortcut head to the main Approval definitions screen and on the right side, click the vertical ellipsis and the Create trigger like this:
Then a popup notification will appear at the top right side of the screen which you can click to open your new trigger.
The new trigger is set in a way that it will almost certainly never fire on a ticket because it is looking for a test tag. As such, you can remove this condition and set the actual conditions you want the trigger to be checking for in order to initiate the approval. Eg. "Ticket" - "Is" - "Created", and the "Form" - "Is" - "XYZ.
Once you're happy with your conditions, under Actions, you will see the webhook for the approval definition being called. There is one URL parameter that allows you to set if the approval will instantly be sent off, or if the approval will be applied to the ticket in an unsent state which would allow the agent to vet the data submitted before manually sending the approval themselves.
The parameter is either "send" - "true", or "send" - "false" and looks like this:
Once you've created the trigger you can go about replicating the conditions in a ticket to test out your new approval flow.