The Contact Properties API allows you to create and manage custom fields for contacts. This is essential for Zapier integrations and other automation platforms that need to sync additional data fields from CRMs, e-commerce platforms, and other business systems.
Contact properties are custom fields that extend the default contact schema. Common use cases include storing job titles, company information, lead sources, subscription preferences, and any other business-specific data.
Property Types: STRING, TEXT, EMAIL, URL, PHONE, DATE, NUMBER, INTEGER, BOOLEAN
Base URL: https://api.smashsend.com
Lists all contact properties for the authenticated workspace. Perfect for Zapier integrations to dynamically discover available custom fields.
Query Parameters
type
- Filter by property type (optional)
limit
- Maximum number of properties to return (default: 100)
Request
curl "https://api.smashsend.com/v1/contact-properties" \
-H "Authorization: Bearer YOUR_API_KEY"
Response
{
"properties": {
"items": [
{
"createdAt": "2025-06-04T05:25:48.742Z",
"description": "The unique identifier of the contact",
"displayName": "Email",
"id": "email",
"isInternal": true,
"apiSlug": "email",
"type": "STRING",
"typeConfig": {},
"updatedAt": "2025-06-04T05:25:48.742Z",
"workspaceId": "wrk_ENGTK86JEXXckyDVJthKkPer",
"options": []
},
{
"id": "cpd_SXag0kCw5p4yCrEItHQQHoew",
"apiSlug": "company",
"createdAt": "2025-06-04T05:26:13.716Z",
"description": "Company name of the contact",
"displayName": "Company",
"isInternal": false,
"type": "STRING",
"typeConfig": {},
"updatedAt": null,
"workspaceId": "wrk_ENGTK86JEXXckyDVJthKkPer",
"options": []
}
],
"hasMore": false
}
}
Retrieves details of a specific contact property.
Path Parameters
propertyId
- The unique ID of the contact property (starts with cpd_)
Request
curl "https://api.smashsend.com/v1/contact-properties/cpd_SXag0kCw5p4yCrEItHQQHoew" \
-H "Authorization: Bearer YOUR_API_KEY"
Response
{
"property": {
"id": "cpd_SXag0kCw5p4yCrEItHQQHoew",
"apiSlug": "company",
"displayName": "Company",
"type": "STRING",
"description": "Company name of the contact",
"createdAt": "2025-06-04T05:26:13.716Z",
"typeConfig": {},
"updatedAt": null,
"workspaceId": "wrk_ENGTK86JEXXckyDVJthKkPer",
"options": []
}
}
Creates a new contact property. Essential for setting up custom fields before syncing data from external systems via Zapier.
Request Body Parameters
apiSlug
- Unique identifier for API calls (required, lowercase, no spaces)
displayName
- Human-readable name shown in UI (required)
type
- Data type: STRING, TEXT, EMAIL, URL, PHONE, DATE, NUMBER, INTEGER, BOOLEAN (required)
description
- Optional description for the property
Request
curl -X POST "https://api.smashsend.com/v1/contact-properties" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"displayName": "Lead Source",
"type": "STRING",
"description": "Where this contact was acquired from",
"typeConfig": {}
}'
Response
{
"property": {
"id": "cpd_stu901vwx234",
"apiSlug": "leadSource",
"displayName": "Lead Source",
"type": "STRING",
"description": "Where this contact was acquired from",
"createdAt": "2024-03-21T14:30:00Z",
"typeConfig": {},
"updatedAt": null,
"workspaceId": "wrk_ENGTK86JEXXckyDVJthKkPer",
"options": []
}
}
Updates an existing contact property. Note that the apiSlug and type cannot be changed after creation.
Request
curl -X PUT "https://api.smashsend.com/v1/contact-properties/cpd_SXag0kCw5p4yCrEItHQQHoew" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"displayName": "Company Name",
"description": "Full legal company name of the contact"
}'
Response
{
"property": {
"id": "cpd_SXag0kCw5p4yCrEItHQQHoew",
"apiSlug": "company",
"displayName": "Company Name",
"type": "STRING",
"description": "Full legal company name of the contact",
"createdAt": "2025-06-04T05:26:13.716Z",
"typeConfig": {},
"updatedAt": "2024-03-21T16:45:00Z",
"workspaceId": "wrk_ENGTK86JEXXckyDVJthKkPer",
"options": []
}
}
Permanently deletes a contact property. This will also remove all data stored in this property for all contacts. Use with extreme caution.
Request
curl -X DELETE "https://api.smashsend.com/v1/contact-properties/cpd_SXag0kCw5p4yCrEItHQQHoew" \
-H "Authorization: Bearer YOUR_API_KEY"
Response
{
"deleted": true
}
STRING
Short text values, ideal for names, categories, statuses. Maximum 255 characters.
TEXT
Long text values for descriptions, notes, comments. No character limit.
Email addresses with automatic validation.
URL
Website URLs with automatic validation.
PHONE
Phone numbers with flexible formatting.
DATE
Date values in ISO 8601 format (YYYY-MM-DD).
NUMBER
Decimal numbers for prices, ratings, percentages.
INTEGER
Whole numbers for counts, ages, quantities.
BOOLEAN
True/false values for flags, preferences, statuses.
Once you create contact properties, you can use them in the Contacts API by referencing their apiSlug in the customProperties object:
// Create a contact with custom properties
curl -X POST "https://api.smashsend.com/v1/contacts" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"properties": {
"email": "john.doe@example.com",
"firstName": "John",
"lastName": "Doe",
"company": "ACME Corp",
"jobTitle": "Marketing Manager",
"leadSource": "website",
"isCustomer": true
}
}'
CRM Integration Properties
{
"company": "STRING",
"jobTitle": "STRING",
"industry": "STRING",
"annualRevenue": "NUMBER",
"leadScore": "INTEGER",
"lastContactDate": "DATE",
"isQualified": "BOOLEAN"
}
E-commerce Integration Properties
{
"customerSince": "DATE",
"totalOrders": "INTEGER",
"lifetimeValue": "NUMBER",
"preferredCategory": "STRING",
"isVip": "BOOLEAN",
"lastPurchaseDate": "DATE"
}
Form Integration Properties
{
"formSource": "STRING",
"referralSource": "STRING",
"interests": "TEXT",
"budget": "STRING",
"timeline": "STRING",
"hasOptedInMarketing": "BOOLEAN"
}
400 - Validation Error
{
"statusCode": 400,
"error": "Bad Request",
"message": "apiSlug must be unique and contain only lowercase letters, numbers, and underscores"
}
409 - Property Already Exists
{
"statusCode": 409,
"error": "Conflict",
"message": "A property with this apiSlug already exists"
}