Skip to content
nitrodialerDocs
Browse the docs

Docs / Dialing

Speed-to-lead webhook

Send new leads from HubSpot, Salesforce, Zoho, Pipedrive, Zapier or Make to the front of a running campaign in seconds.

The faster you call a new lead, the more likely they pick up. The inbound webhook puts a brand-new lead at the front of a running campaign, so the next free agent calls it — usually within seconds of the form being submitted.

The endpoint

Every campaign has its own URL and token. Find both on the campaign's page (Campaigns → your campaign → Inbound leads).

HTTP
POST https://nitrodialer.com/api/webhooks/inbound?campaign=8f0b5c2e-6c1a-4f43-9d7e-2b8c1f0a9e11
X-NitroDialer-Token: 3f9c1d0b7a2e4c5d8e9f0a1b2c3d4e5f
Content-Type: application/json

If your tool can't set headers, put the token in the URL instead: &token=…. Treat the token like a password — anyone with it can add leads to that campaign. Form-encoded bodies work as well as JSON.

Two ways to send a lead

1. Send the record id and let NitroDialer fetch it

If the lead already exists in your connected CRM, send just its id and object. NitroDialer reads the record from the CRM, so the lead is linked and call notes are written back.

JSON
{ "record_id": "51234", "object": "contacts" }

Objects: contacts (HubSpot), Lead or Contact (Salesforce), Leads or Contacts (Zoho CRM), persons (Pipedrive).

2. Send the lead's details

Send the fields directly. Use NitroDialer's names or your CRM's own field names — these are all accepted:

Lead fieldAccepted names
First namefirst_name, First_Name, firstname, FirstName
Last namelast_name, Last_Name, lastname, LastName, name
Companycompany, Company, Account_Name, org_name
Emailemail, Email
Phonephone, Phone
Mobilemobile, Mobile, mobilephone, MobilePhone
Other phoneother_phone, Other_Phone, OtherPhone
Citycity, City
State or provinceregion, state, State, province
Postal codepostal_code, Zip_Code, zip, PostalCode, postalcode
CRM record idrecord_id, crm_record_id, id, objectId, Id
CRM objectobject, crm_object, module
Ownerowner_id, Owner_Id, hubspot_owner_id, OwnerId
Express consentconsent, Consent, express_consent — true, yes or 1
Lead sourcelead_source, Lead_Source, LeadSource, hs_analytics_source

At least one phone number is required. If a phone number is present, the fields are used as sent even when a record id is included; the record id then links the lead to the CRM.

Response

JSON
{ "inserted": 1, "updated": 0, "skipped_no_phone": 0 }

Sending the same record id again updates the lead's details instead of adding a duplicate, so retries are safe. Each new lead also fires a lead.created webhook.

StatusMeaning
200Accepted (check the counts)
401Unknown campaign or wrong token
404record_id mode: the record wasn't found in the CRM

HubSpot workflows

  1. Create a contact-based workflow. Enrolment trigger: Contact is created (or a form submission).
  2. Add the action Send a webhook, method POST, URL as above with &token=… at the end.
  3. HubSpot sends the contact's id as objectId. Add a body that includes the object:
JSON
{ "objectId": "{{ contact.hs_object_id }}", "object": "contacts" }

If you leave out object, NitroDialer uses the campaign's own record type, then the CRM's default (contacts for HubSpot). Including it keeps the request unambiguous.

Salesforce Flow

  1. Create a record-triggered flow on Lead, A record is created, optimised for Actions and related records.
  2. Add an HTTP callout action (or an Apex action) that POSTs to the URL above with the header X-NitroDialer-Token.
  3. Send the record id and object:
JSON
{ "record_id": "{!$Record.Id}", "object": "Lead" }

Add https://nitrodialer.com as a Named Credential or Remote Site first.

Zoho CRM Deluge

Create a workflow rule on Leads (on create) that runs this function, with argument leadId = Leads → Lead Id:

Deluge
body = Map();
body.put("record_id", leadId);
body.put("object", "Leads");
resp = invokeurl
[
  url: "https://nitrodialer.com/api/webhooks/inbound?campaign=YOUR_CAMPAIGN_ID"
  type: POST
  parameters: body.toString()
  headers: {"Content-Type":"application/json","X-NitroDialer-Token":"YOUR_TOKEN"}
];
info resp;

Pipedrive automations

  1. In Automations, create an automation with the trigger Person created.
  2. Add the action Send webhook (or use Zapier/Make if your plan doesn't include webhook actions).
  3. POST to the URL above with &token=… and send:
JSON
{ "record_id": "[Person ID]", "object": "persons" }

Zapier and Make

Use Webhooks by Zapier → POST or Make's HTTP → Make a request:

  • URL: the campaign URL with &token=…
  • Payload type: JSON
  • Data: map your form fields to first_name, last_name, mobile, email, region, and consent if your form collects it.
Shell
curl -X POST "https://nitrodialer.com/api/webhooks/inbound?campaign=YOUR_CAMPAIGN_ID" \
  -H "X-NitroDialer-Token: YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"first_name":"Daniel","last_name":"Okafor","mobile":"512-555-0142","region":"TX","consent":"yes"}'