HubSpot Email to Webhook Integration

Route inbound emails directly into HubSpot as structured JSON. HubSpot is an all-in-one CRM platform for marketing, sales, and customer service with powerful automation and inbound lead management capabilities. JsonHook bridges the gap between your inbox and HubSpot — no custom server required.

Table of Contents
  1. Why Connect HubSpot to Inbound Email
  2. Setting Up HubSpot with JsonHook
  3. Example Workflow: When a sales inquiry email arrives, create a HubSpot contact and enroll them in a nurture workflow
  4. Payload Mapping for HubSpot
  5. Best Practices for HubSpot Email Integration

Why Connect HubSpot to Inbound Email

HubSpot is built to manage customer relationships, but leads and inquiries often arrive via email before they ever reach your CRM. Manually copying email data into HubSpot is time-consuming and error-prone. JsonHook automates this handoff by converting every inbound email into a structured JSON payload and posting it directly to HubSpot's webhook endpoint.

Connecting your inbound email to HubSpot through JsonHook unlocks a range of high-value automation scenarios:

  • Create a new contact record automatically from every inbound inquiry email
  • Update deal stages when a prospect replies to a proposal
  • Log every customer email as an activity on the correct contact timeline
  • Assign leads to sales reps based on keywords in the email body
  • Trigger follow-up tasks when a client email includes words like "interested" or "quote"

HubSpot supports HubSpot Workflows webhook action or native API contact creation, which makes it a natural target for JsonHook's outbound POST requests. Every email that hits your JsonHook address is parsed within milliseconds and delivered to HubSpot as a clean JSON object — no polling, no manual export, no middleware server to maintain.

Setting Up HubSpot with JsonHook

The following steps walk you through connecting JsonHook to HubSpot. The entire setup typically takes under ten minutes.

  1. Step 1: In JsonHook, create a new inbound address dedicated to lead capture (e.g., [email protected]).
  2. Step 2: In Zapier or Make, create a workflow that triggers on the JsonHook webhook URL and add a HubSpot action to create or update a contact. The contact email will come from from.address in the parsed payload.
  3. Step 3: Map additional fields: use from.name to split into first and last name, subject as the lead source note, and text as a note body on the HubSpot contact record.
  4. Step 4: Optionally, trigger a HubSpot workflow on contact creation to enroll the lead in a nurture sequence or assign it to a sales rep based on keywords in the email subject.

Once the connection is active, every email sent to your JsonHook address will be automatically parsed and forwarded to HubSpot. You can test the integration by sending a plain-text email to your JsonHook address and verifying that the payload appears in HubSpot within a few seconds.

JsonHook supports HubSpot Workflows webhook action or native API contact creation on the HubSpot side, so no additional configuration is needed in HubSpot beyond the steps above. If HubSpot requires header-based authentication for incoming webhooks, add the required headers in the JsonHook endpoint configuration under Advanced Settings.

Automate HubSpot with Email Webhooks

Free tier: 100 emails/month. Set up in minutes.

Get Free API Key

Example Workflow: When a sales inquiry email arrives, create a HubSpot contact and enroll them in a nurture workflow

This walkthrough demonstrates one concrete way to use JsonHook with HubSpot. The scenario: When a sales inquiry email arrives, create a HubSpot contact and enroll them in a nurture workflow.

When an email matching this scenario arrives, JsonHook parses the raw SMTP message and constructs the following JSON payload before POSTing it to your HubSpot endpoint:

