Send email from Nutshell CRM with Volanea by using Nutshell’s Zapier integration as the event bridge, then calling Volanea from a server-side Code by Zapier step. This approach does not require, and should not be mistaken for, a native Volanea app in Nutshell’s marketplace.

Nutshell is the system that knows when a lead, contact, company, activity, or pipeline record changes. Volanea is the email delivery system that turns a deliberate event into a message with a tracked sending identity, authenticated domain, and deliverability controls. The integration layer between them matters: it must map CRM data safely, keep the Volanea API key out of browsers and email templates, and prevent one CRM event from becoming several emails.

This guide uses a concrete, common workflow: a new Lead in Nutshell starts an automation; the workflow sends an acknowledgement or handoff email through Volanea. The same pattern applies to a lead moving into a particular pipeline stage, a completed activity, or another Nutshell event exposed by the automation trigger you choose.

What this integration does—and does not do

Volanea does not provide a native Nutshell CRM application, marketplace listing, or one-click plugin. There is therefore no Volanea package to install inside Nutshell and no credentials to paste into a fictional “Volanea” integration panel.

Instead, use Nutshell’s supported Zapier connection. In Zapier, the Nutshell CRM app supplies a trigger and the Webhooks by Zapier or Code by Zapier app supplies the outbound server-side step. The resulting path is:

  1. A lead is created in Nutshell CRM.
  2. Zapier receives that Nutshell trigger event.
  3. A Code by Zapier step normalizes and validates the lead fields.
  4. The code makes an authenticated HTTPS request to Volanea’s email API.
  5. Volanea accepts the message, queues it, and returns a response for logging.

This separation is useful beyond convenience. Nutshell remains the source of customer data and workflow state. Zapier orchestrates the event. Volanea owns email delivery. If you later replace a lead-created email with a stage-based email, you change the trigger and mapping rather than embedding sending logic throughout your CRM process.

The guide intentionally uses a server-side automation action, not JavaScript embedded in a Nutshell form, a public webpage, or an email template. A browser-visible integration would expose your sending key to anyone who can inspect network traffic or page source.

Choose the Nutshell CRM trigger deliberately

The concrete trigger for this setup is New Lead in the Nutshell CRM app for Zapier. It runs when a lead record is created in Nutshell. In Nutshell terminology, a lead is a sales opportunity record; it can be associated with a person, company, pipeline, and stage.

A new-lead acknowledgement is appropriate when an email address is collected during lead creation and the recipient expects a response. Examples include a sales inquiry, a request for a demo, or a manually entered inbound opportunity. It is not automatically appropriate for every imported, enriched, or salesperson-created lead. Those may not represent consent or intent to receive a message.

Other useful event choices

The right event should correspond to a customer-visible moment, not merely to the earliest technically available field. Depending on the triggers and fields available to your Nutshell connection and plan, you may choose a different workflow design:

  • New Lead: Send a receipt, introduction, or internal owner notification when a new opportunity is created.
  • Lead updated or stage changed: Send a message only after the lead reaches a defined workflow state, such as “Demo scheduled” or “Proposal sent.” Use a filter so ordinary edits do not send email.
  • New contact: Send a welcome or verification message after a person record is created, provided the person’s email and consent state are present.
  • New activity: Alert an internal team after an activity is logged. This is normally an operational message rather than a marketing email.
  • Nutshell Forms submission: Treat the form capture as the inbound event, then create or update the CRM record and send an acknowledgement only after the data has been checked.

Do not use a generic “lead updated” event without a restrictive filter. Lead records can change repeatedly as representatives add notes, reassign owners, edit custom fields, and update values. A workflow that sends whenever any field changes is one of the fastest ways to create duplicate or irrelevant mail.

For the walkthrough below, add a Nutshell CRM — New Lead trigger in Zapier, connect the authorized Nutshell account, and test it using a real non-sensitive sample lead. Test data is important because the exact fields made available by a connector depend on the object, connected account, and configured custom fields.

Understand the payload before you write email logic

Nutshell data does not become an email payload by magic. Zapier presents the values returned for the selected Nutshell lead trigger as individual fields that can be inserted into subsequent actions. The names in your Zap can vary, especially where your Nutshell account uses custom fields or where a lead has multiple associated people.

For a typical lead with an associated person, normalize the trigger output into an object like this before calling Volanea:

