Tool path: /tools/employer-caregiving-cost/
Audience: employer (HR / People Ops / Benefits leader / Owner-Partner / C-suite / Broker)
Asset ID: employer-cost-methodology
Asset category: employer
Form type: Native HTML → lead-capture Edge Function (Supabase)
Edge Function: lead-capture (POST to https://api.averyn.app/functions/v1/lead-capture)
Database table: marketing.leads (asset = employer-cost-methodology)
Email sending: Resend via pulse.averyncare.com
| Field | HTML id | Type | Required | Stored in | Notes |
|---|---|---|---|---|---|
| First name | gate-name |
text | Yes | leads.name |
Greeting in welcome + drip emails |
| Work email | gate-email |
Yes | leads.email |
Lead contact + dedup key | |
| Role | gate-role |
select (optional) | No | leads.meta.role |
One of owner | hr | csuite | broker | other. Powers role-tinted drip openers and the role-tailored outreach snippet in the team-notification email. |
| LinkedIn profile URL | gate-linkedin |
url (optional) | No | leads.meta.linkedin_url |
Surfaced as a one-click button in the team-notification email for manual LinkedIn outreach. |
Hidden / derived meta fields (computed by the page JS pre-submit):
| Field | Notes |
|---|---|
org_size_band |
Derived from the calculator's employee-count input (e.g., <100, 100-500, 500-2000, 2000+) |
industry |
The industry select on the calculator (sets caregiver-prevalence + turnover-cost coefficients) |
avg_salary_band |
Derived from the salary input |
All meta is bundled into a single meta JSON string and POSTed as meta=<JSON>. The lead-capture Edge Function parses it and stores it in leads.meta (jsonb).
On submission:
meta JSON string.name, email, asset=employer-cost-methodology, source=tool, meta, redirect=about:blank, plus all available utm_* params.lead-capture Edge Function upserts the lead in marketing.leads, sends the welcome email + the (employer-enriched) team-notification email via Resend.post-gate-booking).plausible('lead_magnet_submit', { asset: 'employer-cost-methodology', source: 'tool' }) and a dataLayer.push for GTM, both tagged with the captured role.| Setting | Value |
|---|---|
| To | hello@averyncare.com |
| From | notifications@notifications.averyncare.com |
| Subject | [EMPLOYER] Lead: Cost-to-Business Methodology — {name} |
| Body | Standard lead summary + employer enrichment block: role tag, LinkedIn button, calculator-inputs dump, and a role-tailored copy/paste outreach snippet |
The enrichment block is rendered by buildTeamNotification in _shared/marketingEmails.ts when asset.category === 'employer'. See EMPLOYER_OUTREACH_SNIPPETS in that file for the role-tailored snippet copy.
| Setting | Value |
|---|---|
| To | {email} |
| From | hello@pulse.averyncare.com |
| Reply-to | hello@averyncare.com |
| Subject | Your Cost-to-Business Methodology |
Welcome content delivers a link to the calculator's #methodology anchor plus three companion links (Three ways to offer Averyn, Gap checklist, Workforce-cost calc).
All drips defined in marketingEmails.ts and sent by the drip-send cron at ~9 AM ET daily.
| Stage | Day | Subject | Strategy | Key links |
|---|---|---|---|---|
| 0 (welcome) | 0 | Your Cost-to-Business Methodology | Deliver methodology + 3 companion resources | #methodology, gap checklist, workforce calc |
| 1 | 3 | Did the cost-to-business number land? | Role-tinted check-in + workforce-cost companion CTA | /tools/workforce-caregiving-cost/ |
| 2 | 10 | Three ways to offer Averyn — and the sharpest math | Structural comparison with HCE emphasis | /employers/insights/types-of-caregiver-employee-benefits/ |
| 3 | 21 | 15 questions: how caregiver-friendly is your stack? | Gap checklist (different angle on the same problem) | /employers/insights/caregiver-benefits-gap/ |
| 4 | 35 | Want to talk it through? 30 minutes is usually enough | 30-min conversation booking | Cal.com link |
| 5 | 56 | Still on your radar? | Soft check-in before shifting to monthly nurture | Calculator + Cal.com |
Role-tinted openers (Stages 1–5) read meta.role and prepend a one-sentence opener tuned to the role. See employerRoleOpener() in marketingEmails.ts.
nurture-employer (automatic)After Stage 5 (Day ~57), drip-send auto-enrolls the lead into the nurture-employer pool with drip_stage = 0. The pool runs 13 calendar-aware topics on a 30-day cadence, starting 30 days after graduation. Topics are aligned to the benefits planning cycle (budget season → OE ramp → OE → new-year → mid-year).
Employer leads are mid-funnel, decision-aware, evaluating. They self-selected by running a cost calculator AND opted in for the methodology. They are not yet ready to buy but they are open to a conversation.
hello@ with role tag, LinkedIn button, and role-tailored outreach snippet ready to copy/pasteowner or csuite AND a LinkedIn URL is present → priority outreach. Send a LinkedIn note (the snippet is pre-tailored to the role; lightly personalize and send).hr or broker → standard cadence; let the drip do its work for the first 10 days, then consider a LinkedIn touch around Day 14 if no engagement.other or unspecified → no outreach; rely on the drip.source: employer-cost-methodology, role: {role}, org_size: {org_size_band}./employers/ page section: Three ways to offer Averyn)./start/ or /plans-and-pricing/ → the lead may be evaluating Averyn for their own household; route accordingly without conflating the personal and employer paths.| Metric | Where | Target |
|---|---|---|
| Form submission rate | Plausible (lead_magnet_submit with source=tool) |
> 8% of calculator users |
| Welcome email open rate | Resend dashboard | > 55% (employer audiences open more than family) |
| Day 3 follow-up click rate | Resend dashboard | > 22% |
| Cal.com booking rate (Day 35 email) | Cal.com + Resend | > 4% |
| Day 56 reply rate | Manual | > 6% |
| LinkedIn URL capture rate | Supabase leads.meta.linkedin_url IS NOT NULL |
> 35% of employer leads |
| Pilot/voluntary conversion (90 days) | CRM | Track separately by role |
Status: Not implemented. Deferred to Phase 2 (post-launch, contingent on starting paid LinkedIn ad campaigns). Documented here so the integration can be wired without re-thinking the data contract.
Trigger: A LinkedIn Lead Gen Forms ad submission (LinkedIn Ads Manager) routes to a dedicated Supabase Edge Function linkedin-leadgen-webhook.
Why a separate Edge Function: LinkedIn's webhook signature, retry behavior, and lead-sync API contract differ from a native HTML form post. Keeping it isolated from lead-capture avoids polluting the working family-side flow with LinkedIn-specific verification logic.
Proposed endpoint: POST https://api.averyn.app/functions/v1/linkedin-leadgen-webhook
Expected payload (from LinkedIn Lead Sync API):
{
"leadGenFormResponse": {
"leadGenFormId": "urn:li:leadGenForm:<id>",
"formId": "<our internal form id, e.g. employer-cost-methodology-linkedin>",
"submittedAt": "2026-05-27T13:45:00Z",
"answers": [
{ "questionId": "first_name", "answer": "Jane" },
{ "questionId": "email_address", "answer": "jane@example.com" },
{ "questionId": "current_position", "answer": "VP People Operations" },
{ "questionId": "company_name", "answer": "Example Co." },
{ "questionId": "company_size", "answer": "501-1000" }
],
"linkedinProfileUrl": "https://www.linkedin.com/in/janedoe"
}
}
Normalization (inside the webhook handler):
| LinkedIn field | Maps to | Notes |
|---|---|---|
first_name |
leads.name |
If LinkedIn provides full name, take the first token |
email_address |
leads.email |
Required for upsert |
current_position |
leads.meta.role (derived) |
Map keyword-match: "founder"/"owner"/"partner" → owner; "HR"/"People"/"Benefits"/"Talent" → hr; "CEO"/"CFO"/"COO" → csuite; broker firms → broker; else other |
company_name |
leads.meta.company_name |
New meta key |
company_size |
leads.meta.org_size_band |
Normalize to the same bands as the calculator form |
linkedinProfileUrl |
leads.meta.linkedin_url |
Direct copy |
formId |
leads.asset |
Set based on which LinkedIn ad campaign this lead came from (e.g., employer-cost-methodology) |
| (LinkedIn ad campaign) | leads.utm_* |
Map LinkedIn creativeId/campaignId to UTM fields for attribution parity with site forms |
Output behavior (identical to lead-capture):
marketing.leads (same dedup logic on email,asset).buildWelcomeEmail + buildTeamNotification from _shared/marketingEmails.ts — both already meta-aware, so the role-tinted welcome and the enriched team notification render correctly without changes.Security: Verify LinkedIn's X-LinkedIn-Signature header against the webhook secret stored in Supabase Edge Function secrets (LINKEDIN_WEBHOOK_SECRET). Reject on mismatch.
When to build: The day paid LinkedIn ads start. Until then, the manual LinkedIn-URL capture field on the calculator form covers the same data path for organic conversions, and the manual outreach snippet in the team-notification email lets you act on it the same day.
meta.org_size_band is 2000+, accelerate the 30-day conversation CTA to Day 14 (larger orgs decide faster).nurture-employer for >60 days.