Accelerated Mobile Pages
Testimonial Widgets on AMP Pages
Valid AMP HTML forbids author script tags, apart from the AMP runtime and its own components. The StoryProof embed is a div plus an async script, so on a true AMP page it never runs: the validator flags it, or your AMP plugin strips it. That leaves three honest routes: keep the widget on the canonical page, link AMP readers to your Wall of Love, or type one approved quote into the AMP markup.
- Confirm whether the page really is AMP
- Keep the widget on the canonical version
- Give AMP readers a link or a typed quote
The problem, solved
AMP and testimonials: the four situations
Each one starts from the same rule: valid AMP pages do not run your own scripts.
Situation 1 of 5
The AMP version drops our widget
The AMP HTML specification prohibits script tags except JSON types, the AMP runtime and extension scripts. An AMP plugin removes anything else, or the page fails validation.
How StoryProof solves it
Leave the two line StoryProof embed on the canonical, non AMP page that the AMP version links back to. Visitors who reach the full page see the widget there.
Situation 2 of 5
Most phone readers land on AMP
If search or a news surface sends people to the AMP URL, they may never see the canonical page with the widget.
How StoryProof solves it
Add an ordinary link or button on the AMP page to your Wall of Love. It is a hosted page of your approved testimonials with its own address, and a plain anchor is valid AMP.
Situation 3 of 5
We want a quote on the AMP page itself
A link asks for a tap. Sometimes one line of proof beside the content does more.
How StoryProof solves it
Approve the testimonial in StoryProof first, then type its exact words into the AMP template as text. It will not update itself, so pick a quote that will age well.
Situation 4 of 5
Could amp-iframe load the widget?
amp-iframe content must be served over HTTPS from a different origin than the AMP page, sit below the first 600 pixels or 75% of the viewport, and resize only through AMP’s embed-size rules.
How StoryProof solves it
A frame needs an ordinary page to load, where the StoryProof div and script work as usual. StoryProof has not tested its widget inside amp-iframe, so treat this as an experiment to validate, not a supported route.
Situation 5 of 5
Our best proof is video
A typed quote cannot carry a customer’s face or voice, and AMP will not run the player script.
How StoryProof solves it
Send AMP readers to the Wall of Love, where video, audio notes and written testimonials play together, and choose which approved ones appear.
Checklist
Keep proof on an AMP site without breaking validation
Work through it once per template that has an AMP version. Tick each item as you confirm it.
Ticks stay in your browser for this visit. Nothing is sent anywhere.
What each AMP route gives up
In StoryProof
Set it up
- 1
Confirm the canonical pairing
Check the rel="canonical" link on the AMP page and the rel="amphtml" link on the full page, so you know which template gets which change.
- 2
Keep the widget on the full page
Place the StoryProof embed in a block or template that only the canonical page uses.
- 3
Add the Wall of Love link to the AMP template
Copy your Wall of Love address from StoryProof and add it as a normal link in the AMP template, near the point where the widget appears on the full page.
- 4
Validate and publish
Run the AMP validator on one article, fix anything flagged, then publish and check both versions on a phone.
What happens next: Review the typed quote, if you added one, whenever you refresh the widget on the canonical page, so the two do not drift apart.
Before you start
What this page does not offer
No AMP component from StoryProof
StoryProof does not publish an amp extension or an AMP version of its widget. The embed is a div and a script, which AMP does not run.
amp-iframe is untested
Nothing here claims the widget behaves inside amp-iframe. If you try it, validate the AMP page and check the frame on several phones.
amp-script is not a shortcut
amp.dev describes amp-script as running author code in a web worker with a subset of DOM APIs and a size cap. A third party embed script is not written for that environment.
Typed quotes are manual
Text you type into the AMP template stays as typed until someone edits it.
FAQ
Questions people ask
Short answers to what usually comes up next.
Why does the widget appear on my normal page but not the AMP one?
The AMP format only runs the AMP runtime and its own extension scripts. The StoryProof script is a third party script, so an AMP plugin removes it or the validator rejects the page.
Can I just ignore the AMP validation error?
Then the page is no longer valid AMP, which defeats the reason for having that version. If the widget matters more on a template, ask whether that template needs an AMP version at all.
Is a link to the Wall of Love allowed on AMP?
Yes. A normal anchor to an HTTPS page is ordinary AMP HTML. The Wall of Love opens as a regular page outside AMP.
Some review vendors have AMP components. Does StoryProof?
No. A few vendors publish their own amp extension; StoryProof does not, which is why this page sticks to the link and typed quote routes.
Still have a question? Ask the StoryProof team or book a demo.
Proof that works on every version of your page
Embed the widget on full pages and share the Wall of Love everywhere else.
Sources
- AMP HTML Specification, amp.dev. Checked 2026-11-14.
- Use custom JavaScript in AMP pages, amp.dev. Checked 2026-11-14.
- amp-iframe, amp.dev. Checked 2026-11-14.
- Make your page discoverable, amp.dev. Checked 2026-11-14.
Last updated 2026-11-14.