{
  "messageId": "",
  "from": {
    "name": "Jane Smith",
    "address": "[email protected]"
  },
  "to": [
    { "address": "[email protected]" }
  ],
  "subject": "When a sales inquiry email arrives, create a HubSpot contact and enroll them in a nurture workflow",
  "text": "Hi, I need help with my account. Please contact me at your earliest convenience.",
  "html": "

Hi, I need help with my account...

", "date": "2026-03-15T10:32:00.000Z", "attachments": [], "headers": { "x-priority": "1" } }

HubSpot contact properties map as follows: from.addressemail, from.name → split into firstname / lastname, subjecths_lead_status note or a custom property, text → a HubSpot note attached to the contact. Use the HubSpot API's /crm/v3/objects/contacts endpoint for direct creation.

Once HubSpot receives this payload, it can execute any downstream action — whether that is posting a notification, creating a record, updating a field, or triggering an entire multi-step workflow. The key advantage is that the data arrives as structured JSON, so HubSpot never needs to parse raw email text or deal with MIME encoding.

Payload Mapping for HubSpot

JsonHook delivers a consistent JSON schema for every parsed email. The table below shows which JsonHook fields map to the equivalent fields in HubSpot. Use this as a reference when configuring your HubSpot HubSpot Workflows webhook action or native API contact creation.

JsonHook Field Description HubSpot Field
from.addressSender email addressSender / Contact email
from.nameSender display nameSender / Contact name
subjectEmail subject lineTitle / Subject / Name
textPlain-text email bodyDescription / Body / Message
htmlHTML email bodyRich text field / Notes
dateTimestamp of receipt (ISO 8601)Created date / Received at
attachments[n].filenameAttachment filenameFile name / Attachment label
attachments[n].contentAttachment content (base64)File content / Binary field
headers.*Raw email headersMetadata / Custom properties
messageIdUnique message identifierExternal ID / Deduplication key

Not every field will be present in every email. Always check for null or missing values before mapping to required fields in HubSpot. For text-only emails, html will be empty; for HTML-only emails, text may be empty or auto-generated from the HTML. The attachments array will be an empty array when no files are attached.

Best Practices for HubSpot Email Integration

Following these best practices will make your HubSpot email integration more reliable, easier to debug, and simpler to scale as your email volume grows.

  • Use dedicated addresses per workflow. Create a separate JsonHook inbound address for each distinct HubSpot workflow you want to trigger. This makes routing explicit and avoids a single endpoint becoming a bottleneck for all email types.
  • Validate the payload before acting. In HubSpot, add a conditional check at the start of your workflow to confirm that required fields like from.address and subject are present and non-empty before executing downstream actions.
  • Test with real emails first. Use JsonHook's delivery log to inspect the raw JSON payload before wiring up HubSpot. Confirm that all the fields you plan to map are actually populated by your email source.
  • Handle errors gracefully. Configure HubSpot to catch webhook delivery failures and send an alert. JsonHook will retry failed deliveries, but your HubSpot endpoint should return a 2xx status promptly to acknowledge receipt.
  • Keep secrets out of email content. Avoid routing emails that contain passwords, API keys, or PII through workflows unless you have appropriate data-handling controls configured in HubSpot. Use JsonHook's HTTPS delivery to protect data in transit.

Frequently Asked Questions

Can I send emails to HubSpot via webhook?
Yes. JsonHook provides a unique inbound email address for each webhook endpoint you configure. When an email is delivered to that address, JsonHook parses the message — extracting the sender, subject, body text, HTML body, and any attachments — and immediately POSTs the result as a structured JSON payload to your HubSpot HubSpot Workflows webhook action or native API contact creation. From there, HubSpot can trigger any downstream action you have configured.
Do I need to code to connect JsonHook to HubSpot?
Minimal technical knowledge is needed. HubSpot accepts webhook payloads through its HubSpot Workflows webhook action or native API contact creation. You paste the URL, configure the field mappings in the UI, and JsonHook takes care of the rest. No custom code is necessary for standard email-to-webhook routing.
How do I filter which emails go to HubSpot?
JsonHook uses address-based routing. Create a dedicated inbound address such as [email protected] and point it exclusively at your HubSpot webhook URL. You can also create multiple addresses for different email categories — one for support, one for sales leads, one for order notifications — each routed to a different HubSpot workflow or channel. If HubSpot supports conditional logic, you can add further filtering on the subject, from, or any custom field in the parsed JSON payload.
Can I update existing HubSpot contacts from inbound emails?
Yes. HubSpot's API supports an upsert operation — if a contact with the same email address already exists, the API will update it rather than create a duplicate. Use the from.address field as the deduplication key when calling /crm/v3/objects/contacts with the idProperty=email parameter.
How do I attach the email body as a note in HubSpot?
After creating or updating the contact, make a second API call to HubSpot's Notes API at /crm/v3/objects/notes. Set the note body to the text field from JsonHook and associate it with the contact using the contact's HubSpot ID returned from the first API call.