Before you build, make sure you have:
- your organization API key
- the custom CRM integration turned on for your organization: email support@salesask.com, and tell us whether to match recordings by time or by location
- every rep added to Sales Ask with the same email address they use in your CRM
Send appointments
Call the API from each place your CRM creates, edits, or deletes an appointment, so Sales Ask always has the same schedule as your CRM.POST creates the appointment, or updates it when Sales Ask already has that event_id. You can send the full appointment every time it changes.
Appointment fields
string
required
Your CRM’s ID for the appointment. Send it as a string. You use it to update or delete the appointment, and it comes back in every webhook.
string
required
Email of the rep who owns the appointment. It must match a member of your Sales Ask organization.
string
required
Start time in UTC, ending in
Z or +00:00, for example 2026-03-01T14:00:00.000Z. Other offsets and Unix timestamps are rejected.string
End time in UTC.
string
Appointment title, shown to the rep.
object
The customer the appointment is with.
Examples
- Create
- Reschedule
- Cancel
- Look up
201 with the saved appointment, whether it was new or updated:If a request fails
How Sales Ask uses your appointments
The link between a recording and an appointment is how your
event_id gets back to you, so keep appointments current when they move. When two appointments are equally close, Sales Ask lets the rep choose. Reps can also pick or change the appointment themselves. The app shows each rep’s appointments from the past 30 days and the next 7.
Get results back
Sales Ask doesn’t write into your CRM. It posts each result to a URL you choose, and your CRM saves it.Add a webhook
1
Create it
In Sales Ask, go to Settings → Webhooks, add a webhook, and enter your endpoint URL. Set Trigger to All Sources.
2
Pick events
Under Events, select the events below. Most integrations select all three.
3
Choose extracted fields (optional)
Under Custom Payloads, add what Sales Ask should pull from each conversation, such as budget, design preferences, or reason to buy.
4
Turn it on
Make sure the webhook is Active, and save.
What you receive
string
The
event_id you sent. Use it to find the appointment in your CRM. If data.integration is null, the recording wasn’t linked to an appointment.object
The customer you sent with the appointment. For
client.created, entity holds what the rep entered instead, such as name, email, design, and community.string
AI notes and action items, as plain text.
object
Your sales process questions, the rep’s answers, and a summary.
processFollowed, processMissed, and processTotal count them. critical_step holds the answer to your critical step question, if you have one.object
Each group you set up under Custom Payloads has its own key, such as
buyerProfile above.string
Link to the recording in Sales Ask. For the transcript and audio, call
GET /v1/recordings/{id} and GET /v1/recordings/{id}/transcript.Handling deliveries
- Verify the sender: every webhook carries your organization API key in the
x-api-keyheader. Reject requests where it doesn’t match. - Reply within 10 seconds with any
2xxstatus, and do slow work afterwards. Don’t redirect. - No retries: a missed delivery isn’t sent again. Fetch the recording with
GET /v1/recordings/{id}to catch up. - Automatic shut-off: a
410response turns the webhook off at once, and repeated404s over three days do too. Turn it back on in Settings → Webhooks.
Go-live checklist
1
Send a test appointment
Create an appointment for a rep about 20 minutes from now. Check that it shows in their app and the reminder arrives.
2
Record against it
Have the rep record a short conversation at the appointment time.
3
Check the webhook
When processing finishes, confirm your endpoint got
recording.processed with your event_id in data.integration.entity.eventId.4
Clean up
Delete the test appointment with
DELETE /v1/scheduled-tasks/{event_id}.Troubleshooting
Recordings aren't linking to appointments
Recordings aren't linking to appointments
Check that the rep’s Sales Ask email matches the
user_email you sent, that the recording started within an hour of the appointment, and that you send customer.id. If you match by location, check customer.location is a full street address.The webhook never arrives
The webhook never arrives
Check the webhook is Active and subscribed to the event, and that Trigger is All Sources. If the rep created the client in Sales Ask, you get
client.created, not recording.processed.Reps don't get reminders
Reps don't get reminders
The rep must be signed in to the mobile app with notifications on, and the appointment must start in the future when you send it.
Still stuck?
Still stuck?
Email support@salesask.com with your organization name, the request you sent (without your API key), the response, and the
event_id or recording id.
