Skip to main content

Personalize a guide step's button link and image per viewer

Bind a guide step's button to a Link variable and an inline image to an Image variable, so each viewer gets their own URL and picture, with a default as fallback.

Updated Nov 11, 2026

Personalize a guide step's button link and image per viewer

Overview​

A guide step's call-to-action button can open a different link for each viewer, and a step's inline image can change per viewer — both driven by variables. Instead of hard-coding one URL on a button or one picture on a step, you bind the button to a Link variable and the image to an Image variable, and Walnut swaps in the per-viewer value when the demo plays.

Snapshot 📸​

  • Feature status: Generally available
  • Role access: Anyone who can edit the template
  • Location:
    • Button: Template editor → a guide step → click a button → link icon → External URL panel → Variable toggle
    • Image: Template editor → a guide step → click an image inside the step → Personalize button that appears next to the image

Bind the button's CTA to a Link variable so the URL it opens is picked per viewer — from a preset, a CRM, a URL parameter, or a lead form, the same way any other variable gets its value.

  1. Open the template in the editor and go to the guide step.
  2. Click the button, then click the link icon (Create Link) in the button's toolbar.
  3. In the Link Button panel, click the external URL area to open the External URL editor.
  4. At the top of the editor, switch the toggle from URL to Variable.
  5. Choose an existing Link variable from the dropdown, or click New Link variable to create one inline.
  6. Click Done.

The button now opens the Link variable's value. The variable's default value is used for any viewer who does not have a personalized value supplied — set it to a sensible fallback URL so the button always goes somewhere.

  • A Link variable's default must start with http:// or https://. If the field is blank or not a valid link, the picker shows "Needs a default link" and the variable cannot be chosen until you fix it.
  • The dropdown placeholder reads "Choose a Link variable", and if none exist yet you see "No Link variables yet" — use New Link variable in the same panel to create one.
  • To go back to a fixed URL, switch the toggle from Variable back to URL and type the address.

Personalize a step image per viewer​

An image inside a guide step (a logo, a screenshot, an illustration) can be bound to an Image variable, so each viewer sees a different image on the same step.

  1. Open the template in the editor and go to the guide step.
  2. Click the image inside the step. A Personalize button with a lightning icon appears next to it.
  3. Click Personalize and choose one of:
    • An existing Image variable from this template.
    • An image variable from the Library — Walnut forks it into this template automatically so the step can use it.
    • New Image Variable — creates an image variable from the picture you clicked. The current image becomes the variable's default value.
  4. The button's label changes from Personalize to the name of the bound variable, and the image now tracks that variable.

Click the image, open the Personalize menu, and choose Remove personalization. The step keeps showing the current image as a fixed picture again.

Good to know​

  • A ticked item in the menu is the variable the image is currently bound to.
  • If a library image variable cannot be forked into the demo, Walnut shows "Can't personalize this image" and nothing changes — try again.
  • You can bind several step images to the same Image variable, so they all swap together per viewer.

Where per-viewer values come from​

Both Link and Image variables take their per-viewer value from the same sources as other variables:

  • A preset picked when a demo is created.
  • A CRM field (for example Salesforce).
  • A URL parameter on the shared demo link.
  • A lead form filled in during the demo.

See Personalization variables overview for how to map a variable to each of these, and Create demo variables for the variable kinds and how to create them.


Was this helpful?