Skip to content

Webhooks

Creating Contacts via a Webhook

You can connect external sources (such as lead generation platforms, marketing tools, or website forms) to automatically create new contacts in Swivel. This integration sends contact data into Swivel, ensuring that new leads or signups are captured in your CRM without manual entry.

When the contact is created, Swivel replies with the new contact’s ID, like this:

{"id": "3f0c1b2a-9d4e-4c7f-8a21-5b6d7e8f9a01"}

Your provider should save that ID. It is needed later to update the same contact.

This guide walks you through how to set up these connections so contacts are created seamlessly from outside systems.

Swivel uses an API key to securely receive lead data from external sources.

  1. Log in to Swivel as an owner.
  2. Navigate to Settings → API Keys.
  3. Select + New API Key on the top right of the page
  4. Enter the desired name to help identify the key in the API Key Name field.
  5. Select the Generate API Key button
  6. Hover over the key and select the Copy button to copy the key to your clipboard.

If your lead source sends data via a webhook:

  1. Open your lead source’s integration settings.

  2. Paste your CRM API key when asked for authentication.

    1. Use x-api-key as the header key name.
  3. Use a POST request to the following endpoint URL:
    ​**https://swivelcrm.io/api/webhook/v1/contacts**

  4. Define the data to send in the request body by using the available parameter keys from our Swivel Supported Fields table below. The endpoint accepts JSON and form-urlencoded data.

  5. Test the webhook with a sample lead submission.

Swivel FieldParameter KeyImportant Notes About Values
IdidThis id is randomly generated in Swivel when the contact is created via the webhook.
To allow for your contact to update via the webhook, this ID must be included. See this page for more details.
First Namefirst_nameRequired. The contact will not be created without it. Both First Name and Last Name must be provided.
Middle Namemiddle_name
Last Namelast_nameRequired. The contact will not be created without it. Both First Name and Last Name must be provided.
SuffixsuffixMust be a Swivel-supported suffix: “Jr.”, “Sr.”, “I”, “II”, “III”, “IV”
Include the full stop on Jr. and Sr. (“Jr” on its own is not recognized.) Capitalization does not matter.
Salutationsalutation
Nicknamenickname
Marital Statusmarital_statusSwivel supports the following marital statuses: single, married, divorced, separated, domestic_partnership, widowed
Note the underscore in domestic_partnership. Written as two separate words it will not be recognised and the field will be left blank.
Marital Status Effective Datemarital_status_onMust be one of the following formats:
• MM/DD/YYYY
• MM-DD-YYYY
BirthdatebirthdateMust be one of the following formats:
• MM/DD/YYYY
• MM-DD-YYYY
GendergenderSwivel only supports male or female
If the gender is not supported by Swivel, the field will be left blank on the contact.
SSNssn
Medicare Numbermedicare_number
DeceaseddeceasedSend true or false.
Leaving the field blank, or sending false or 0, leaves the contact unmarked. Any other value (including the word “no”) will mark the contact. Make sure your source sends true and false rather than words like yes and no.
If a contact has been marked by mistake, only sending false will un-mark them. Sending a blank value leaves the mark in place.
Date of Deathdeath_dateMust be one of the following formats:
• MM/DD/YYYY
• MM-DD-YYYY
Job Titlejob_title
Do Not Contactdo_not_contactSend true or false.
Leaving the field blank, or sending false or 0, leaves the contact unmarked. Any other value (including the word “no”) will mark the contact. Make sure your source sends true and false rather than words like yes and no.
If a contact has been marked by mistake, only sending false will un-mark them. Sending a blank value leaves the mark in place.
Client Sinceclient_sinceMust be one of the following formats:
• MM/DD/YYYY
• MM-DD-YYYY
Personal Notepersonal_note
Countycounty
Email Addressemail
Phone Numberphone_number
Address Line1address_line1
Address Line2address_line2
Citycity
Statepostal_stateMust be the standardized 2 letter state abbreviation
Zip Codepostal_code
Countrycountry
Contact Categorycontact_categoryIf included, we will look for an existing contact category match in Swivel or create a new one with the category provided.
If no contact category is provided, then the category will default to Unspecified
Contact Statuscontact_statusIf included, we will look for an existing contact status match in Swivel or create a new one with the status provided
If no contact status is provided, then the status will default to New
Contact Typecontact_typeIf included, we will look for an existing contact type match in Swivel or create a new one with the type provided
If no contact type is provided, then the type will default to Individual
Lead Sourcelead_sourceIf one is included, we will look for an existing matching record or create a new one with the lead source provided
OfficeofficeIf one is included, we will look for an existing matching record or create a new one with the office provided
Campaigncampaign_nameCampaign name and/or event name is required for any campaign- and event-specific fields.
If no campaign name is provided, Swivel will create one that matches the event name.
Eventevent_nameCampaign name and/or event name is required for any campaign- and event-specific fields.
If no event name is provided, Swivel will create one that matches the campaign name, and it will create a new event for every contact sent this way.
To keep contacts together on a single event, always send an event name or a Marketing Event Source Key as well as the campaign name.
Campaign Typecampaign_typeIf included, we will look for a campaign type match in Swivel or create a new one with the campaign type provided.
If no campaign type is provided, then it will default to Unspecified.
Campaign Source Keycampaign_source_keyUniquely identify campaigns with external key.
Helps users that have potential campaigns with the same name.
Marketing Event Source Keymarketing_event_source_keyUniquely identify marketing events with external key
Helps users that have potential events with the same name.
Marketing Event Typemarketing_event_typeIf included, we will look for an event type match in Swivel or create a new one with the event type provided.
If no event type is provided, then it will default to Unspecified.
Assigned toassigned_toName of Agent assigned to the contact
If included, we will look for an agent match in Swivel.
If we can’t find a matching agent record in Swivel, no agent will be assigned to the contact.
Referred byreferred_byName of a contact
If we can’t find a matching contact record in Swivel, we will not create a new one.
TagstagsAn array of tag names, or a single comma-separated string.

Ensure that each piece of data from your lead source matches the correct field in your CRM:

  • Contact details (Name, Email, Phone)
  • Company or organization name
  • Campaign or source details
  • Custom attributes (e.g., product interest, region)

Run a test lead submission and verify the data populates correctly.

Before launching your integration:

  • Check for duplicate records.
  • Validate email addresses and phone numbers.
  • Review field formats (especially for ZIP codes and dates).

After setup:

  1. Submit a few test contacts
  2. Confirm they appear in Swivel within seconds or minutes.
  3. Verify that the fields populate correctly and any configured automations trigger correctly.
  4. Review activity logs to ensure the integration is stable.

If leads fail to sync, double-check your API key, endpoint URL, and data mappings.

View our Common Webhook Integrations page to see commonly used applications with Swivel.