Standard Operating Procedure

Email Tool. How it works.

Maintained by Sally  ·  April 2026

Overview

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 typeHow to triggerWho receives it
IndividualOpen a lead's detail panel, click EmailThat lead only
SelectedTick checkboxes in the lead table, click Email selectedEach ticked lead individually
Bulk by tierClick Email leads, choose a tierAll consenting leads in that tier
Overview

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.

Emma Walford
Co-founder & CEO
emma@perigonpartners.co.uk
Nick Walford
Head of Strategy
nick@perigonpartners.co.uk
Andrew Hutchison
Head of Climate & Transition
andrew@perigonpartners.co.uk
Sally Weatherly
Growth & Operations Lead
sally@perigonpartners.co.uk
Reply-to routing The reply-to address is set to the selected sender's email. When a lead replies, it lands in the right inbox automatically. The sending address is always hello@perigonpartners.co.uk via Zapier.
Sending email

Sending an individual email

1
Open the lead's detail panel
Click any row in the lead database table. The panel slides in from the right.
2
Click Email in the panel header
The email modal opens. The greeting field is auto-filled with the lead's first name: Hi Emma,
3
Choose From and Signature, add subject and body
The signature preview updates live as you change sender. Write the body in plain text. Any https:// links are automatically made clickable in the sent email.
4
Click Send email
Fires to Zapier. Delivered within a few seconds. The send is logged in the Email Log tab automatically.
Sending email

Emailing selected leads

1
Tick the checkboxes next to the leads you want
Use the select-all checkbox in the header to tick the whole visible list, or tick individually.
2
Click Email selected in the selection bar
The bar appears at the top of the table as soon as you tick the first checkbox, showing how many are selected.
3
Fill in the modal and click Send emails
The dashboard loops through each selected lead and sends individually. The button shows live progress: Sending 2 of 5...
Use [name] in the greeting field to personalise per recipient. Hi [name], becomes Hi James, for James, Hi Sarah, for Sarah, and so on.
Sending email

Bulk email by tier

1
Click Email leads in the controls row
The bulk email modal opens.
2
Select a tier
Options are Hot, Warm, Cool/Cold, Current clients and Past clients. The modal shows how many consenting leads will receive the email before you send.
Consent filter: only leads who ticked the consent checkbox when they submitted a form are included. Manually added leads are included only if you ticked the consent box when adding them.
3
Fill in greeting, subject and body, then send
Same personalisation rules apply. Each lead receives an individual email. Progress shows as the sends fire.
Sending email

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 typeWhat 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
Note on [name] The token uses the first word of the lead's name field. If the lead's name is "James Hargreaves", [name] becomes "James". If the name field is blank, [name] is replaced with an empty string — so check your leads have names before a bulk send.
Log and tracking

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.

ColumnWhat it contains
sent_atISO timestamp of when the email was sent
from_personFull name of the sender (e.g. Sally Weatherly)
typeAlways "single" — all sends go through the single-send Zap
lead_nameRecipient's name from the lead database
lead_emailRecipient's email address
lead_companyRecipient's company
subjectEmail subject line
bodyPlain text body (greeting + copy, no HTML)
Filtering the log Use the search box to find emails by name, company or subject. Use the sender pills to filter by who sent. Use the period buttons to filter by this week or this month. Click any row to read the full email body.
Log and tracking

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.

1
Webhooks by Zapier — Catch Hook
Webhook URL: 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
2
Microsoft Outlook — Send Email
To: {{lead_email}}  ·  Reply-To: {{reply_to}}  ·  Subject: {{subject}}  ·  Body format: HTML  ·  Body: {{body_html}}
The body_html field contains the full branded email template including signature. Do not use the plain body field here.
3
Google Sheets — Create Row (Email Log)
Sheet: Email Log  ·  Tab: Sheet1
Map: sent_at → A, from_person → B, type → C, lead_name → D, lead_email → E, lead_company → F, subject → G, body → H
Use the plain body field, not body_html — the log stores readable text, not the full HTML template.
Log and tracking

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.

Multi-line body text in the sheet The body column often contains newlines (one paragraph per line). The dashboard's CSV parser handles this correctly using a full character-by-character parser. If rows appear to be splitting incorrectly, check that the Zapier mapping is using the plain body field (not body_html) and that the sheet column format is set to plain text.
Reference

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).

1
Lead clicks Unsubscribe in the email footer
They are taken to perigon-internal.netlify.app/unsubscribe?token=...
2
Confirmation page shown
The page asks them to confirm they want to be removed. If they close the tab, nothing happens.
3
They confirm — Zapier removes their record
Webhook fires to the unsubscribe Zap. The Zap looks up the token in the Leads sheet and deletes the row. The lead is permanently removed from the database.
Webhook URL: https://hooks.zapier.com/hooks/catch/20920948/up62gel/
If a lead does not have an unsubscribe token Leads added very early (before the token system was implemented) may have a blank unsubscribe_token field. Their unsubscribe link will still appear in the footer but will show an "invalid link" message if clicked. Remove them manually from the sheet if they request it.
Reference

Troubleshooting

SymptomLikely causeFix
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.