Lead API
CRM and Connect are different hosts with different API keys.
The path /api/public/leads is the same on both — the hostname is not.
Twin and other agents must POST to the host for the product you use.
Two different endpoints
| Product | Full Lead API URL (different hosts) |
|---|---|
| CRM | POST https://crm.pipelineintel.io/api/public/leads |
| Connect | POST https://connect.pipelineintel.io/api/public/leads |
Get the secret from that product’s Admin → Integrations → Website form → For developers.
Which product are you using?
Choose one to tailor the example below. Secrets are not interchangeable.
Your endpoint
POST https://crm.pipelineintel.io/api/public/leads
Content type: application/json.
One lead per request — for a list, loop and POST each row (typical for a morning agent).
Authentication
Send the workspace API secret in one of these ways:
Authorization: Bearer YOUR_API_SECRET(recommended)X-Lead-Intake-Secret: YOUR_API_SECRET
Also include tenantId (workspace ID) in the JSON body unless you are using
a form embed token (hosted form path — not needed for Twin-style server posts).
Fields
Which fields are required is configured per workspace under Admin → Website form → Form fields. Company is always required. Defaults also require name, email, phone, industry / use case, and seats.
| Pipeline field | Also accepts |
|---|---|
company | company_name, organization, account |
name | contactName, full_name, or first_name + last_name |
email | email_address, contact_email |
phone | phone_number, mobile |
industry | industryUseCase, useCase, use_case |
seats | seatCount, numberOfSeats, seatsNeeded |
message | notes, comments, description |
formName | form, form_id, utm_campaign |
tenantId | Workspace ID from Admin |
Nested customFields, fields, or properties objects
are flattened automatically.
Example
Pick CRM or Connect above to fill the host. Until then, CRM is shown as the sample host — Connect uses a different host from the table.
curl -X POST 'https://crm.pipelineintel.io/api/public/leads' \
-H 'Authorization: Bearer YOUR_API_SECRET' \
-H 'Content-Type: application/json' \
-d '{
"tenantId": "WORKSPACE_ID",
"company": "Acme Logistics",
"name": "Jane Doe",
"email": "jane@acme.example",
"phone": "+12155550100",
"industry": "Freight brokerage",
"seats": "25",
"message": "Interested in Connect + CRM",
"formName": "twin-morning"
}'
Daily lead agents (Twin, Zapier, Make, etc.)
If a tool offers “REST API” or “inbound webhook” to send a morning lead list,
set the destination to the full URL for your product from
Two different endpoints — not only the shared path
/api/public/leads.
- Schedule the agent daily (or whenever leads are ready).
- Use the CRM host or the Connect host — never assume they are the same.
- POST one lead per request; loop the list.
- Map company, name, email, phone, industry, seats, and optional notes.
- Set
formNameto something stable liketwin-morningso reps see the source.
Twin’s own “inbound webhook” usually means something calling Twin to start an agent. For sending leads into Pipeline, Twin should call this Lead API instead.
What happens in Pipeline
- Leads create or match CRM accounts and arrive unassigned.
- Matching email on an existing account logs activity instead of duplicating.
- care@pipeline.care is emailed on every submission (plus any extra addresses you configure).
- Your team also gets in-app Signal alerts.
Website form without coding
Prefer the hosted form? In Admin, copy the form link or website snippet and paste it on your site. No API key in the browser.