Skip to content
Video IntrosDevelopers
TestLive not yet available
videointros.com

Preview Developer preview. The API described here is not available yet. Examples are illustrative and every console screen uses sample data: nothing is sent, created or stored.

Integration guide · Real Estate Guide

Follow Up Boss and Video Intros

Follow Up Boss tells you what happened to a person, an appointment or a deal. Your adapter translates that into one of the organization’s touchpoints.

How it fits together

  1. Follow Up BossAn appointment for a buyer consultation
  2. Your adapterMapping lives here
  3. Video Introsfirst_client_meeting

Native names stay in your adapter’s mapping. Video Intros only ever sees the organization’s touchpoint.

Example mapping

In Follow Up BossKindVideo Intros touchpointContext
An appointment for a buyer consultation
Appointment
first_client_meetingFirst Client Meeting
None
An appointment for a showing
Appointment
showingShowing
None
An appointment for a listing presentation
Appointment
listing_appointmentListing Appointment
None
Your stage or deal status for an offer
Stage / deal
offer_updateOffer Update
None
Your stage or deal milestone for under contract
Stage / deal
under_contractUnder Contract
None
Your deal milestone for closing
Deal
closingClosing
None

The request your adapter sends

Whatever happened in Follow Up Boss, the request is the same one every integration sends.

  1. Detect the changeSubscribe to Follow Up Boss’s notifications, or poll, for the records you care about.
  2. Look up the mappingFind the organization’s touchpoint for the native value. If there is none, do nothing.
  3. Build the keyfollow_up_boss:deal_88:closing
  4. Send the eventPOST /v1/touchpoint-events
  5. Store the event idSo you can look the event up later.
Follow Up Boss → closing
curl -X POST https://api.videointros.com/v1/touchpoint-events \
  -H "Authorization: Bearer $VIDEO_INTROS_API_KEY" \
  -H "Idempotency-Key: follow_up_boss:deal_88:closing" \
  -H "Content-Type: application/json" \
  -d '{
  "touchpoint": "closing",
  "occurred_at": "2026-10-05T17:40:00Z",
  "member": {
    "external_id": "rep_456"
  },
  "recipient": {
    "first_name": "Andrea",
    "last_name": "Smith",
    "phone": "+12405550100"
  },
  "reference": {
    "source": "follow_up_boss",
    "type": "deal",
    "id": "deal_88"
  }
}'
const response = await fetch("https://api.videointros.com/v1/touchpoint-events", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.VIDEO_INTROS_API_KEY}`,
    "Idempotency-Key": "follow_up_boss:deal_88:closing",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "touchpoint": "closing",
    "occurred_at": "2026-10-05T17:40:00Z",
    "member": {
      "external_id": "rep_456"
    },
    "recipient": {
      "first_name": "Andrea",
      "last_name": "Smith",
      "phone": "+12405550100"
    },
    "reference": {
      "source": "follow_up_boss",
      "type": "deal",
      "id": "deal_88"
    }
  }),
});
const result = await response.json();
import os, requests

response = requests.post(
    "https://api.videointros.com/v1/touchpoint-events",
    headers={
        "Authorization": f"Bearer {os.environ['VIDEO_INTROS_API_KEY']}",
        "Idempotency-Key": "follow_up_boss:deal_88:closing",
    },
    json={
        "touchpoint": "closing",
        "occurred_at": "2026-10-05T17:40:00Z",
        "member": {
            "external_id": "rep_456",
        },
        "recipient": {
            "first_name": "Andrea",
            "last_name": "Smith",
            "phone": "+12405550100",
        },
        "reference": {
            "source": "follow_up_boss",
            "type": "deal",
            "id": "deal_88",
        },
    },
)
result = response.json()

Next