Skip to content
Hazelsong is still being built.Skip to content
Hazelsong

Collect

Asking, and asking again exactly once

Paste a list of customers. Everybody gets their own message and their own link. Three days later, whoever has not answered can be reminded — one time, and never anybody who already wrote.

PlanEvery plan, including free. Two hundred at a time, and a schedule may hold as many requests waiting as the plan sends emails in a month. Asking after a purchase arrives from a connected store or through the API, on Starter and Pro. The gap between requests, star links, the video with the request and what the mail provider reports work on every plan.

How it works

Asking, step by step

  1. Up to two hundred in one paste

    Names and addresses in almost any shape you have them: "Ana Ribeiro <ana@…>", a comma between them, a tab, or just the address. An address already on your list is skipped rather than asked twice.

  2. On a date, and at a pace

    A pasted list can wait for a day you choose, up to sixty days ahead, and go out at most 10, 25, 50, 100 or 200 a day, so two hundred people are not all written to the same morning. A later day's requests go at 07:00 UTC; a list that starts today sends its first day at once. Each one is checked again on its day: anybody who said "Not now" in the meantime, whose address bounced, or who was asked by any route inside your gap is left out, and the invitation says why. The ask is counted toward your gap when it is sent, not when it is scheduled. Your list shows how many are waiting and the next day one goes, with Cancel the rest.

  3. Everybody gets their own link

    Not one link sent to two hundred people. Each person's answer is tied to the invitation it came from, so you can see who has replied and who has not.

  4. One reminder, three days later

    Not a sequence, not a drip, not five touches. One. Somebody who did not want to write you a testimonial the first time is not persuaded by the fourth message.

  5. Or send it yourself

    If you would rather the message came from your own mailbox, the words and the link are handed to you to paste. That path is always available and costs nothing.

  6. A way to say no in every request

    Each request and its reminder carry a "Not now" link. One tap, and that person is not asked by you again — not from a list, not after a later purchase, not through the API. Only a fingerprint of the address is kept, and only they can take it back, by writing.

  7. Or at the moment it happens, on your own site

    Instead of an email later, your own code can open the same form in a dialog on your site right after a customer finishes something, with their name and address already filled in. It asks the same browser at most once in the cooldown you choose and never again after they sent one. The page about collection forms says how.

  8. And once more, for a video

    Somebody who wrote through your form can be asked, once, whether they would say it in a short video. The request has its own "Not now" link, is never sent to anybody who said not now, and uses the same email allowance as every other request. The video testimonials page says how it works.

  9. And one more question, when it was general

    When the reading found what somebody wrote general, they can be asked one question about it, once. The message carries the question, a link that works once for 30 days, and its own "Not now". Their answer is kept apart from what they wrote and shown only if you add it. The approving page says how it works.

  10. After a purchase, by your rules

    Your store sends each order — Stripe, Shopify, WooCommerce or Lemon Squeezy straight from its own webhook with no code, or your server or a Zap through the API — and one request goes out after the delay you choose, with a smallest order worth asking about, a gap before asking the same person again, and a monthly goal that stops the requests once enough people have written.

  11. The same person, at most once every 90 days

    Every request counts toward one rule, whichever way it was made: the dashboard, a pasted list, the API, an assistant or a purchase. Somebody asked inside the gap is left out, and you are told the date they were last asked and when they can be asked again. Choose 30, 60, 90 or 180 days, or turn it off. The single reminder belongs to the request it follows, and the request to share, the request for a video version and one more question each go once to somebody who already wrote, so the gap does not hold them back; after a purchase, the stricter of that gap and this one applies.

  12. Undelivered, or marked as spam

    When your mail provider reports that a request bounced for good, because the address does not exist or the server refuses it, or that the person marked it as spam, the invitation says "Undelivered" or "Marked as spam" and that address is not written to again: no request, no reminder, no thank-you, no request to share. This reads only what the provider reports about delivery. There is no pixel and no tracking link, so nobody's opens or clicks are known. You can take an undeliverable address off the list once it is fixed; a complaint of spam stays.

  13. One Gmail inbox, however it is typed

    "rita.alencar@gmail.com", "ritaalencar+shop@gmail.com" and "RitaAlencar@googlemail.com" reach one inbox, so they are one person for "Not now", for the gap and for duplicates in a pasted list. Addresses on other domains are compared as typed, apart from capital letters, because mail servers do not all treat a dot or a plus sign the same way. Mail always goes to the address exactly as it was given.

  14. Star links, if you want them

    Switch on star links and every request, and its one reminder, carries five more addresses under the link: 1 star to 5 stars. Each opens the same collection page, with the same box, the same permission and the same promise, with that star already chosen; the person can choose another star or leave the rating out, and nothing is saved until they send. No star leads anywhere else. Off unless you switch it on, for each project.

  15. A short video of yours with every request

    Record one message once, from your camera in the dashboard, and every request and its one reminder carry a link to a page that plays it: your business's name, the recording, and the person's own link to your form. The request stays the same plain-text email with one more link; the page says the recording is the same for everybody you ask, and asks for nothing until play is pressed. Each play is drawn from your month of video and pictures shown, like a video on your wall, so a short one is best; the owner or an administrator records, replaces or removes it, and removing it makes the links already sent open nothing.

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 send a second reminder, on any plan, for any reason.
  • It will not remind somebody who has answered.
  • It will not put your customers in a line with each other — no group sends, no visible lists of other people's addresses.
  • It will not ask again somebody who said not now, by any route, and it will not hand you their link to send by hand either.
  • It will not ask somebody who wrote for a video more than once, and it will not ask for one on its own.
  • It will not ask somebody one more question more than once, or send a question that leads or asks for a figure.
  • It will not enter your Stripe, Shopify or payment account to find your buyers. Orders come from you, or from your store's own webhook, which you set up.
  • It will not ask the same person twice inside the gap you chose, by any route, and it will not hand you their link to send by hand instead.
  • It will not count opens or clicks, or put a pixel or a tracking link in a request. It reads only whether the mail provider could deliver it.
  • It will not let anybody take a complaint of spam back off the list, including you.
  • It will not treat two addresses on other domains as one person because of a dot or a plus sign.
  • It will not turn a scheduled list into a sequence. A date and a pace decide when the one request goes; nobody gets a second message because a list was scheduled.
  • It will not send a scheduled request late. One that this month's emails cannot pay for waits a day at a time, and if it still cannot go thirty days after its own day it is not sent, and the invitation says so.
  • It will not send a person anywhere different for the star they tap: every star link opens the same page, and only the star already chosen differs.
  • It will not save a rating from a star link alone. The star is preselected on the page, the person can change it or leave it out, and only what they send is kept.
  • It will not preselect a star from a link somebody built by hand: only beside the person's own request link, only while star links are on, never on a kiosk screen or in the embedded form.
  • It will not play your video to anybody who holds only your project's address: the page and the file open with the key the request's link carries, and without it they are the same 404 as a project with no recording.
  • It will not put the video, or anything that loads, inside the email: the request stays plain text, and the page asks for nothing until play is pressed.
  • It will not show, read or keep anything about the person on the video's page: no name, no testimonial, no rating, no address. It is the same recording for everybody you ask, and the page says so.
  • It will not record your video for you, generate a face or a voice, or put a name in a mouth that never said it.

