Hear AI for your business |

Help Genie Resources

Step-by-step setup help

Guide Intermediate 30 min read 6 steps

How to Connect Help Genie to Your CRM via Webhooks

Step-by-step guide to routing Help Genie lead captures and conversation summaries into HubSpot, Pipedrive, Salesforce, or GoHighLevel in real time.

Help Genie Help Genie
| | general
1
2
3
4
5
6
How to Connect Help Genie to Your CRM via Webhooks

Get Every Captured Lead Into Your CRM Automatically

By the end of this guide, your Help Genie genie will push lead data and conversation summaries directly into your CRM the moment a conversation ends. No manual exports. No CSV imports. Real-time records in HubSpot, Pipedrive, Salesforce, or GoHighLevel.

This is a practical walkthrough for ops teams and developers. If you’ve wired a webhook before, the pattern here will feel familiar. The Help Genie-specific details are what this guide covers.


Prerequisites

Before you start, confirm you have the following:

  • A Help Genie account on the Professional plan or above (webhooks require API access)
  • At least one deployed genie with lead capture enabled
  • Access to the Help Genie dashboard and API docs
  • A CRM account with API write access (HubSpot, Pipedrive, Salesforce, or GoHighLevel)
  • A server endpoint, a Zapier account, a Make scenario, or an n8n workflow to receive webhook payloads

If you’re using a middleware tool like Zapier, Make, or n8n, you don’t need to write custom code. Steps 3 and 4 will cover both paths.


Step 1: Enable Webhooks and Copy Your Signing Secret

Log in to your Help Genie dashboard and navigate to Settings > Developers > Webhooks.

Click Enable Webhooks. The dashboard will generate a signing secret. Copy it immediately and store it in your secrets manager or environment variables. You will not be able to view it again in plaintext.

The signing secret is used to verify that incoming requests actually come from Help Genie. You’ll use it in Step 4. Don’t skip this part. Unsigned webhook receivers are a real security risk, and Help Genie signs every outbound request using HMAC-SHA256.

While you’re here, note your API base URL and make sure your account has webhook permissions. The Help Genie API docs list the full set of available endpoints and authentication requirements.


Step 2: Choose the Events You Want to Receive

Help Genie fires several webhook event types. For a CRM integration, you’ll typically subscribe to three:

  • lead.captured, fires when a genie collects a lead’s contact details
  • conversation.ended, fires when a conversation session closes, with a full transcript and summary
  • lead.qualified, fires when a lead meets a qualification threshold you’ve defined in your genie’s lead capture settings

In the Webhooks panel, select the checkboxes next to the events you want. You can subscribe to all three or just the ones that match your CRM workflow.

A few things to keep in mind:

  • lead.captured fires before the conversation ends, so it may not include a transcript yet.
  • conversation.ended includes the most complete data payload: transcript, sentiment, duration, lead fields, and any collected form data.
  • If you’re only pushing contacts to your CRM, lead.captured is often enough. If you want to attach conversation context to the CRM record, wait for conversation.ended.

Enter your receiver URL (from Step 3) before saving. You can come back and add it once your receiver is live.


Step 3: Stand Up a Webhook Receiver

You have two paths here.

Option A: Code Your Own Receiver

If you’re running a Node.js, Python, or similar backend, create a POST endpoint that accepts JSON. It should:

  1. Read the raw request body (not parsed JSON yet, you need the raw bytes for signature verification in Step 4)
  2. Return a 200 OK immediately. Help Genie’s retry logic treats anything other than a 2xx response as a failure.
  3. Process the payload asynchronously after acknowledging receipt

A minimal Express.js endpoint looks like this conceptually: accept POST, grab raw body, verify signature, parse payload, hand off to your CRM logic, return 200.

Option B: Use Zapier, Make, or n8n

Each of these tools provides a webhook trigger step:

  • Zapier: Create a new Zap. Choose “Webhooks by Zapier” as the trigger. Select “Catch Hook”. Copy the generated URL.
  • Make: Create a new scenario. Add a “Webhooks” module. Choose “Custom Webhook”. Copy the URL.
  • n8n: Add a “Webhook” node. Set method to POST. Copy the generated URL.

Paste that URL into the Help Genie webhook receiver field in the dashboard. These tools handle the 200 OK response automatically, so you don’t need to worry about timeouts.

Middleware tools don’t support raw-body signature verification the same way a custom server does. If security is critical, use a custom receiver. For most internal integrations, Zapier/Make/n8n is fast and perfectly fine.


