What this tool is
The email tool on the Growth page lets any team member send a branded, personalised email to leads directly from the dashboard. Every send uses the same single Zapier Zap, whether you are emailing one person or a hundred. Each recipient gets their own individual email with their own personalised greeting and their own unsubscribe link.
Every email sent is logged automatically in the Email Log tab on the Growth page, so there is always a record of what went out, to whom, and when.
| Send type | How to trigger | Who receives it |
|---|---|---|
| Individual | Open a lead's detail panel, click Email | That lead only |
| Selected | Tick checkboxes in the lead table, click Email selected | Each ticked lead individually |
| Bulk by tier | Click Email leads, choose a tier | All consenting leads in that tier |
Senders and signatures
Each modal has a From and Signature selector. Changing the sender swaps the signature block at the bottom of the email automatically — including the headshot, title, email address, LinkedIn link and B Corp badge.
hello@perigonpartners.co.uk via Zapier.
Sending an individual email
Hi Emma,https:// links are automatically made clickable in the sent email.Emailing selected leads
[name] in the greeting field to personalise per recipient. Hi [name], becomes Hi James, for James, Hi Sarah, for Sarah, and so on.Bulk email by tier
Greeting field and [name] personalisation
Every email modal has a separate Greeting field above the body. This renders as the opening line of the email, before the body copy. For individual emails, it auto-fills with the lead's first name. For group sends, you control it.
| What you type | What the lead sees |
|---|---|
Hi [name], | Hi James, (using their first name) |
Hi [name] — hope this finds you well, | Hi Sarah — hope this finds you well, |
Hi, | Hi, (no personalisation) |
| (leave blank) | No opening greeting — body starts immediately |
Email log tab
The Email Log tab on the Growth page shows every email sent from the dashboard. It reads from a dedicated Google Sheet updated by Zapier on every send.
| Column | What it contains |
|---|---|
sent_at | ISO timestamp of when the email was sent |
from_person | Full name of the sender (e.g. Sally Weatherly) |
type | Always "single" — all sends go through the single-send Zap |
lead_name | Recipient's name from the lead database |
lead_email | Recipient's email address |
lead_company | Recipient's company |
subject | Email subject line |
body | Plain text body (greeting + copy, no HTML) |
Zapier setup
All email sends — individual, selected and bulk — use a single Zapier Zap. The dashboard loops through recipients itself and fires the webhook once per person.
https://hooks.zapier.com/hooks/catch/20920948/upzm6ai/Receives:
lead_email, lead_name, from_person, reply_to, subject, body, body_html, unsubscribe_token, sent_at{{lead_email}} · Reply-To: {{reply_to}} · Subject: {{subject}} · Body format: HTML · Body: {{body_html}}body field here.Map:
sent_at → A, from_person → B, type → C, lead_name → D, lead_email → E, lead_company → F, subject → G, body → Hbody field, not body_html — the log stores readable text, not the full HTML template.Email Log Google Sheet
Sheet ID: 19Gqoo9VzfJgCEGVy3I6fnh1nuWeBYiUvH269UBhEexQ
The sheet must be shared as "Anyone with the link can view" for the dashboard to read it. The dashboard does not write directly to the sheet — Zapier handles all writes.
body field (not body_html) and that the sheet column format is set to plain text.
Unsubscribe flow
Every email includes an unsubscribe link in the footer. Each recipient's link is unique — it contains a token generated when they first entered the lead database (either via a form submission or manually added).
perigon-internal.netlify.app/unsubscribe?token=...https://hooks.zapier.com/hooks/catch/20920948/up62gel/Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
| Email sent but not received | Zapier Zap is paused | Check Zapier — open the single-send Zap and confirm it is On. Check the Zap history for errors. |
| Email log shows phantom rows (single words as entries) | Body field contains newlines; old CSV parser was splitting on them | Ensure growth.astro uses the full character-by-character CSV parser in loadEmailLog(). This was fixed April 2026. |
| [name] not replaced — recipient sees literal "[name]" | Lead's name field is blank in the database | Check the lead record has a name. Edit via the detail panel or directly in the Google Sheet. |
| Links in email body not clickable | URL was not prefixed with https:// | The auto-linker only activates on URLs starting with http:// or https://. Always include the full URL. |
| Send button shows "Sending 1 of 5" indefinitely | Zapier webhook URL is wrong or Zap is off | Check WEBHOOK_EMAIL_SINGLE in growth.astro matches the live Zap URL. Confirm Zap is on. |
| Email log tab shows "Sheet not connected" | Sheet ID missing or sheet not public | Confirm EMAIL_LOG_SHEET_ID in growth.astro is set. Confirm the Email Log sheet is shared as "Anyone with link can view". |
| Reply from lead arrives in wrong inbox | Reply-to not set in Zapier step | In the Outlook step in Zapier, confirm Reply-To is mapped to {{reply_to}} from the webhook payload. |