Where it lives in the code: lib/request-video-rules.ts · lib/request-video-key.ts · app/api/request-video/route.ts · app/r/[slug]/message/page.tsx · lib/star-links.ts · app/api/star-links/route.ts · lib/invites.ts · lib/bulk-schedule.ts · lib/bulk-asks.ts · lib/do-not-ask.ts · lib/asking.ts · lib/video-ask.ts · lib/follow-up.ts · lib/ask-rules.ts · lib/address-key.ts · lib/mail-events.ts · lib/orders.ts · lib/order-intake.ts · app/api/invites/bulk/route.ts · app/api/invites/remind/route.ts · app/api/resend/webhook/route.ts · app/api/v1/orders/route.ts · app/api/in/[id]/route.ts · app/api/decline/route.ts

Questions

Asked about this

From Help, where every answer is written from the product as it runs.

How do I log in? I never set a password.

There is no password. Your dashboard link is the way in — bookmark it. A new project starts with private hosted pages. Confirm the email for that project, then choose Publish public pages under Walls and widgets. Email confirmation replaces the original dashboard link; keep the new one. That is deliberate: nothing to forget, nothing to phish, and nothing of yours to leak in somebody else's breach. If you lose the link, the page at /access sends a one-time login link to the address on the account, and to no other address; it works once, for fifteen minutes, and opens every dashboard that address can reach.

What is the very first thing to do?

Send your form link to three customers who already like you. Not a list of two hundred — three. You will learn more from the first three answers about which of your questions are working than from any amount of planning.

How long does it take my customer?

About a minute in writing. A video takes as long as they talk. They do not make an account, install anything, or download anything.

Can I change the questions?

Yes, and you should. The defaults are a starting point; the questions worth asking in your trade are on the page for your trade.

More on starting

This is running now

Open a project and use it. Nothing on this page is a roadmap.