Dynamic tags are short placeholders you insert into text fields or templates, such as [client_name] or [practice_name]. When a proposal or letter is generated, Socket replaces each tag with the real data from your practice settings or from the specific proposal, so the final document reads correctly for each client. One template fills in differently for each proposal or letter.
Types of dynamic tag
There are different types of dynamic tag, and each fills in from a different place:
Practice settings: tags like [practice_name] and [practice_principal] pull values you set in your account settings.
Proposal fields: tags such as [contact_first_name] or [start_date] populate as you complete the proposal. These only render once the relevant fields are filled.
Team member details: the name, first name, email, job title, and phone of the people on a proposal or letter: the client owner and manager, the proposal owner and creator, the document owner and creator, and the practice principal. The phone tags, such as [client_owner_phone], use the Phone each team member has on Manage Team, and fill in blank where that person has no phone set.
Letter contents: [service_schedules_list] prints the service schedules on an engagement letter as a bulleted list, in the order they appear on the letter, using each schedule's client-facing title where one is set. It's offered in letter templates, letter emails, and the introduction and document email templates in your practice settings. It is not offered in proposal introductions, service schedules, terms, or privacy templates. On a disengagement letter it can't be filled in automatically, so you're asked for it like any other missing tag.
Uploaded assets: tags like [client_owner_signature] insert your uploaded signature image where placed.
Inserting a tag
Open the editor where you want to insert a tag, for example a proposal intro, engagement letter template, or terms & conditions.
Place the cursor where the personalised information should appear.
Click the Insert tag menu to see the options available.
Select the tag you want, for example [practice_name] or [client_owner_signature]. The tag appears in the editor.
Save the template or document. When you send or generate it for a specific client, Socket replaces the tags with the correct values.
A tag inside a sentence works. A tag split across lines does not.
Filling in a tag on a proposal
A tag in an engagement letter or service schedule is a placeholder for information you supply. Where a tag has no default value set, you are asked for that information when you build the proposal, in the Review Dynamic Tags window, under a field labelled Replacement for followed by the tag's name. Each tag shows a tick once it's filled in and a warning while it's still empty, with a count of how many are left at the bottom.
Whatever you type there is what appears in the finished document in place of the tag. So a tag called client_records_provided_timeframe is asking for the timeframe you want that letter to state. Type only the words that go in the tag's place.
A How It Will Read box under the field shows the sentence from the letter with your answer in bold, so you can see it in context before you move on.
If what you type contains the tag itself, for example because you pasted the How It Will Read sentence into the field, the field turns red with "This still contains [tag]. Enter only the words that go in its place, not the sentence shown under How It Will Read." and nothing is saved. The same check applies to default values set on a template and to the fill step of a bulk send.
Setting default values on service schedule tags
If the same tags are asked for on the Customise step of every proposal, set a default value against them so they populate on their own.
Open the individual service schedule in your settings. A tags banner at the top lists the tags used in that schedule. For each one you can either:
Set a default value. The tag fills in with that value every time the schedule is used, and it isn't shown on the Customise step.
Set it to no default value. You are prompted to fill it in on the Customise step each time the schedule is used.
For example, a document turnaround time that is the same for every client gets a default. The period an agreement starts from changes with each proposal, so it is left without one.
Example
Template text:
Hi [contact_first_name],
Following the changes, the regular monthly fee in our invoices will change starting from [start_date] onwards.
Will display as:
Hi Richard,
Following the changes, the regular monthly fee in our invoices will change starting from May 2025 onwards.
Troubleshooting
If a tag appears unchanged in the preview, check that the corresponding field is filled for the proposal, or that the practice setting is populated.
If you are asked for the same tags on every proposal, set a default value against them in the service schedule, as described above.
If an image tag like [client_owner_signature] doesn't render, check the Client Owner has a signature uploaded in Settings.
If a letter email refuses a tag with "[tag] can't be filled in for this email. Remove it or choose a tag from the list.", the tag isn't one a letter can fill. In a letter email, whether that's the Email step of a bulk send, a letter's Customise step, or your practice document email settings, only the tags in the picker can be used, so pick one from there.
If a phone tag comes out blank, the team member it refers to has no Phone on Manage Team. Socket never substitutes someone else's number.
If the problem continues, take a screenshot of the template and the preview, then contact support.

![A document template in the editor with dynamic tags such as [client_name] and [practice_name] in the text](https://downloads.intercomcdn.com/i/o/fgsbcsfz/2789828434/519dd73cd53f3e82005da7388aa1/tags-1-template.png?expires=1794312000&signature=20ef473c1f7143db7e4f0be3408bae1f0f1dc91b9185fd795ac64764b603e102&req=dicvH8F8lYVcXfMW3nq%2BgXqaW8V3dqqMMwcMW1YZo%2BmTE42cQ3DXzb5w0VWh%0AEAMFgm8cHNbVsBv%2FsZoOI4GB%2Bcw%3D%0A)



