Sales talk is two forms, not twenty check-ins
What a sales desk repeats is not the phrase “just checking in.”
It is structure: greeting, who you are writing to, where the last call stuck, what you want this time, signature. Twenty follow-ups that differ only by company name will rot the library by the next quarter. Nobody wants to edit the first sentence.
Keep one follow-up and one objection. Change the greeting once. Both templates change. That is a talk track, not a folder of almost-duplicates.
A FillIn window appears before expansion. ⌘/Ctrl+Enter inserts.
Build only these two tonight
Do not start with a “full sales process.” Split the follow-up and the objection you already typed this week.
- Install and grant accessibility. Expansion happens in whatever is focused. You do not open the main window first, and you do not sign in first. See Getting started.
- Make a sales group with the prefix
sl-. Abbreviations look likesl-followandsl-obj, notokorthanks. See Groups. - Put the shared greeting and signature in small snippets. Nest
%s:sl-hello%and%s:sl-sign%in the bodies. The syntax lives in FillIn. - Go back to mail or a browser field. Type the abbreviation and press Tab (the default trigger). Fill the popup and confirm with
⌘/Ctrl+Enter.
Follow-up keeps the bones. What changes is filled on expand:
%s:sl-hello%
%filltext&name=name%, last time we talked about %filltext&name=last topic%.
%fillarea&name=what changed%
Next: %fillmenu&name=next&opt=book a demo&opt=send a brief&opt=talk next week%
%fillcheck&name=calendar line&default=I listed a few times below.%
%s:sl-sign%Objection is still one snippet. Do not clone it into “budget,” “timing,” and “we already have a tool”:
%s:sl-hello%
On “%fillmenu&name=objection&opt=budget&opt=timing&opt=existing tool%”:
%fillarea&name=reply%
%s:sl-sign%Change %s:sl-hello% once. Follow-up and objection both pick up the new line. Do not leave “edit here” in the body.
Which field
| What changes | Use |
|---|---|
| Name, company, last topic | Single line %filltext% |
| Progress, objection reply | Multiline %fillarea% |
| Next step, objection type | Menu %fillmenu% with &opt= |
| A calendar sentence that is only sometimes present | Optional %fillcheck% |
| Mutually exclusive paragraphs | Conditional %fillswitch% |
The name is what you type in the popup. CodeExpander has no Chrome or Edge extension, and it does not scrape fields off a Salesforce or HubSpot page. Records stay in the CRM. The text field only expands a sentence you already approved. System-wide expand is System-wide vs extensions.
This is the product loop, said in product language: the focused app receives an abbreviation, you press the trigger, this machine replaces it. There is no “open the CRM helper first.”
Where it may fire
If the same follow-up must work in mail, a browser form, and chat, leave the sales group global. If it wrecks a terminal or an editor, turn on ExpandIn (Pro) for that group and keep only the mail client and the browser.
Sharing one pack of follow-ups with coworkers is organization shared groups, not dropping “final_v12” into the team channel. See Team copy.
Do not
- Do not publish close rates, quota attainment, or average deal size. Local stats do not compute those numbers, and this site will not invent them.
- Do not clone twenty snippets per account. The company name is FillIn, not the snippet title.
- Do not write a tutorial that pulls fields from a CRM page. That extension does not exist here.
- Do not use
followorpriceas abbreviations. They fire inside English. See Abbreviation hygiene.
A library that only stores finished talk tracks stays small enough to trust. A library that stores every account as its own letter becomes a second CRM, and you already have one of those.
Next: Support templates are a form.