Add custom variables to documents
One thing you want to avoid when using templates is to forget to fill a part that is generic. For instance, "The project will be delivered in X days". Forgetting to change "X" for the right number (e.g. 5) is not really professional.
To avoid that, I suggest we can create variables like this:
The project will be delivered in [esign var="days"] days.
When you detect a short code, you would add a textbox (via post_meta) and simply replace the value I put in the textbox into the content directly. That way, I know that when I filled all the textboxes, I did not forget any generic expression in my contract.