How it works
Import, step by step
Forty sources, named
Google, Trustpilot, G2, Capterra, Yelp, the app stores, the marketplaces, the trade directories, a Senja or Testimonial.to export — and "Text message", "Email" and "In person", which is where a great many of the best ones actually are.
Text, video links and screenshots
A written review, a link to a video that lives on its own platform, or a photograph of the message as it arrived. All three keep the source beside them.
One at a time or a spreadsheet at once
Paste one, or upload a CSV. Columns are read by their names, you are shown which was read as what before anything is saved, and a long file is read to its last row.
Every Google review at once, from Google's own export
Google Takeout gives the owner of a Business Profile an archive of it, reviews included. Upload that archive and it is read in your browser: only the reviews are taken, each with its stars and the day it was written, and Google's machine translations are left out so every review keeps the words its writer used. Nothing is fetched from Google, and no connection to your account is asked for.
The source is shown for the rest of its life
An imported review says where it came from on every page it appears on, with a link to the original where there is one, so a reader can go and check it.
Safe by design
The rule that makes it safe to have
Clear boundaries
What it will not do
Every capability page ends with this list. It is the part that says what you are actually buying.
- It will not fetch reviews from a platform on your behalf.
- It will not claim a consent that nobody gave — an imported review carries a note saying no permission was collected here.
- It will not let an imported review pass as one written to you.
Where it lives in the code: lib/sources.ts · app/api/import/route.ts · lib/csv.ts · lib/takeout.ts
Questions
Asked about this
From Help, where every answer is written from the product as it runs.
What about a review I imported from Google?
It carries a note saying the owner copied it from a public review and confirmed they may republish it — and that no permission was collected here, because none was. It never pretends the person was asked.
Where is the consent kept?
Beside the testimonial: the exact sentence your customer agreed to, the scopes they checked off, and the date. All of it comes out in your CSV export, which is the form you would want it in if anybody ever asked you to show it.
Which of the three permissions does Hazelsong actually enforce?
Two of the three, and the difference is worth knowing before you rely on it. Your website and your social media are places Hazelsong itself publishes, so those answers are enforced on every request: a testimonial that did not allow your website is not served by a widget, a wall or the API, on any plan, however many times it is approved, and the same goes for a social image or a clip. Advertising is not a channel Hazelsong has — ads and printed material are made by you — so that answer is recorded and handed to you rather than enforced. The collection form tells your customer exactly that, in those words, before they check anything.
They checked off website but not ads. What happens if I use it in an ad?
Nothing here stops you, because nothing here places ads. What the product does is keep the answer where you can find it: the consent sentence on the card names only the places that person allowed, and your CSV export lists what they checked off — which is the form you would want it in if they, or anybody else, ever asked what they had agreed to. The decision, and the responsibility for it, are yours. If you want a permission that holds on its own without you having to remember it, that is the website and social media permissions.
This is running now
Open a project and use it. Nothing on this page is a roadmap.