How to push inbound leads from your CRM into Evergrowth, create the account and contact if they do not already exist, and trigger an Evergrowth workflow that researches the contact and generates outreach.
This guide covers one endpoint, workflow/init, which does all of the above in a single call.
What this does
When a lead comes into your CRM, you send one HTTPS request to Evergrowth with the company and contact details. Evergrowth will:
Find or create the account (the company) in your Evergrowth workspace.
Find or create the contact (the person) on that account.
If you include a workflow ID, start that workflow for the contact, which runs research and generates the outreach plays.
It is asynchronous. The request returns immediately once the workflow is accepted. The research and plays are produced by Evergrowth's agents a short time later (typically a couple of minutes).
Before you start
You will need three things from your Evergrowth contact:
Your API token. A bearer token starting with
egt_. Keep it secret; treat it like a password.Your company UUID. Looks like
COfollowed by a string of characters. Your token is bound to this one company, and thecompany_uuidyou send must match it.The workflow ID you want to run for each inbound contact. A number, for example
1058. Ask your Evergrowth contact which workflow is configured for your inbound process.
Confirm with your Evergrowth contact that your token has the ability to call workflow/init. Without it the call returns 403.
The endpoint
POST https://data-hub.evergrowth.com/api/workflow/init
Always use https. A plain http request will be redirected and the body dropped, which surfaces as a connection failure with no response.
Required headers
Authorization: Bearer egt_your_token_here
Content-Type: application/json
Accept: application/json
Note the exact header name Content-Type (with the hyphen). A malformed header name means the body is not parsed as JSON.
The request body
A minimum valid body needs the company, a contact identity, and the workflow to run.
You can identify the contact in one of two ways:
Option A, by LinkedIn URL (Evergrowth enriches the rest automatically):
json
{
"company_uuid": "CO_your_company_uuid",
"workflow_id": 1058,
"contact_linkedin_url": "https://www.linkedin.com/in/jane-doe"
}Option B, by name (use when you do not have a LinkedIn URL):
json
{
"company_uuid": "CO_your_company_uuid",
"workflow_id": 1058,
"account_name": "Acme Inc",
"domain": "https://acme.com",
"contact_first_name": "Jane",
"contact_last_name": "Doe"
}If you omit workflow_id, the account and contact are still created or updated, but no workflow runs.
Field reference
Field | Required | Notes |
| Yes | Must match the company your token is bound to. |
| To run a workflow | Integer. Omit to only upsert the account and contact without running anything. |
| One contact identity required | Either this, or the three name fields below. |
| If no LinkedIn URL | Required when |
| If no LinkedIn URL | Required when |
| Recommended | The company name. |
| Recommended | Send as a full URL, for example |
| Optional | Contact email address. |
| Optional | Contact phone number. |
Optional: passing your CRM record IDs
So that records can be matched back to your CRM later, you can include your CRM type and record IDs:
json
{
"company_uuid": "CO_your_company_uuid",
"workflow_id": 1058,
"contact_first_name": "Jane",
"contact_last_name": "Doe",
"account_name": "Acme Inc",
"domain": "https://acme.com",
"account_crm_type": "your_crm_name",
"account_crm_id": "the_company_record_id",
"contact_crm_type": "your_crm_name",
"contact_crm_id": "the_person_record_id"
}You can also attach custom fields to the account or contact with account_additional_data and contact_additional_data, each an object of string keys to string values.
Full example
bash
curl -sS -X POST https://data-hub.evergrowth.com/api/workflow/init \
-H "Authorization: Bearer egt_your_token_here" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"company_uuid": "CO_your_company_uuid",
"workflow_id": 1058,
"account_name": "Acme Inc",
"domain": "https://acme.com",
"contact_first_name": "Jane",
"contact_last_name": "Doe",
"email": "[email protected]"
}'
What you get back
On success, a 200 response containing the account, the contact, and a confirmation that the workflow was started:
json
{
"account": { "id": "ACO..." },
"contact": { "id": "..." },
"workflow_initiated": true
}The account.id (an ACO... value) is Evergrowth's account identifier. Store it if you want to reference the account in later calls.
If you sent no workflow_id, workflow_initiated comes back empty and nothing runs.
The generated research and plays appear on the contact in Evergrowth a short time after the response, since processing is asynchronous.
Response codes
Code | Meaning | What to do |
200 | Success | Account and contact upserted; workflow started if a workflow ID was sent. |
401 | Bad or missing token | Check the |
403 | Token missing the required ability | Ask your Evergrowth contact to grant the |
422 | Validation error | Read the response body. Common causes: missing contact identity, |
429 | Rate limited | Slow down and retry. |
502 | Workflow failed to start | Account and contact may be created; the workflow did not run. Retry or contact Evergrowth. |
Common pitfalls
These are the things most likely to trip up a first integration:
Use https, never http. An http request loses its body in redirect and looks like a dead connection rather than an error.
Send a contact.
workflow/initrequires either a LinkedIn URL or first and last name. Empty strings do not count as present; a blank value is treated as missing.Format
domainas a URL. Sendhttps://acme.com, notacme.com, or the request is rejected.company_uuidmust match your token. The token is bound to one company; a mismatch is rejected.Get the
Content-Typeheader exactly right. It must readContent-Type: application/json.
Support
For a token, your company UUID, the right workflow ID, or to confirm your token's abilities, contact your Evergrowth representative.
