Webhooks import
This article explains how to use webhook-based imports to send real-time contact and company data from external tools—like CRMs, signup forms, or internal systems—directly into FirstQuadrant. It covers how to locate your unique webhook URL, the expected data format, field-level documentation, response handling, and integration best practices. You’ll also find examples for using webhooks via Zapier or custom applications. This is the most flexible way to programmatically sync high-quality data into your workspace and trigger AI workflows instantly.
Overview
FirstQuadrant supports webhook-based imports as a powerful way to send contact and company data directly into your workspace in real time. This is particularly useful for integrating external systems such as CRMs, marketing platforms, signup forms, or internal tools with FirstQuadrant.
Webhooks allow you to push data into FirstQuadrant automatically whenever a new contact is created or updated externally.
Where to find your webhook
Navigate to the Imports section in your workspace. From there:
- Click new import
- You will be provided with a webhook URL specific to that import.
- This URL includes a secure hash and should be kept private.
FirstQuadrant provides webhooks as a powerful way to automatically import contacts and companies from external systems. Webhooks allow you to send real-time data to FirstQuadrant whenever new contacts are created in your CRM, marketing automation platform, or any other system.
Webhook URL format
Your webhook URL will follow this format:
Where:
{importId}
is your unique import identifier{hash}
is a secure hash that validates webhook requests
Making webhook requests
Send a POST
request to your webhook URL with a JSON body containing contact and company data. The minimum required structure is:
Complete data structure
You can provide comprehensive contact and company information using the following schema:
Field descriptions
Contact fields
- email (string, nullable): Primary email address
- name (string, nullable): Full name of the contact
- nickname (string, nullable): Common or preferred name
- bio (string, nullable): Description or bio from social media
- avatar (string, nullable): URL to profile picture
- website (string, nullable): Personal website URL
- domain (string, nullable): Domain of personal website
- location (string, nullable): Geographic location
- timeZone (string, nullable): Time zone (e.g., “America/Los_Angeles”)
- social handles: Facebook, GitHub, Instagram, LinkedIn, X (Twitter) handles
- externalIdApollo (string, nullable): External ID from Apollo.io
- note (string, nullable): Additional context or notes
Employment fields
- title (string, nullable): Job title
- seniority (string, nullable): Seniority level (JUNIOR, MID, SENIOR, EXECUTIVE)
- history (array): Work history with start/end dates, organization, and title
Company fields
- name (string, nullable): Legal company name
- nickname (string, nullable): Common or brand name
- bio (string, nullable): Company description
- subtitle (string, nullable): Short company description
- avatar (string, nullable): Company logo URL
- website (string, nullable): Company website URL
- domain (string, nullable): Company domain
- location (string, nullable): Company headquarters location
- timeZone (string, nullable): Company time zone
- social handles: Company social media handles
- financial data: Revenue, employee count, funding information
- industries (array): Industry categories
- languages (array): Languages supported
- stack (array): Technology stack
- tags (array): Custom tags
- externalIdApollo (string, nullable): External ID from Apollo.io
Response format
Successful webhook requests return a JSON response with the created row data:
Error handling
Webhook requests may return the following HTTP status codes:
- 200: Success - Contact imported successfully
- 400: Bad Request - Invalid data format
- 404: Not Found - Invalid webhook URL or hash
- 429: Rate Limited - Too many requests
- 500: Internal Server Error - Server error
Best practices
Data quality
- Always provide an email address when possible
- Use consistent formatting for names and company information
- Include relevant social media handles for better enrichment
- Add notes to provide context about the contact
Rate limiting
- Implement exponential backoff for failed requests
- Don’t send duplicate data for the same contact
- Batch multiple contacts when possible
Security
- Keep your webhook URL and hash secure
- Use HTTPS for all webhook requests
- Validate data before sending to FirstQuadrant
Monitoring
- Monitor webhook response codes
- Set up alerts for failed webhook requests
- Track the number of contacts imported via webhooks
Integration examples
Zapier integration
- Create a new Zap with your trigger app
- Add FirstQuadrant as an action
- Use the webhook URL as the endpoint
- Map your trigger data to the webhook payload
Custom application
Additional notes
- Notes added via webhook are treated the same way as manual notes.
- These notes are processed by FirstQuadrant’s AI to guide next-step decisions in conversation workflows.
- To fine-tune how notes are handled, visit Fine-Tune Settings in your workspace.