Related Apps
Advanced AI Analytics & AutomationsDescription
It’s possible to automate sending the transcript from your note taker to Streamlined Analytics, here’s how.
Status
Completed
This guide assumes that you are using Read.ai as your meeting note taker. For other note takers, this process will vary.
For instance, Fathom doesn’t offer a direct webhook integration and would instead require using a Zapier account.
Create Webhook Integration
In your Read.ai integrations settings, configure a webhook endpoint.
Create Webhook Endpoint
This will be done in a HighLevel workflow.
- Add the “Inbound Webhook” trigger
- Copy the URL, and paste it into your Read.ai webhook destination
- Hit “Send test” in Read.ai to send a mapping reference to GHL
- You should end up with a mapping reference like so:
Workflow Structure
Custom Code: Extract Contact’s Email
// Enter emails or domains that are for you or your team
// This will be filtered out, so we can find the contact's email
const team_emails = ["youremail@gmail.com", "@companydomain.com"];
output = { email: null };
for (const participant of inputData.participants) {
if (!participant.email || team_emails.includes(participant.email)) {
continue;
} else {
// If this email doesn't contain one of the values from above,
// We know we found the contact's email so we'll search for it
output = { email: participant.email };
}
}
return;Find Contact
Format Transcript
const utterances = inputData.speaker_blocks || []
// Defensive checks
if (utterances.length === 0) {
output = {
transcript: null,
duration: null,
link: null
}
return
}
// Create full transcript
let transcript = ""
for (const utterance of utterances) {
transcript += `${utterance.speaker.name}: "${utterance.words}"\n\n`
}
// Note must be less than 65,000 characters
if (transcript.length > 63000) {
transcript = transcript.slice(0, 63000)
transcript += "...\n\n Transcript truncated."
}
// Calculate total duration
const first_speaker_start_seconds = Number(utterances[0].start_time)
const total_utterances = utterances.length
const last_speaker_end_seconds = Number(utterances[total_utterances - 1].end_time)
const total_duration_seconds = last_speaker_end_seconds - first_speaker_start_seconds
const total_duration_minutes = total_duration_seconds / 60
const rounded_duration = Math.max(1, Math.round(total_duration_minutes))
// Return output
output = {
transcript: transcript,
duration: rounded_duration,
link: inputData.recording_url
}Save to Notes
Then, to make sure the system can find this note:
In your AI configuration:
Frequent Questions
‣
Do you offer custom development work?
‣
Should I install your app at the agency level or location level?
‣
What’s your support like?
‣
How do I install your app?
‣
Do you offer a free trial?
‣
Can I request a feature or product?
‣
Are there any usage limits on your apps?
‣
Can I use your app on multiple accounts?
‣
How do I uninstall the app?
Need to Get in Touch?
If you have any questions, concerns, or ideas, I’d love to hear them!
Visit the page below to book a call or get in touch right away.