Webhooks

Edited

In addition to pre-build connectors with most popular association platforms, PropFuel offers webhooks that allow you to sync contacts from an external system with your PropFuel as well as write data back to any system or integration platform of your choice.

The webhoook connector can be installed by navigating to Settings -> Advanced -> Connectors in your PropFuel admin and selecting "Webhook" from the list of available connectors.

Contact Sync

Contact sync is done by making a JSON POST call to a URL that will be provided to you in your connector settings.  Detailed instructions and keys are located in the PropFuel admin.

You can send one or more contacts in your webhook payload, up to 1000 in one request.  The JSON object you send can contain any combination of keys, you will specify what keys to use to store data in PropFuel custom fields by configuring a field mapping on your webhook connector.

Authentication

In order to use the webhook, you should authenticate your request by including the bearer token value:

Authorization: Bearer YUHlahEf4ooLDLfCXNqiTZVFCxgNzKht

Headers

Make sure you have the following content type header set on every request:

Content-Type: application/json

Request

You will make an HTTP POST request to the following URI:

https://webhook.com/webhook/connector/XXX/contacts

Payload

You may send a single contact as your payload:

{
    "id": "9499a5a2-8bac-33b5-b8f2-ebbd8daa0cce",
    "name": "dolor quo eaque",
    "email": "clara.hauck@example.com"
}

You may also send an array of contacts as your payload:
Note: Limit of 1000 contacts per HTTP request.

[
    {
        "id": "f4f66530-fbf1-32e2-b628-208415ad6ca5",
        "name": "incidunt ea quae",
        "email": "selmer.legros@example.net"
    },
    {
        "id": "58101544-d736-3a46-9872-ff231d5597cc",
        "name": "consequuntur neque vel",
        "email": "nicolas.theodora@example.com"
    }
]

 

Fire Webhook Action

As part of your campaign configuration, you can setup workflows that calls a specified webhook endpoint when someone answers a question.  This is useful for tying PropFuel together with other workflow tools such as Zapier, or for creating your own webhook endpoint that captures and processes the PropFuel webhook calls.

Screenshot 2023-11-30 at 3.46.33 PM.png

Options

  • URL: The full url of the endpoint you would like to call

  • HTTP Method: GET or POST

  • Headers: An array of optional headers you would like to send with your request.  This is useful for implementing authentication on your calls using an API key

Payload

The payload of the webhook call will contain an object representing the question that was answered by the contact.

Key fields include

  • rating - This will be filled if the question contains a ratable response (1-5, 1-10 or NPS)

  • selection - This will be filled if the question contains a multiple choice selection (single select)

  • response - This will be filled if there is a free text response

  • answered_at - Timestamp when the question was answered

There are also a few useful related objects contained in the response

  • contact - Details for the contact who answered the question

  • question - Details on the question that was asked

  • campaign - Details on the PropFuel campaign the question was asked in

Sample Payload

{
  "id": 3,
  "org_id": 10,
  "question_type": "survey",
  "response_type": "yesno",
  "answered": true,
  "answered_anon": false,
  "answered_at": "2023-11-30T20:55:12+00:00",
  "rating": null,
  "selection": "Yes",
  "response": "Please call me",
  "moderated": false,
  "calc_sentiment": "Neutral",
  "created_at": "2023-11-30T20:55:03+00:00",
  "updated_at": "2023-11-30T20:55:14+00:00",
  "contact": {
    "id": 23399,
    "org_id": 10,
    "name": "Cameron Aubuchon",
    "email": "cameron@propfuel.com",
    "image_url": "https://s3.amazonaws.com/images.app.propfuel.com/user/1/KsM1tlraoRYHo0Lh66FHHF8WfQohKALJjLCcSeuf.jpeg",
    "unsubscribed_email": false,
    "bounced_email": false,
    "created_at": "2023-11-22T22:30:43+00:00",
    "updated_at": "2023-11-22T22:30:43+00:00",
    "fields": [
      {
        "id": 978756,
        "org_id": 10,
        "org_field_id": 25,
        "org_field": {
          "id": 25,
          "name": "Title",
          "type": "text",
          "entity": "text",
          "default": "text",
          "created_at": "2018-12-20T20:34:56+00:00",
          "updated_at": "2021-06-30T21:36:06+00:00"
        },
        "value": "test",
        "contact_id": 23399,
        "checkin_id": null,
        "created_at": "2023-11-30T21:07:06+00:00",
        "updated_at": "2023-11-30T21:07:06+00:00"
      }
    ],
    "contact_integrations": [
      {
        "id": 121328,
        "contact_id": 23399,
        "integration_id": 943,
        "integration": {
          "id": 943,
          "org_id": 10,
          "ready": 1,
          "system": "webhook",
          "name": "Webhook",
          "created_at": "2023-10-17T16:44:19+00:00",
          "updated_at": "2023-11-09T22:08:47+00:00"
          }
        },
        "external_id": "564884",
        "last_seen": "2023-11-30T21:09:08+00:00",
        "created_at": "2023-11-30T21:09:08+00:00",
        "updated_at": "2023-11-30T21:09:08+00:00"
      }
    ]
  },
  "question": {
    "id": 38578,
    "org_id": 10,
    "active": true,
    "type": "Member",
    "category": "Lapsed Members",
    "display": "Are you aware that your membership has lapsed?",
    "response_type": "yesno",
    "follow_up": "What can we do to get you to renew with our association?",
    "options": null,
    "settings": null,
    "calc_answered": 1,
    "created_at": "2023-02-02T18:11:06+00:00",
    "updated_at": "2023-11-30T21:05:39+00:00"
  },
  "campaign": {
    "id": 17641,
    "org_id": 10,
    "name": "Webhook Test",
    "channel": "email",
    "interaction": "outbound",
    "schedule": "schedule",
    "type": "schedule",
    "status": "draft",
    "status_display": "Draft",
    "expires_at": null,
    "pinned": 0,
    "employee_only": false,
    "recognition_prompt": 0,
    "org_phone_number": null,
    "default_delay_time": null,
    "default_delay_unit": null,
    "uuid": null,
    "preferences": {
      "reminder_send": "yes",
      "reminder_delay": "2|days"
    },
    "notes": "",
    "blueprint_id": null,
    "calc_last_activity": null,
    "calc_next_send": null,
    "created_at": "2023-11-30T20:54:18+00:00",
    "updated_at": "2023-11-30T21:13:38+00:00"
  }
}

Was this article helpful?

Sorry about that! Care to tell us more?

Thanks for the feedback!

There was an issue submitting your feedback
Please check your connection and try again.