{
  "leadId": "48291",
  "leadName": "Website demo request — Northstar Labs",
  "pipeline": "Sales",
  "stage": "New",
  "personName": "Avery Chen",
  "personEmail": "avery@example.com",
  "companyName": "Northstar Labs",
  "ownerName": "Jordan Lee",
  "createdTime": "2026-09-22T14:30:00Z"
}

That is a normalized integration payload, not a claim that every Nutshell lead contains every property. A lead can have no associated person, more than one associated person, no company, or an email value held in a different contact field. Your Zap must account for that reality.

For the code in this guide, configure the Code by Zapier input fields with values from the New Lead trigger:

Code input fieldMap from Nutshell trigger outputWhy it is needed
lead_idLead IDCreates a stable idempotency key and audit trail.
emailAssociated person’s emailRecipient address.
first_nameAssociated person’s first namePersonalization, with a fallback.
lead_nameLead nameContext in the message and logs.
company_nameCompany nameOptional contextual copy.
stageLead stageLets code reject an unexpected workflow state.
created_timeLead creation timeHelpful for observability.

Never assume the first email-like field is the correct recipient. If a lead can contain multiple contacts, decide the business rule explicitly: use the primary contact, use a dedicated custom field such as confirmation_email, or stop for human review. Sending to every linked contact by default is rarely a safe rule.

Add a filter before the sending step

Place a Filter by Zapier step between the Nutshell trigger and the Volanea call. Require at least:

  • email exists;
  • the lead is in the intended pipeline or stage, if stage is part of the business rule;
  • an explicit consent or communication-permission field passes, when the message is marketing or promotional;
  • the test does not match an excluded internal address or a known test lead.

A filter is not a substitute for address validation, but it stops obvious bad events from reaching your sending provider. For high-value flows, validate uncertain addresses before sending; Volanea’s email verification tool can help assess an address separately from your CRM workflow.

Build the Zapier workflow

Create a new Zap and use a descriptive name such as Nutshell new lead → Volanea acknowledgement. Clear naming matters when several sales operations workflows exist and someone must diagnose an unexpected send months later.

Step 1: Connect the Nutshell trigger

Select Nutshell CRM as the app and New Lead as the trigger event. Authenticate the Nutshell account through Zapier’s connection flow. Select or test the trigger until Zapier shows a representative lead record with an associated email address.

Inspect the test record rather than accepting its field mapping blindly. Look for whether the email belongs to a linked person, whether it is available as a direct field, and whether custom consent fields appear. If the sample has a blank email, create a purpose-built test lead in Nutshell rather than mapping an unrelated field just to make the test pass.

Step 2: Filter eligible events

Add Filter by Zapier. For a simple transactional acknowledgement, require the person email field to exist and require the stage to equal the new-lead stage your process uses. For promotional follow-up, add an affirmative consent condition and make the filter fail closed when consent is empty.

The purpose of this filter is semantic, not cosmetic. A valid email address is not proof that a person expected a marketing message. Conversely, an operational message such as a requested receipt may have a different legal and product basis, but it still needs accurate recipient mapping and a clear sender identity.

Step 3: Add a Code by Zapier action

Choose Code by Zapier and select JavaScript. Enter the input fields from the mapping table above. Store the Volanea API key as a Code by Zapier secret or another server-side secret facility supported by your automation environment; do not add it as a visible input field sourced from Nutshell.

The following example shows the complete normalization, validation, idempotency, and API request pattern. Set VOLANEA_API_KEY as a secret and set the sender address to an address on a domain you have authenticated in Volanea. Review the current endpoint and message schema in the Volanea API reference and setup guides before deploying, because a production integration should follow the API version documented for your account.

// Code by Zapier (JavaScript)
// Input Data fields:
// lead_id, email, first_name, lead_name, company_name, stage, created_time
// Secret: VOLANEA_API_KEY

const leadId = String(inputData.lead_id || '').trim();
const to = String(inputData.email || '').trim().toLowerCase();
const firstName = String(inputData.first_name || '').trim() || 'there';
const leadName = String(inputData.lead_name || '').trim() || 'your request';
const companyName = String(inputData.company_name || '').trim();
const stage = String(inputData.stage || '').trim();
const apiKey = process.env.VOLANEA_API_KEY;