Step 4: Verify the Signature on Incoming Requests

Help Genie signs every webhook request with an HMAC-SHA256 signature. The signature is sent in the X-HelpGenie-Signature request header.

To verify it:

  1. Take the raw request body (unparsed bytes)
  2. Compute HMAC-SHA256(rawBody, signingSecret)
  3. Compare your computed hash to the value in the header

If they match, the request is legitimate. If they don’t match, discard it and return a 400.

This step is mandatory if you’re running a custom receiver. Skipping it means anyone who discovers your endpoint URL can inject fake lead records into your CRM.

If you’re using Zapier, Make, or n8n and can’t verify the signature natively, restrict your receiver URL to Help Genie’s published IP ranges (listed in the API docs) as a compensating control.


Step 5: Map Fields to Your CRM

Once your receiver is confirming valid payloads, you need to map the Help Genie payload fields to your CRM’s data model.

The lead.captured and conversation.ended payloads include fields like:

  • lead.name, lead.email, lead.phone
  • lead.custom_fields (any fields you configured in your genie’s lead capture settings)
  • conversation.summary, conversation.sentiment, conversation.duration
  • genie.id, genie.name
  • session.started_at, session.ended_at

Here’s how this maps across common CRMs:

HubSpot: Create or update a Contact using lead.email as the deduplication key. Push conversation.summary into a Contact note or a custom property. Use the HubSpot Contacts API (POST /crm/v3/objects/contacts).

Pipedrive: Create a Person and a linked Deal. Map lead.name and lead.email to Person fields. Attach a note with conversation.summary.

Salesforce: Create a Lead object. Map standard fields (FirstName, LastName, Email, Phone). Log the conversation summary to an Activity or Task record.

GoHighLevel: Use the Contacts API to create or update a contact. GoHighLevel’s webhook-native workflows can receive the payload directly and route it without custom code.

If you’re using Zapier or Make, use their native CRM modules (HubSpot, Pipedrive, Salesforce, GoHighLevel all have first-party modules) to handle field mapping without writing API calls manually.

Check the Help Genie resources page for the full payload schema reference.


Step 6: Send Three Test Events and Confirm the Records Appear

Before going live, run a controlled test.

In the Help Genie dashboard, go to Settings > Developers > Webhooks and use the Send Test Event button. Send one test for each event type you subscribed to: lead.captured, conversation.ended, and lead.qualified.

Then check:

  • Your receiver logs show a 200 OK for each request
  • Signature verification passed for each
  • The CRM has created (or updated) the expected records
  • The conversation summary or note is attached correctly

If a record is missing, check your receiver logs first. Then check the CRM API response. Payload mapping errors usually show up as 422 Unprocessable Entity from the CRM’s API.


Retry Logic

Help Genie retries failed webhook deliveries automatically. If your receiver returns anything other than a 2xx, or if the request times out, Help Genie will retry using exponential backoff: roughly 1 minute, 5 minutes, 30 minutes, then 2 hours.

After four failed attempts, the event is marked as undeliverable. You can view failed events and manually replay them from the Webhooks panel in your dashboard.

To avoid duplicate CRM records from retried events, make your receiver idempotent. Use the event’s unique event_id field as a deduplication key. If you’ve already processed an event with that ID, return 200 and skip the CRM write.


Troubleshooting Checklist

Events aren’t arriving:

  • Confirm the receiver URL is saved in the dashboard
  • Check that the genie has lead capture enabled
  • Check that your receiver is publicly accessible (localhost won’t work without a tunnel like ngrok)

Signature verification is failing:

  • Make sure you’re hashing the raw body, not the parsed JSON
  • Confirm you’re using the signing secret from the dashboard, not an API key

CRM records are missing fields:

  • Check your genie’s lead capture configuration. Fields that aren’t configured won’t appear in the payload.
  • Check the CRM API response for validation errors

Duplicate records in the CRM:

  • Implement idempotency using event_id (see Retry Logic above)
  • Use email as a deduplication key when upserting contacts

You’re Live. Here’s What to Do Next

Once your test events confirm clean records in your CRM, your voice AI CRM integration is production-ready. Every conversation your genie has will now route lead data in real time, no manual work required.

If you want to go further, look at the conversation.sentiment field. Routing high-sentiment leads to a priority queue in your CRM is a quick win that most teams set up within the first week.

Ready to explore what else your genie can do? Head to /explore to see the full platform, or check the resources hub for the complete API reference and payload schemas.