Ingest end user data from a CRM webhook
curl --request POST \
--url https://app.herondata.io/api/ingestion/crm/{crm_integration_heron_id} \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"start_workflow": false
}
'import requests
url = "https://app.herondata.io/api/ingestion/crm/{crm_integration_heron_id}"
payload = { "start_workflow": False }
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({start_workflow: false})
};
fetch('https://app.herondata.io/api/ingestion/crm/{crm_integration_heron_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.herondata.io/api/ingestion/crm/{crm_integration_heron_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'start_workflow' => false
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.herondata.io/api/ingestion/crm/{crm_integration_heron_id}"
payload := strings.NewReader("{\n \"start_workflow\": false\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.herondata.io/api/ingestion/crm/{crm_integration_heron_id}")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"start_workflow\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.herondata.io/api/ingestion/crm/{crm_integration_heron_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"start_workflow\": false\n}"
response = http.request(request)
puts response.read_body{
"end_user_heron_id": "<string>"
}API Reference
Ingest end user data from a CRM webhook
Receives a webhook payload from a CRM integration and syncs the end user via the ingestion pipeline. Per-CRM payload shapes are parsed by the matching CRM client; only the generic ingestion controls documented below are read directly here.
POST
/
api
/
ingestion
/
crm
/
{crm_integration_heron_id}
Ingest end user data from a CRM webhook
curl --request POST \
--url https://app.herondata.io/api/ingestion/crm/{crm_integration_heron_id} \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"start_workflow": false
}
'import requests
url = "https://app.herondata.io/api/ingestion/crm/{crm_integration_heron_id}"
payload = { "start_workflow": False }
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({start_workflow: false})
};
fetch('https://app.herondata.io/api/ingestion/crm/{crm_integration_heron_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.herondata.io/api/ingestion/crm/{crm_integration_heron_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'start_workflow' => false
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.herondata.io/api/ingestion/crm/{crm_integration_heron_id}"
payload := strings.NewReader("{\n \"start_workflow\": false\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.herondata.io/api/ingestion/crm/{crm_integration_heron_id}")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"start_workflow\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.herondata.io/api/ingestion/crm/{crm_integration_heron_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"start_workflow\": false\n}"
response = http.request(request)
puts response.read_body{
"end_user_heron_id": "<string>"
}Authorizations
Path Parameters
Heron ID of the CRM integration
Body
application/json
When true, entity data nudges the policy workflow only if no files are saved. Saved files start the workflow through their classification pipeline. Broker callers omit it because their submission trigger owns workflow progress.
Response
End user successfully ingested
Was this page helpful?
⌘I