You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Added: email notifications and webhooks in your own format
Email notifications. An admin connects the email service you already
use, once, in Settings → Notifications (or helppuff email set):
Resend, Postmark, SendGrid and Brevo are filled in from the address to
send from and the key; any other service works with its own request.
HelpPuff writes each email (a plain-text body, and an HTML one with
everything a visitor wrote escaped) and sends it with {{email.to}}, {{email.subject}}, {{email.text}} and {{email.html}}. The key is
stored encrypted. Send me a test, pause and remove.
Everyone chooses their own emails, members too: new contact, hot lead
(with the AI's summary), callback request, a visitor wants a person, a live
chat nobody took, a chat given to me (only to that person), new job, new or
cancelled booking, and the AI budget used up (admins). Nothing is sent
until a person ticks it; someone removed from the team gets nothing more.
Settings → Notifications is there for everyone now, with live chat off too.
Webhooks in your own format. A webhook can send your own request
instead of the signed JSON, for a service that wants its own format
(Slack, a CRM, an SMS API): the method, headers (credentials stored
encrypted) and a body with {{event.type}} and {{data.…}}. Retries,
the delivery log and the X-HelpPuff-* signature work the same. In the
dashboard (Your own request), helppuff webhooks add … --header … --body …, helppuff webhooks set, and the API (format: "custom").
The API: GET, PUT and DELETE /notifications/email and POST /notifications/email/test (scopes webhooks:read/write).
One D1 migration (15), additive: four columns on webhooks and the email_service table. helppuff upgrade applies it.
Changed
A new HelpPuff logo: a "p" whose bowl is a speech bubble and whose
tail ends in a small puff. It is the favicon of the website, the
playground and the dashboard (where the unread count sits on it, in your
site's colour), and is in the README. Sources, a one-colour version,
lockups and icons are in logo/.
Dashboard: the logo sits beside your site's name at the top of the
sidebar and on the sign-in and setup pages. The person at the bottom of
the sidebar opens a menu: who is signed in and their role, Notifications,
the theme, help, and Sign out.
The website now gives the widget's size as about 35 KB gzipped, loaded
after the page. It used to say 6 KB (that is only the loader) and that
the rest loaded only when a visitor opened the chat, but it loads once
the page is idle.
New wiki page, Email notifications: an email for new or hot leads
through your own email service (Resend, Postmark or any send API), or for
any event through a webhook and n8n, Make or Zapier.
Fixed
Dashboard: Export CSV downloads the file without leaving the page; a
failed export shows an error instead of replacing the dashboard (the
website's demo exports its sample contacts too).
Dashboard: the New job and appointment dialogs close with Escape, take
focus when they open and give it back when they close.
Dashboard: copy buttons no longer fail silently where the browser refuses
the clipboard: the text is selected to copy by hand.
Dashboard: the two Learn more links in Settings → Bookings opened a
broken page; they open the wiki.
Dashboard: the two-way toggles (like List/Board) no longer submit
the form they sit in.