Website Form Integration
Use this API to send leads from your website or landing page contact/enquiry forms directly into Abstract One CRM. When a visitor submits a form on your site, your frontend or backend should call this endpoint to create the lead in CRM with the correct project, campaign, and sub source mapping.
This is a global API endpoint. Your CRM account is identified using the x-api-key header — no client-specific configuration is required in the URL itself.
Prerequisites
Before integrating your website form, make sure you have the following values ready from your Abstract One CRM account:
- API Key — required in every request header. See Generate API Key.
- Project ID — the project where the lead should be stored. See Get Project ID.
- Campaign ID — the campaign linked to that project. See Get Campaign ID.
- Sub Source — identifies which website or landing page the lead came from. See Get Sub Source.
Important: ThecampaignIDmust belong to the same project as theprojectIDyou pass in the request. Thesub_sourcevalue must exactly match a sub source name configured in your CRM under the Website source.
Endpoint
POST https://app.abstractone.in/api/website-lead-create
Request headers
Include these headers in every API request:
| Header | Value | Description |
|---|---|---|
x-api-key | your_api_key_here | Your API key from CRM. See Generate API Key. |
Accept | application/json | Expected response format |
Content-Type | application/json | Request body format |
Request body
Send lead data as a JSON object in the request body.
Required fields
| Field | Type | Description |
|---|---|---|
name | string | Lead full name |
mobile_number | string | 10-digit Indian mobile number (starts with 6–9). Country code and spaces are stripped automatically — only the last 10 digits are used. |
projectID | string | Project ID from CRM (e.g. AAP002) |
campaignID | string | Campaign ID from CRM (e.g. AAC001). Must belong to the selected project. |
sub_source | string | Sub source name from CRM (e.g. landing page or website form name). See Get Sub Source. |
Optional fields
| Field | Type | Description |
|---|---|---|
email | string | Lead email address |
alternate_number | string | Alternate mobile number (10 digits, must differ from mobile_number) |
profession | string | Lead profession or occupation |
location | string | Lead city or location |
notes | string | Additional enquiry details or message from the form |
utm_id | string | UTM ID from the page URL |
utm_campaign | string | UTM campaign parameter |
utm_source | string | UTM source parameter |
utm_medium | string | UTM medium parameter |
utm_term | string | UTM term parameter |
gclid | string | Google Click ID from the page URL |
fbclid | string | Facebook Click ID from the page URL |
visitor_ip | string | Visitor IP address |
Example request
curl --location 'https://app.abstractone.in/api/website-lead-create' \
--header 'x-api-key: your_api_key_here' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{
"name": "Rahul Sharma",
"mobile_number": "9876543210",
"alternate_number": "9123456780",
"email": "rahul@example.com",
"profession": "Software Engineer",
"projectID": "AAP002",
"campaignID": "AAC001",
"sub_source": "Abstract Next Landing Page",
"location": "Mumbai",
"notes": "Interested in 2BHK unit",
"utm_source": "google",
"utm_medium": "cpc",
"utm_campaign": "summer_launch",
"utm_term": "2bhk flats kalyan",
"gclid": "CjwKCAiA...",
"visitor_ip": "103.21.244.0"
}'
Success response
HTTP 200
{
"status": true,
"message": "Lead created successfully",
"data": { }
}
The data object contains the created lead details from CRM.
Error responses
| HTTP Status | Message | Cause |
|---|---|---|
401 | API Key missing | x-api-key header not provided |
401 | Invalid API credentials | API key is incorrect or inactive |
404 | Client not found | API key does not map to a valid CRM account |
422 | Sub source not found | sub_source name does not exist in CRM under Website source |
422 | Project not found | projectID does not exist in CRM |
422 | Campaign not found | campaignID does not exist in CRM |
422 | Lead already exists | Duplicate mobile number for the same project (when duplicacy mode is set to ignore) |
500 | Error message | Unexpected server error during lead creation |
Integration flow
- A visitor fills out a contact or enquiry form on your website or landing page.
- Your form handler collects the lead data and any UTM / tracking parameters from the page URL.
- Send a POST request to this API with
projectID,campaignID,sub_source, andx-api-key. - Use a unique
sub_sourcevalue per website or landing page so leads can be tracked by source in CRM. See Get Sub Source for how to find or set up sub sources. - Abstract One CRM creates the lead and assigns it based on your pipeline rules.
Duplicate leads
Abstract One checks for existing leads with the same mobile number within the same project. Behaviour depends on your CRM Lead Duplicacy setting:
- Ignore — duplicate leads are rejected with a
422response. - Create — a new lead is created and marked as repeated.
- Merge — a new lead is created and linked to the original parent lead.
Testing
Before going live, submit a test form on your website or send a test API request with sample data. Verify the lead appears in CRM under the correct project, campaign, and sub source with any UTM parameters captured.