The Contacts API allows you to manage contacts in your SMASHSEND account. This API is commonly used by Zapier developers and other integration platforms to sync contact data, create automated workflows, and manage customer information across different systems.
Base URL: https://api.smashsend.com
All API requests must include your API key in the Authorization header. You can manage your API keys in your SMASHSEND dashboard under Settings → API.
Authorization: Bearer sk_live_abc123...
Rate Limits: API requests are limited to ensure service reliability. For Zapier integrations, we recommend using webhook triggers instead of polling for real-time updates.
Lists contacts for the authenticated workspace with cursor-based pagination. Perfect for Zapier “New Contact” triggers and bulk contact synchronization.
Query Parameters
limit
- Number of contacts to return (default: 15, max: 100)
cursor
- Pagination cursor for getting next page
sort
- Sort order: “createdAt.desc” or “createdAt.asc” (default: “createdAt.desc”)
search
- Search contacts by email, name, or phone
status
- Filter by status: “SUBSCRIBED”, “UNSUBSCRIBED”, or “BANNED”
includeCount
- Include total count in response (boolean)
Request
curl "https://api.smashsend.com/v1/contacts?limit=15&sort=createdAt.desc" \
-H "Authorization: Bearer YOUR_API_KEY"
Response
{
"contacts": {
"cursor": "MjAyNS0wNi0wMlQwMDoyMDoxNS42OTVa",
"hasMore": true,
"items": [
{
"id": "ctc_L10vZx0SFrmzKkHwWjoLYSIf",
"createdAt": "2025-06-02T00:35:15.593Z",
"updatedAt": "2025-06-04T04:13:20.114Z",
"properties": {
"avatarUrl": null,
"birthday": null,
"city": null,
"countryCode": "DZ",
"email": "contact@example.com",
"firstName": "John",
"language": null,
"lastName": "Doe",
"phone": "",
"status": "SUBSCRIBED",
"company": "ACME Corp"
},
"workspaceId": "wrk_ENGTK86JEXXckyDVJthKkPer"
}
],
"totalCount": 11
}
}
Retrieves a specific contact by ID. Useful for Zapier “Find Contact” actions and getting detailed contact information.
Path Parameters
contactId
- The unique ID of the contact (starts with “ctc_”)
Request
curl "https://api.smashsend.com/v1/contacts/ctc_abc123def456" \
-H "Authorization: Bearer YOUR_API_KEY"
Response
{
"contact": {
"id": "ctc_E7g1zoXJEAkWvgN0yMEIuPOM",
"createdAt": "2025-06-04T05:26:19.247Z",
"updatedAt": "2025-06-04T05:26:20.454Z",
"properties": {
"avatarUrl": "https://storage.googleapis.com/zootools-beta/workspaces/wrk_ENGTK86JEXXckyDVJthKkPer/contacts/ctc_E7g1zoXJEAkWvgN0yMEIuPOM/avatar",
"birthday": null,
"city": null,
"countryCode": null,
"email": "test2@example.com",
"firstName": "Test2",
"language": null,
"lastName": "User2",
"phone": null,
"status": "SUBSCRIBED",
"company": "ACME Corp"
},
"workspaceId": "wrk_ENGTK86JEXXckyDVJthKkPer"
}
}
Creates a new contact. This is the most common endpoint used by Zapier integrations to add contacts from other platforms like forms, CRMs, and e-commerce systems.
Request Body Parameters
Important: All contact data must be wrapped in a properties
object.
properties.email
- Contact’s email address (required, must be unique)
properties.firstName
- Contact’s first name (optional)
properties.lastName
- Contact’s last name (optional)
properties.phone
- Contact’s phone number with country code (optional)
properties.avatarUrl
- URL to contact’s profile photo (optional)
properties.countryCode
- Two-letter ISO country code like “US” (optional)
properties.*
- Any custom properties as key-value pairs within the properties object
Request
curl -X POST "https://api.smashsend.com/v1/contacts" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"properties": {
"email": "jane.smith@example.com",
"firstName": "Jane",
"lastName": "Smith",
"phone": "+1987654321",
"countryCode": "US",
"company": "Zapier Inc",
"jobTitle": "Developer",
"leadSource": "zapier_integration"
}
}'
Response
{
"contact": {
"id": "ctc_B7OSYsnTUVwBPOGrgYTjvSGS",
"createdAt": "2025-06-04T05:25:54.134Z",
"updatedAt": null,
"properties": {
"avatarUrl": null,
"birthday": null,
"city": null,
"countryCode": null,
"email": "test@example.com",
"firstName": "Test",
"language": null,
"lastName": "User",
"phone": null,
"status": "SUBSCRIBED"
},
"workspaceId": "wrk_ENGTK86JEXXckyDVJthKkPer"
}
}
Updates an existing contact. Commonly used in Zapier workflows to sync updated information from other systems.
Request
curl -X PUT "https://api.smashsend.com/v1/contacts/ctc_abc123def456" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"properties": {
"firstName": "John",
"lastName": "Doe Jr.",
"company": "New Company Inc",
"jobTitle": "Senior Manager"
}
}'
Response
{
"contact": {
"id": "ctc_abc123def456",
"createdAt": "2024-03-20T12:00:00Z",
"updatedAt": "2024-03-21T14:45:00Z",
"properties": {
"avatarUrl": "https://example.com/avatar.jpg",
"birthday": null,
"city": null,
"countryCode": "US",
"email": "john.doe@example.com",
"firstName": "John",
"language": null,
"lastName": "Doe Jr.",
"phone": "+1234567890",
"status": "SUBSCRIBED",
"company": "New Company Inc",
"jobTitle": "Senior Manager",
"leadSource": "website"
},
"workspaceId": "wrk_ENGTK86JEXXckyDVJthKkPer"
}
}
Permanently deletes a contact. Use with caution as this action cannot be undone.
Request
curl -X DELETE "https://api.smashsend.com/v1/contacts/ctc_abc123def456" \
-H "Authorization: Bearer YOUR_API_KEY"
Response
{
"deleted": true
}
Search for contacts by email address. Perfect for Zapier “Find Contact” actions before creating or updating.
Query Parameters
email
- Email address to search for (required)
Request
curl "https://api.smashsend.com/v1/contacts/search?email=john.doe@example.com" \
-H "Authorization: Bearer YOUR_API_KEY"
Response
{
"contact": {
"id": "ctc_abc123def456",
"createdAt": "2024-03-20T12:00:00Z",
"updatedAt": "2024-03-20T12:00:00Z",
"properties": {
"avatarUrl": null,
"birthday": null,
"city": null,
"countryCode": null,
"email": "john.doe@example.com",
"firstName": "John",
"language": null,
"lastName": "Doe",
"phone": null,
"status": "SUBSCRIBED",
"company": "ACME Corp"
},
"workspaceId": "wrk_ENGTK86JEXXckyDVJthKkPer"
}
}
The API uses standard HTTP status codes. Common error responses:
400 - Bad Request
{
"statusCode": 400,
"error": "Bad Request",
"message": "Invalid email format"
}
404 - Not Found
{
"statusCode": 404,
"error": "Not Found",
"message": "Contact not found"
}
409 - Conflict
{
"statusCode": 409,
"error": "Conflict",
"message": "Contact with this email already exists"
}
Custom properties allow you to store additional data with contacts. They're commonly used to sync data from CRMs, e-commerce platforms, and other business tools via Zapier.
Before using custom properties in API calls, you need to create them in your SMASHSEND dashboard or via the Contact Properties API. See the Contact Properties API documentation for more details.
Common Custom Property Examples
{
"properties": {
"email": "contact@example.com",
"firstName": "John",
"lastName": "Doe",
"company": "ACME Corp",
"jobTitle": "Marketing Manager",
"leadSource": "website",
"industry": "Technology",
"annualRevenue": "100000",
"isCustomer": true,
"lastPurchaseDate": "2024-03-15"
}
}
CRM Integration Properties
{
"properties": {
"email": "contact@example.com",
"firstName": "John",
"lastName": "Doe",
"company": "ACME Corp",
"jobTitle": "Marketing Manager",
"industry": "Technology",
"annualRevenue": 250000,
"leadScore": 85,
"lastContactDate": "2024-03-15",
"isQualified": true,
"salesRep": "John Smith",
"dealStage": "Proposal"
}
}
E-commerce Integration Properties
{
"properties": {
"email": "customer@example.com",
"firstName": "Jane",
"lastName": "Smith",
"customerSince": "2023-06-15",
"totalOrders": 12,
"lifetimeValue": 1850.00,
"preferredCategory": "Electronics",
"isVip": true,
"lastPurchaseDate": "2024-03-10",
"loyaltyTier": "Gold",
"averageOrderValue": 154.17
}
}
Form Integration Properties
{
"properties": {
"email": "lead@example.com",
"firstName": "Mike",
"lastName": "Johnson",
"formSource": "Contact Us Page",
"referralSource": "Google Ads",
"interests": "Email marketing, automation, analytics",
"budget": "$1000-5000",
"timeline": "Next 3 months",
"hasOptedInMarketing": true,
"companySize": "50-200 employees",
"currentTool": "Mailchimp"
}
}
1. Use “Search then Create” Pattern
Always search for existing contacts by email before creating new ones to avoid duplicates.
2. Leverage Custom Properties
Use custom properties to sync additional data from your source systems like CRM fields, e-commerce data, or form responses.
3. Handle Rate Limits
For bulk operations, consider using batch endpoints or implementing delays between requests.
4. Use Webhooks for Real-time Updates
Instead of polling for changes, set up webhooks to get notified when contacts are created, updated, or deleted.