Send calls to HubSpot, GoHighLevel, Pipedrive, Slack, Zapier or your CRM
Pick a body format on your webhook so the receiving tool understands the message without extra work.
Updated Oct 29, 2026 · 7 min read
On this page
- Standard
- HubSpot: log the call with its transcript
- GoHighLevel: add every caller as a contact
- Connect GoHighLevel
- Add appointments, extra tags and the full transcript
- Add new GoHighLevel contacts to an outbound campaign
- Pipedrive: add every caller as a person
- Slack
- Discord
- Custom JSON body
- When to use an automation tool instead
- Related Articles
Standard #
The default JSON envelope. Use it for:
- Zapier: Webhooks by Zapier, Catch Hook
- Make: Custom webhook
- n8n: Webhook node
- Your own server
Paste the URL they give you into the webhook and save. That is all.
HubSpot: log the call with its transcript #
- In HubSpot, create a private app and copy its token.
- In NovaReps, open Integrations, then Webhooks, then New.
- Under Format and sign in, choose the format HubSpot: log the call with its transcript. The URL, an
Authorizationheader and thetranscript.readyevent are filled in for you. - In the
Authorizationheader, paste your HubSpot private app token afterBearer. - Save, then use Send Test.
Each call appears in HubSpot as a logged call with the summary, transcript, duration, numbers and direction.
It is not attached to a contact automatically. To do that, use a HubSpot workflow or an automation tool.
GoHighLevel: add every caller as a contact #
Connect your GoHighLevel sub-account once and every finished call or text conversation lands there as a contact with a note and tags. You can also work the other way: a contact you create or tag in GoHighLevel is added to one of your outbound campaigns, called by your agent, and the result is written back onto that same contact.
Connect GoHighLevel #
- In NovaReps, open Integrations, then API, and find the CRM card.
- Choose Connect GoHighLevel, pick your sub-account and approve access.
- Choose Send a test contact to check the link. A contact named "Test Contact" appears in GoHighLevel.
After each call or conversation, the caller becomes a contact (matched by phone number or email, so repeat callers are not duplicated). The contact gets a note with the summary, the outcome, the sentiment and any details your agent collected, plus tags such as ai-receptionist, ai-call and ai-outcome-new-lead. Use those tags to start your own GoHighLevel workflows.
Add appointments, extra tags and the full transcript #
- On the CRM card, choose Settings.
- To also create the appointments your agent books, pick a GoHighLevel calendar under Where booked appointments go.
- To add your own tags to every contact, type them under Extra tags.
- To put the whole conversation in each note, turn on Include the full transcript in the note. Very long conversations are cut off after about 20,000 characters and marked "(trimmed)". Leave it off if you only want the summary.
- Choose Save.
Add new GoHighLevel contacts to an outbound campaign #
You need a plan with outbound calling and at least one outbound campaign. Your NovaReps account is already set up to receive events from GoHighLevel, so there is nothing to register yourself.
- In GoHighLevel, decide which contacts may be called. Give each of them the consent tag. The default is
consent-confirmed. Only add it when the person has agreed to be called. - In NovaReps, open Integrations, then API, and on the CRM card choose Settings.
- Under Add new contacts to a campaign, check the Consent tag. Change it if you use a different tag in GoHighLevel.
- Under Rules, choose Add a rule.
- Under When a contact is, choose created or tagged. If you choose tagged, type the tag in With the tag, for example
call-me. - Under Add them to campaign, choose one of your campaigns.
- Turn on Start the campaign if it is not running if you want a new contact to start a campaign that is a draft, paused or stopped. Leave it off to start the campaign yourself.
- Leave Rule is on switched on, then choose Save.
What happens next:
- When a matching contact appears in GoHighLevel, it is added to the campaign once, even if GoHighLevel sends the same event again.
- A contact without the consent tag is never added. The CRM card shows how many were added and skipped, and the reason for the last skip.
- A contact with no valid phone number is skipped too. Write international numbers with a leading
+in GoHighLevel. - Calling hours, do-not-call and daily limits still apply when the agent dials.
- After the call, the summary and the details your agent collected appear as a note on the same GoHighLevel contact. No second contact is created. With the full transcript turned on, the conversation is in that note too.
Example: you tag a contact call-me and consent-confirmed. A rule says "When a contact is tagged call-me, add them to Quote follow-up". The contact joins that campaign, the agent calls, and the note appears on the contact in GoHighLevel.
Good to know:
- Test calls from the dashboard are not sent.
- If the card says Needs reconnecting, GoHighLevel stopped accepting the connection. Choose Reconnect and approve access again.
- Disconnect stops syncing. Contacts already created in GoHighLevel stay there.
- The CRM card is part of the same plan feature as webhooks. If you do not see it, check your plan. The rules section also needs outbound calling.
- One GoHighLevel sub-account can be connected to one workspace only. If you see "This CRM account is already connected to another workspace", disconnect it there first.
- Events older than a day are ignored, so tagging a contact today starts a call today, not one that GoHighLevel resends days later.
- If nothing is added, check that the contact has the consent tag, a phone number, and that the campaign in the rule is not finished or archived.
Pipedrive: add every caller as a person #
Connect your Pipedrive company once and every finished call or text conversation lands there as a person with a note.
- In NovaReps, open Integrations, then API, and find the CRM card.
- Choose Connect Pipedrive and approve access.
- Choose Send a test contact. A person named "Test Contact" appears in Pipedrive.
After each call or conversation:
- The caller is matched by phone number, then email. A new person is created only when neither matches. A caller with no name is filed under their number.
- The person gets a note with the summary, the outcome, the sentiment and any details your agent collected.
- To also log the appointments your agent books, choose Settings on the CRM card and pick an activity type, such as Activity: Meeting, under Where booked appointments go. Each booking becomes an activity on that person.
- To put the whole conversation in each note, turn on Include the full transcript in the note in the same place.
Good to know:
- Pipedrive has no free tags, so there is no Extra tags setting for it. Use the note or a Pipedrive automation instead.
- Adding Pipedrive contacts to an outbound campaign automatically is not available yet. Import them to a campaign as a CSV for now.
- If the card says Needs reconnecting, choose Reconnect and approve access again.
- One Pipedrive company can be connected to one workspace only.
Slack #
Paste a Slack incoming webhook URL and choose the Slack format. A short text message is posted for each event.
Discord #
Paste a Discord channel webhook URL (Channel settings, Integrations, Webhooks) and choose the Discord format. Each event posts one short message with the key facts. Mentions such as @everyone are switched off, so nothing a caller or visitor types can ping your server.
Custom JSON body #
Write your own JSON and use placeholders from the event, such as:
{{data.object.transcript}}{{data.object.caller_name}}{{type}}
A value that is only a placeholder keeps its type, so numbers stay numbers and null stays null.
When to use an automation tool instead #
Choose Zapier, Make or n8n with the Standard format when you need to:
- find or create a contact first
- work with a service that uses expiring OAuth tokens