if (!leadId) throw new Error('Nutshell lead_id is missing. Refusing to send.');
if (!apiKey) throw new Error('VOLANEA_API_KEY secret is not configured.');
if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(to)) {
  throw new Error(`Lead ${leadId} has no usable recipient email.`);
}

// Optional defense in depth if this Zap is intended only for a specific stage.
if (stage && stage !== 'New') {
  throw new Error(`Lead ${leadId} is in unexpected stage: ${stage}`);
}

const subject = 'We received your request';
const companyLine = companyName
  ? `<p>We’ll follow up about ${escapeHtml(companyName)} shortly.</p>`
  : '<p>We’ll follow up shortly.</p>';

const payload = {
  from: { email: 'hello@your-verified-domain.example', name: 'Your Company' },
  to: [{ email: to, name: firstName }],
  subject,
  html: `<p>Hi ${escapeHtml(firstName)},</p><p>Thanks for contacting us about ${escapeHtml(leadName)}.</p>${companyLine}<p>— Your Company</p>`,
  text: `Hi ${firstName},\n\nThanks for contacting us about ${leadName}. We’ll follow up shortly.\n\n— Your Company`,
  tags: ['nutshell', 'lead-created'],
  metadata: {
    nutshell_lead_id: leadId,
    nutshell_created_time: String(inputData.created_time || '')
  }
};

const response = await fetch('https://api.volanea.com/v1/emails', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
    'Idempotency-Key': `nutshell-lead-created-${leadId}`
  },
  body: JSON.stringify(payload)
});

const responseBody = await response.text();
if (!response.ok) {
  throw new Error(`Volanea email request failed (${response.status}): ${responseBody}`);
}

return {
  nutshell_lead_id: leadId,
  recipient: to,
  volanea_response: responseBody
};

