Variables let you build a story once and send a tailored copy to every prospect. You place a variable where a value should change, such as the prospect's first name, their company or a deal amount. Each personalized version then fills those spots with that recipient's details.
The same slide in the template, and in a version created for Acme Inc.
How it works
Add variables to your story. In the editor, click or drag a variable onto a slide. In text it appears as a purple pill such as
{{company}}.Create a personalized version. Click Share, open Personalized versions and click Create version. Enter the values for one recipient: their name, company, prices and so on.
Send the version link. Your reader sees their own details, never the variable names.
If a version leaves a variable empty, readers see the variable's fallback value instead. Without a fallback, that spot is left blank.
What you can personalize
You want to change… | Use |
Words and numbers in text, including table cells | A text variable, such as Input, Number, Select or AI |
A logo, photo or video | An Image or Video variable on the image, logo or video |
An embedded page | An Iframe variable on an Embedded element |
A whole table or chart | A Data variable |
A button's link or label | The button's Variables setting |
A brand color | A Color variable in the color picker |
A date, like "valid until two weeks from today" | A date variable with a format and an offset |
A calculated number, like a price after discount | A formula |
Variables come from four places:
Storydoc variables. More than 50 ready-made variables, grouped as Prospect, Company, Sender, Organization, Proposal / Deal, Product, AI Content, Media, Social Proof, Content, Time / Date, Date Operations and Design.
Profile variables. Details about the sender and their organization, such as name, role, calendar link and logo. They fill in automatically.
Custom variables. Your workspace's own variables. Create them with Add variable in the variable panel, or on the Variables page under Libraries.
Integrations. When HubSpot or Fathom is connected, their fields appear in their own tab.
Add a variable from the variable panel
In the editor, click the {x} icon in the right-hand toolbar (tooltip: Add a variable). The Personalize with variables panel opens.
The variable panel with the Prospect category open
Tabs.Storydoc holds the built-in variables and Custom holds your workspace's own. HubSpot and Fathom tabs appear when those integrations are connected.
Categories. Hover a category to see its variables. Recently used lists the last five you inserted. Search finds a variable by name across every category.
Variables. The icon shows the type: Aa for text, a picture for images, and so on. A crown means the variable needs a higher plan.
Add variable creates a new custom variable without leaving the editor. Manage variables opens the Variables page.
Click to insert
Select where the variable should go, then click the variable.
In text you are editing, it goes in at your cursor.
On a selected text element, it's added at the end of the text.
On a matching element, it attaches to that element. For example, an image variable attaches to a selected image, and a data variable to a selected table or chart.
On anything else, a new element of the right kind is added below your selection.
If nothing is selected, clicking does nothing. Select a spot on the slide first.
Drag and drop
Drag a variable from the panel onto the slide.
Over text or a table cell, a cursor shows exactly where the pill will land.
Over a matching element, such as an image variable over an image, the variable attaches to it.
Into a gap between elements, a new element is created there.
If a drop isn't allowed, no drop marker appears and nothing changes. For example, you can't drop an image variable on a chart.
An image linked to the Hero image variable
When you attach an image, logo or video variable, the image or video already on the slide stays as its fallback. A purple {x} badge shows which variable it's linked to.
Type {{ while you write
In any text element, including table cells, type two opening braces: {{. A search list opens.
Typing {{ opens a searchable list of variables
Keep typing to filter the list.
Use ↑ and ↓ to move, and Enter or Tab to insert.
Press Esc to cancel. This also removes the
{{you typed.
The list shows text variables only. Add Select, image, video and data variables from the variable panel.
Working with variable pills
In your story, a pill shows the variable name, for example
{{company}}. In a version, it shows that recipient's value.A pill acts like one character. Backspace or Delete removes the whole pill, and you can't place the cursor inside it.
Formatting applies to the whole pill. Bold, italic and text color work as usual.
Copying and pasting keeps pills. Pasting text that contains
{{key}}turns it into a pill.Click a pill once to select it. Click it again to open its settings: the format and offset for a date, or the value when you're editing a version.
Where each type of variable can go
Variable type | Attaches to | Dropped in a gap, creates |
Input, Number, Date, Select, Multiselect, AI, HubSpot, Fathom | Text and table cells | Text |
Image | Image, Logo | Image |
Video | Video | Video |
Iframe | Embedded | Embedded |
Data | Table, Chart | Table |
Color | Color pickers only | — |
Buttons and colors
Buttons. Select a button and open Variables in its toolbar. You can link a variable to each button's Link and Text.
Accept buttons and tab titles also have a Variables item, which adds the variable to the end of the label.
Colors. A button's color picker has a Variables section that lists your Color variables. Click one to use it, and click it again to remove it. Dividers have a Bind to variable button.
Show dates your way
Any date variable can be shown in the format you choose, and moved forward or back in time. Date variables include the Time / Date and Date Operations categories, dates such as Expiry date and Kick-off date, and custom variables of type Date.
Insert a date variable into your text.
Click the date pill once to select it, then click it again.
Choose a Format.
Under Calculation, enter a number and pick days, months or years. Use a negative number to go back in time.
Click Save changes.
An expiry date shown as MMM D, YYYY, 14 days after the chosen date
The pill now shows your settings, for example {{offer_expiry_date+14d|MMM D, YYYY}}. In a version it shows the finished date, such as Oct 7, 2026.
Format | Example |
YYYY-MM-DD (default) | 2026-10-07 |
DD-MM-YYYY | 07-10-2026 |
MM-DD-YYYY | 10-07-2026 |
DD/MM/YYYY | 07/10/2026 |
MM/DD/YYYY | 10/07/2026 |
MMMM D, YYYY | October 7, 2026 |
MMM D, YYYY | Oct 7, 2026 |
D MMM YYYY | 7 Oct 2026 |
Today, Current date, Current month and Current year always use today's date, so senders don't fill them in.
Every other date is picked once by the sender when they create a version, even if you use it several times with different offsets.
Calculate values with formulas
A formula calculates a number from other variables, such as a price after discount. It's worked out separately for every version.
Click in a text element where the result should appear.
Click Formula in the text toolbar. On smaller screens it's in the ⋮ overflow menu.
Build the formula. Click a variable under Variables used in this story, or type
{{to pick one. Use +, −, × and ÷ between variables and numbers.Click Add formula.
Building Amount − Discount in the formula editor
The result appears as a green calculation pill; hover it to see the formula. In a version it shows the calculated number.
Use variables that are already in the story. Number and Input variables work, as do built-in, HubSpot and Fathom values.
× and ÷ are worked out before + and −. Parentheses aren't supported, and a formula can't use another formula.
Currency signs, thousands separators and units are ignored, so $1,200 counts as 1200. Use a dot for decimals; 12,5 isn't understood.
If a value is missing, the pill keeps showing calculation. Dividing by zero gives an empty result.
To edit a formula, select its pill and click Formula again. Your last ten formulas are listed under Recently created.
Formulas belong to the story they're created in. Senders never fill them in.
Plans
Feature | Starter | Pro | Team |
Basic Storydoc variables: first and last name, email, job title, company, sender name, role and email, organization name, welcome message, current date, today | ✓ | ✓ | ✓ |
All other Storydoc variables: prospect photo, media, deal details, AI content, social proof and more | ✓ | ✓ | |
Custom variables and profile custom fields | ✓ | ✓ | |
HubSpot variables | ✓ | ✓ | |
Fathom variables | ✓ | ✓ | ✓ |
Formulas, Date Operations and the brand Primary color variable | ✓ | ||
Repeatable content and optional content | ✓ |
Variables that need a higher plan show a crown in the variable panel. If your story uses one, you'll see Upgrade to publish when you publish or create a version. Upgrade, or remove those variables from the story.
FAQ
Why does my slide show {{company}} instead of a company name? You're looking at the story itself. Pills show variable names there and real values in a version.
I clicked a variable and nothing happened. Select a spot on the slide first: a text element, an image or a gap between elements.
Why can't I drop this variable here? Each type only fits certain elements (see Where each type of variable can go above). When no drop marker appears, that spot doesn't accept the variable.
Why can't I add variables while editing a version? A version fills in the story's variables; it doesn't add new ones. Add variables to the story, then fill them in the version.
Can I use the same variable more than once? Yes. Every place shows the same value. Dates can have a different format and offset in each place.






