Bring leads into Sustentus
There are three ways to get leads into Sustentus besides typing them in: a webhook your CRM or automation tool posts to, a lead form on your website, and a CSV import. Whichever way a lead arrives, it gets a request number and follows the same journey as a lead created by hand.
From your CRM or automation tool (webhook)
Your other system sends each lead to Sustentus as a JSON request, signed with a key your admin issues.
Issue a key
- An admin opens Settings → Integrations and generates a webhook key.
- Copy the key straight away: it is shown once and cannot be recovered. If it is lost, generate a new one.
- Put the key in the sending system.
You can hold two active keys at once, so you can switch to a new key before revoking the old one. A revoked key stops working on its next request.
Admins, CSMs, SDMs and vendors can see the endpoint address, the active keys and the recent
deliveries on the Webhook tab of the lead import page (/service-leads/import/webhook).
Vendors reach that page from Leads → Import lead in the sidebar.
Send a lead
POST /api/webhooks/leads
Authorization: Bearer slw_<keyId>_<secret>
Content-Type: application/jsonThe full address, including your platform’s domain, is on the Webhook tab.
{
"externalId": "crm-deal-8823",
"customer": {
"email": "ada@northwind.example",
"firstName": "Ada",
"lastName": "Byron",
"companyName": "Northwind Ltd"
},
"product": "Cloud Migration",
"service": "Readiness Assessment",
"description": "Two-region Azure move, 40 workloads."
}| Field | Required | Notes |
|---|---|---|
customer.email | yes | Attaches the lead to an existing customer, or sets up a new one. |
product | yes | The product’s id, or its name as it appears in your catalogue. |
service | yes | The service’s id, or its name. It must belong to the product. |
externalId | no | Your system’s own id for the lead. Send it: a repeat with the same id creates nothing new. |
customer.* | no | firstName, lastName, companyName, region, country — stored on a new customer. |
skills | no | Up to 20, by id or name. |
description | no | Up to 5,000 characters. |
bidDeadline | no | A date, such as 2026-10-01. |
source | no | Where the lead came from: one of sales, product-trial, customer-success, marketing, partner, website, crm, api, support, professional-services, ai, product-onboarding, in lower case. Anything else is recorded as sales. |
Names are matched without regard to case. If two active records share a name, the request is refused and the reply asks you to send the id instead. The body can be up to 32 KB.
Read the reply
| Status | Meaning |
|---|---|
201 | The lead was created. The reply carries its request number. |
200 | A lead with this externalId was already received. Nothing new was created. |
400 | The body is not valid JSON. |
401 | The key is missing, wrong or revoked. |
413 | The body is over 32 KB. |
422 | One or more fields are invalid. Every invalid field is named in the reply. A customer.email error on a well-formed address means a record your organisation already holds, archived or otherwise, conflicts with it: an admin restores or removes that record, or you send another address. |
429 | The organisation’s invitation limit is reached. Send the same request again after the time in the Retry-After header. |
500 | A fault on our side. Send the same request again. It is safe only when the request carries an externalId: without one, a retry may create a second lead. |
When the customer’s email address already belongs to someone with a Sustentus account, that
person is sent an invitation to your organisation rather than added to it. Each organisation can
send 20 such invitations in any 24 hours through the webhook; the 429 above is that limit.
From your website (lead form)
A form you place on your own website, served by Sustentus. Each enquiry it collects becomes a lead.
- An admin opens Settings → Integrations, switches the lead form on, and picks the products and services it offers.
- Copy one of the two snippets shown there into your website. They carry your platform’s address and your own form key; the examples below show their shape.
The script version sizes itself to the form:
<script
src="https://platform.sustentus.com/embed/lead-form.js"
data-sustentus-form="<formKey>"
async
></script>If your website builder removes <script> tags, use the frame instead. It works everywhere but
keeps a fixed height:
<iframe
src="https://platform.sustentus.com/embed/lead-form/<formKey>"
title="Request a quote"
loading="lazy"
style="width:100%;height:780px;border:0"
></iframe>Rotating the form key in settings stops every copy of the old snippet at once, so update your website when you do it.
Admins, CSMs, SDMs and vendors can see the form’s set-up on the Public form tab of the lead
import page (/service-leads/import/public-form).
From a spreadsheet (CSV import)
Admins, CSMs, SDMs and vendors can import leads from a CSV or Excel file on the Import CSV tab of the
lead import page (/service-leads/import/csv). Vendors reach it from Leads → Import lead in
the sidebar.
- Download the CSV template from the page, or the template with a reference sheet that explains each column.
- Fill in one row per lead. Keep every column of the template, in the template’s order: a file
with columns added, removed or reordered is refused. These columns must have a value:
company name,firstname,lastname,email,product,category,descriptionandregion. Forproduct,category(the service) andregion, use the names your Sustentus catalogue already has. A row naming an inactive product or skill is not imported, and its errors say which one is inactive. - Upload the file, review and correct the rows, then import them.
Contact us
If a lead does not arrive the way you expect, contact the Sustentus team .