function escapeHtml(value) {
  return String(value)
    .replace(/&/g, '&amp;')
    .replace(/</g, '&lt;')
    .replace(/>/g, '&gt;')
    .replace(/"/g, '&quot;')
    .replace(/'/g, '&#39;');
}

The important field mapping is visible in the code: inputData.email becomes to[0].email; inputData.first_name becomes the recipient name and greeting; inputData.lead_id becomes Volanea metadata and the idempotency key; and the lead name becomes contextual, escaped content. The example includes both HTML and plaintext so recipients whose clients do not render HTML still receive a readable message.

Do not copy an API endpoint or request schema from an old blog post into production. Confirm the currently supported Volanea endpoint, authentication format, idempotency support, sender object format, and response fields in the documentation associated with your account. The implementation principle remains the same: one server-side HTTPS request, explicit JSON, a configured authenticated sender, and a stable event identifier.

Keep the Volanea API key secret

The Volanea API key belongs in Zapier’s secret storage, a connected credential store, or a middleware environment variable. It does not belong in Nutshell custom fields, lead notes, a public form’s JavaScript, an email body, a query string, or a Zap input value that is visible in task history.

An email API key commonly permits sending from your account. If it is exposed, an attacker may send abusive messages, damage domain reputation, consume quota, or use your infrastructure in a phishing campaign. Rotating the key later fixes future exposure but does not undo mail already sent or reputation damage already caused.

Practical key-management rules

Use these controls from the first deployment:

  • Create a dedicated key for this Nutshell automation rather than reusing a developer’s general-purpose key.
  • Limit the key’s scope if Volanea offers scoped credentials; the workflow should need sending access, not account administration.
  • Keep the secret in the automation platform’s protected secret store and grant edit access only to people who need it.
  • Use a verified sender address and domain. Do not substitute the lead owner’s arbitrary address as from.
  • Record the key owner, workflow name, and rotation date in internal operations documentation.
  • Rotate immediately if a key appears in logs, screenshots, exported Zaps, source control, or a support ticket.

A Reply-To address can route responses to the sales owner or a shared inbox, but it should also be intentional. Sending “from” a verified company domain with a carefully chosen reply path is more reliable than trying to impersonate a different address for every lead owner.

Make the message appropriate for the event

The first message after a lead is created should be narrow in purpose. State what happened, identify your organization, set a reasonable expectation, and provide a useful next step. Avoid turning a transactional acknowledgement into a dense promotional campaign just because the CRM record contains a recipient address.

For example, the lead-created message can say that the request was received and that a team member will reply. It can include the request subject or company name if doing so helps establish context. It should not include sensitive fields from the CRM, such as sales notes, deal value, phone numbers, internal ownership, or confidential custom fields.

Use CRM fields defensively in templates

Any CRM field can contain unexpected characters or inaccurate data. A name may be blank, a company name may include an ampersand, and a lead title may be entered by a person outside your organization. Escape fields before placing them into HTML, as the example does, and provide fallbacks for empty names.

Also separate copy decisions from transport decisions. The Volanea call is responsible for the recipient, sender, subject, content, tags, and metadata. The Zap filter or an earlier code step is responsible for deciding whether the lead should receive an email. This makes it easier to audit why a send happened.

If the same automation sends multiple kinds of email, add a stable tag such as nutshell-lead-created or nutshell-demo-request. Tags and metadata make delivery events easier to trace back to a CRM workflow without placing full customer records into provider logs.

When this breaks: failures at the Nutshell-to-Volanea hop

Every event-driven email workflow needs a failure model. A successful test proves only that one payload worked once; it does not prove that missing contact fields, connector retries, slow endpoints, changed pipeline names, or delivery-provider errors will behave safely later.

Duplicate sends after retries

Automation platforms and webhook-style integrations can retry a failed or timed-out delivery. A retry is correct behavior for an unreliable network, but it can create a duplicate email if Volanea accepted the first request and the workflow never received the response.

Use a stable idempotency key derived from the business event, not from the current time. In this guide, nutshell-lead-created-<lead ID> is stable across retries of the same lead-created event. If your selected Volanea API version supports idempotency keys, send it on every attempt. If it does not, persist a send ledger in middleware or a database keyed by the Nutshell lead ID and message type before attempting delivery.

Be especially careful with lead updates. A lead can legitimately change stages more than once. For a stage-based email, key the event with both the lead ID and the target stage, such as nutshell-48291-stage-demo-scheduled, and record whether that specific message was already sent. Do not use only the lead ID if your business process intentionally sends different emails at different stages.

Timeouts and ambiguous outcomes

A timeout does not always mean Volanea rejected the message. It may mean that the provider accepted and queued the email but the automation layer did not receive a response before its timeout. Treat this as an ambiguous outcome, not an automatic instruction to resend.

Keep the send request small, avoid slow enrichment inside the synchronous path, and log the lead ID, idempotency key, recipient, API status, and provider message identifier where available. If a workflow fails, first search using the lead ID or metadata in Volanea before replaying the task. A manual replay without that check is a common cause of customer-visible duplicates.

Missing or differently shaped fields

Nutshell records are not guaranteed to be complete. Different account configurations, record types, permissions, custom field definitions, and connected-app versions can affect which fields appear in Zapier. A lead created by an import may not have an associated person. A person may have a phone number but no email. A custom consent field may be absent in a test account or unavailable to the connected user.

Fail closed for missing recipient or consent data. The sample code throws when there is no usable email and returns a failed task rather than sending to an invented fallback address. Route these failures to an internal alert or a review queue, then correct the CRM record or mapping. Do not silently replace a missing customer email with the lead owner’s address unless the workflow is explicitly an internal notification.

Changed stages, names, and permissions

A filter that checks stage = New will stop working if an administrator renames the stage to “Incoming” or moves the workflow to another pipeline. Likewise, an authorization change can cause the Nutshell connection to lose access to records or fields.

Document the expected pipeline and stage values, use test leads after CRM configuration changes, and review Zap task history after a permissions update. For critical revenue operations, create a change-management checklist: test the trigger, test the filter, test the API response, and verify delivery to a controlled mailbox.

Deliverability and operational safeguards

An accepted API response is not the same as inbox placement. Before sending real lead acknowledgements, authenticate the domain used in the from address, publish the DNS records Volanea provides, and make sure the visible sender name matches the organization a recipient recognizes.

Start with a low-risk, clearly expected message. Monitor hard bounces, complaints, deferred delivery, and unsubscribes where applicable. A high hard-bounce rate often indicates poor CRM data hygiene; a complaint spike can mean the trigger sent mail to leads who did not expect it. Neither problem is solved by changing an API header.

Separate transactional and promotional paths

A “we received your request” email triggered immediately after a form submission is usually operational in character. A multi-email nurture sequence, product announcement, or special offer is campaign mail and should use explicit eligibility, frequency controls, and appropriate opt-out handling.

Keeping these paths separate has a second-order benefit: it protects the reputation of important operational mail. If a broad promotional audience develops low engagement or complaints, it should not compromise the delivery of confirmations, password messages, receipts, or requested follow-ups.

Use a dedicated tag or stream designation where your Volanea account and plan support it. Keep content and audience logic visible in the automation rather than hiding it in a single opaque template that changes meaning over time.

Test and observe the workflow

Use a controlled test plan before enabling the Zap for all new leads. A single happy-path test is insufficient because the edge cases are often where accidental sends and broken personalization occur.

Test at least these cases:

  1. A normal lead with an associated person, valid email, company, and expected stage.
  2. A lead with no associated person or blank email; the workflow should stop before Volanea.
  3. A lead with a name containing &, <, apostrophes, or non-ASCII characters; HTML should remain well formed.
  4. A lead in an unexpected stage; the filter or code should reject it.
  5. A deliberate replay of the same event; the idempotency control should avoid a second message.
  6. A mailbox at a domain you control, where you can inspect sender alignment, plaintext fallback, links, and reply behavior.

In logs, store enough information to investigate a send without unnecessarily duplicating personal data. The Nutshell lead ID, workflow name, message type, provider response ID, status, and timestamp are generally more useful than storing an entire CRM payload in every log line.

Build an ownership model too. Sales operations should own the Nutshell trigger and pipeline semantics; whoever owns email infrastructure should own the Volanea sender, domain authentication, and API key; and support should know how to locate a message by CRM lead ID when a recipient asks what happened.

Alternatives to Code by Zapier

Code by Zapier is a good fit when the mapping is compact and the volume is moderate. It keeps the transformation and API call close to the trigger, while allowing validation and dynamic content that a basic webhook action may not handle cleanly.

A Webhooks by Zapier custom request is viable if your body is static enough to map directly from trigger fields and your integration needs no HTML escaping, conditional content, or complex recipient selection. It is simpler but also easier to misconfigure when fields are optional.

A dedicated middleware service is a better choice when you need one or more of the following:

  • a durable database-backed idempotency ledger;
  • sophisticated template rendering or localization;
  • lookups across multiple Nutshell records;
  • strict audit retention and access controls;
  • higher throughput or queue-based retry handling;
  • centralized error alerts and dead-letter processing.

In that architecture, Zapier sends a minimal authenticated event to your middleware, and the middleware retrieves any necessary CRM details through an authorized server-side integration before calling Volanea. The Volanea key stays in the middleware secret manager. This is more engineering work, but it gives you control over retries and observability that a no-code task history alone may not provide.

Conclusion

To send email from Nutshell CRM with Volanea, use a Nutshell New Lead trigger in Zapier, filter for eligible records, normalize the lead data in a server-side step, and send an explicit authenticated API request to Volanea. There is no native Volanea Nutshell plugin to install, so the integration’s quality depends on the workflow you build.

The durable version of this setup does more than send an email. It uses a verified sender, protects the API key, handles missing CRM fields, assigns a stable idempotency key, and gives your team enough metadata to investigate failures without guessing. Start with one expected transactional message, test difficult records, and expand only after the event semantics and delivery behavior are clear.

FAQ

Can I install Volanea from the Nutshell CRM marketplace?

No. Volanea does not ship a native Nutshell CRM marketplace app or plugin. Use Nutshell’s Zapier connection and a server-side Zapier action, or connect both systems through your own middleware.

What Nutshell event should start the first email?

For this guide, use the Nutshell CRM New Lead trigger in Zapier. Use a stage-based event only when your sales process has a stable, meaningful stage and you add a filter to avoid sending after unrelated lead updates.

Where should I store the Volanea API key?

Store it as a protected secret in Code by Zapier, a credential store, or a server-side environment variable in middleware. Never put it in a Nutshell field, client-side form code, browser configuration, or a visible Zap input.

How do I prevent duplicate emails?

Use a stable idempotency key based on the Nutshell lead ID and message type, such as nutshell-lead-created-48291. Check provider logs before replaying a timed-out workflow, because a timeout can occur after the provider has already accepted the message.

What happens when a Nutshell lead has no email address?

The workflow should stop and report a failed or filtered task. Do not send to a fallback address unless the workflow is explicitly designed as an internal notification and that fallback is part of the documented business rule.