HubSpot landing pages
Add customer testimonials to a HubSpot landing page next to the form
HubSpot lets any plan add code to a page through its Footer HTML setting. Put the StoryProof script there, place the widget’s div in the module beside your form, and the proof sits exactly where visitors decide to convert.
“We put the review wall under our pricing table and prospects quote the reviews back to us on calls.”
“StoryProof made collecting and showing real customer video reviews effortless for us.”
“The widget looks native on our site. Nobody can tell it is embedded.”
“Collecting video reviews used to be the hardest part. Now it takes one link.”
“Set up in ten minutes, and support answered the one question I had straight away.”
Code generator
The two pieces for a HubSpot page
The div goes into the page content where the widget should appear. The script goes into that page’s Footer HTML, which HubSpot loads after the content.
Part 1 · In the page content, beside the form
Content editor › rich text module › Advanced › Source code
<div data-storyproof-widget="YOUR_WIDGET_ID"></div>Part 2 · The page’s Footer HTML
Content editor › Settings › Advanced › Footer HTML
<script src="https://app.storyproof.io/embed.js" async></script>Update or publish the page, then open the live URL. Check the div survived by reopening the module’s source code.
Assembled locally in your browser.
The problem, solved
What gets in the way of proof beside a HubSpot form, and the fix
- Problem 1
The landing page template has no testimonial module
Demand-gen ends up typing quotes into a rich text module, and each campaign page becomes another copy to keep correct.
How StoryProof solves it
A StoryProof widget is one div plus the async embed.js script, which is small enough to fit the module and Footer HTML split HubSpot already gives you.
- Problem 2
Every campaign needs proof that fits its offer
A webinar sign-up and a demo request page convince different people, and one generic quote set serves neither well.
How StoryProof solves it
Tag testimonials by campaign or buyer, then give each landing page its own widget filled with the set you picked for that offer.
- Problem 3
Live campaign pages fall behind the newest stories
Once a page is published and running ads, nobody wants to reopen it to paste in a fresh quote.
How StoryProof solves it
The widget loads from StoryProof each time the page opens, so a testimonial you approve and add appears on the live HubSpot page without republishing it.
- Problem 4
Two widgets on one page, two scripts?
A long landing page might want a featured story by the form and a strip further down, and duplicate scripts are the kind of thing an audit flags.
How StoryProof solves it
Load embed.js once in the page’s Footer HTML and it fills every StoryProof div on that page.
In StoryProof
Install it in HubSpot
Step 1 of 4
Choose testimonials that match the offer
For a demo request page, pick stories about the decision to buy. Tag them in StoryProof so the next campaign page can reuse the set, then add them to a widget.
Step 2 of 4
Place the div in the content
Edit the landing page, open the rich text module next to the form, switch to source code and paste the div line where the widget should appear.
Step 3 of 4
Add the script to Footer HTML
Open Settings, then Advanced, and paste the script line into Footer HTML. Footer HTML is not available on blog posts, so use a page.
Step 4 of 4
Publish and test the form beside it
Open the live page, check the widget renders, and submit a test entry to confirm the form still works.
Placement around a HubSpot form
Before you start
HubSpot caveats
Rich text can clean up code
Editors that tidy HTML on paste may drop the data attribute. Paste in source code view and reopen it after saving to confirm the div is intact.
Permissions decide who can install
Page-level code needs Edit and Publish permission; domain-wide code needs Website settings permission.
No HubSpot app
StoryProof is not a HubSpot Marketplace app. It installs with embed code, like any third-party snippet.
Cloned pages bring the widget along
Cloning a landing page usually carries its content and code settings with it. Check that the clone shows testimonials chosen for its own offer, not the original campaign’s.
FAQ
Questions people ask
Short answers to what usually comes up next.
Can I put the whole embed code in a rich text module?
You can try, but splitting it is more reliable: the div in content, the script in Footer HTML, where HubSpot expects custom scripts.
Does it work on HubSpot website pages as well as landing pages?
Yes. Both have the Footer HTML setting. Blog posts do not.
Can each campaign page show different testimonials?
Yes. Give each page its own widget with the testimonials picked for that offer. Tagging stories by campaign or audience makes the right set quick to find.
Where does the widget end up on a phone?
Side-by-side columns usually stack on small screens, so a widget to the right of the form often lands below it. Check the mobile preview and keep the form first.
Still have a question? Ask the StoryProof team or book a demo.
Put proof beside your next form
Collect testimonials, approve the ones that answer your buyers, and add them to a HubSpot page today.
Sources
- Use code snippets with HubSpot content, HubSpot Knowledge Base. Checked 2026-11-04.
Last updated 2026-11-04.