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.

Industry guide

Video Intros for Exterior Remodeling

Connect inspection, claim, estimate, approval, production and completion milestones to personalized Video Intros. The API is the same as every other industry. What changes is the set of touchpoints an organization starts with.

The customer journey

  1. Lead / Appointment
  2. Inspection
  3. Claim / Estimate
  4. Approval
  5. Production
  6. Completion

Recommended touchpoints

These are the touchpoints Video Intros sets up for a new exterior remodeling organization. Each organization can rename them, edit them or turn them off, so always read the live list with GET /v1/touchpoints.

Insurance restoration

Inspection, claim and adjuster moments. The rep is the contractor and never speaks for the insurance company.

New Inspection

Appointment

new_inspection

When to trigger
An inspection is booked.
Useful context
context.appointment (start time and time zone)
Example payload
{
  "touchpoint": "new_inspection",
  "occurred_at": "2026-10-05T17:40:00Z",
  "member": {
    "external_id": "rep_456"
  },
  "recipient": {
    "first_name": "Andrea",
    "last_name": "Smith",
    "phone": "+12405550100"
  },
  "reference": {
    "source": "your_crm",
    "type": "appointment",
    "id": "appointment_123"
  },
  "context": {
    "appointment": {
      "starts_at": "2026-10-06T18:00:00Z",
      "timezone": "America/New_York"
    }
  }
}

Inspection Confirmation

Appointment

inspection_confirmation

When to trigger
The inspection is close.
Useful context
context.appointment (start time and time zone)
Example payload
{
  "touchpoint": "inspection_confirmation",
  "occurred_at": "2026-10-05T17:40:00Z",
  "member": {
    "external_id": "rep_456"
  },
  "recipient": {
    "first_name": "Andrea",
    "last_name": "Smith",
    "phone": "+12405550100"
  },
  "reference": {
    "source": "your_crm",
    "type": "appointment",
    "id": "appointment_123"
  },
  "context": {
    "appointment": {
      "starts_at": "2026-10-06T18:00:00Z",
      "timezone": "America/New_York"
    }
  }
}

Inspection Findings / Next Steps

No context

inspection_findings

When to trigger
The inspection is done and the next step is known.
Useful context
reference to the record it is about
Example payload
{
  "touchpoint": "inspection_findings",
  "occurred_at": "2026-10-05T17:40:00Z",
  "member": {
    "external_id": "rep_456"
  },
  "recipient": {
    "first_name": "Andrea",
    "last_name": "Smith",
    "phone": "+12405550100"
  },
  "reference": {
    "source": "your_crm",
    "type": "job",
    "id": "job_5521"
  }
}

Claim Filed / Claim Follow-Up

No context

claim_follow_up

When to trigger
A claim was filed or is in process.
Useful context
reference to the record it is about
Example payload
{
  "touchpoint": "claim_follow_up",
  "occurred_at": "2026-10-05T17:40:00Z",
  "member": {
    "external_id": "rep_456"
  },
  "recipient": {
    "first_name": "Andrea",
    "last_name": "Smith",
    "phone": "+12405550100"
  },
  "reference": {
    "source": "your_crm",
    "type": "job",
    "id": "job_5521"
  }
}

Adjuster Meeting

Appointment

adjuster_meeting

When to trigger
An adjuster meeting is scheduled.
Useful context
context.appointment (start time and time zone)
Example payload
{
  "touchpoint": "adjuster_meeting",
  "occurred_at": "2026-10-05T17:40:00Z",
  "member": {
    "external_id": "rep_456"
  },
  "recipient": {
    "first_name": "Andrea",
    "last_name": "Smith",
    "phone": "+12405550100"
  },
  "reference": {
    "source": "your_crm",
    "type": "appointment",
    "id": "appointment_123"
  },
  "context": {
    "appointment": {
      "starts_at": "2026-10-06T18:00:00Z",
      "timezone": "America/New_York"
    }
  }
}

Claim Update

No context

claim_update

When to trigger
Something meaningful changed in the claim.
Useful context
reference to the record it is about
Example payload
{
  "touchpoint": "claim_update",
  "occurred_at": "2026-10-05T17:40:00Z",
  "member": {
    "external_id": "rep_456"
  },
  "recipient": {
    "first_name": "Andrea",
    "last_name": "Smith",
    "phone": "+12405550100"
  },
  "reference": {
    "source": "your_crm",
    "type": "job",
    "id": "job_5521"
  }
}

Approved / Moving Forward

No context

approved_moving_forward

When to trigger
The project or claim is approved and moving forward.
Useful context
reference to the record it is about
Example payload
{
  "touchpoint": "approved_moving_forward",
  "occurred_at": "2026-10-05T17:40:00Z",
  "member": {
    "external_id": "rep_456"
  },
  "recipient": {
    "first_name": "Andrea",
    "last_name": "Smith",
    "phone": "+12405550100"
  },
  "reference": {
    "source": "your_crm",
    "type": "job",
    "id": "job_5521"
  }
}

Retail

Appointment, estimate and decision moments for a homeowner paying directly.

New Appointment

Appointment

new_appointment

When to trigger
A sales appointment is booked.
Useful context
context.appointment (start time and time zone)
Example payload
{
  "touchpoint": "new_appointment",
  "occurred_at": "2026-10-05T17:40:00Z",
  "member": {
    "external_id": "rep_456"
  },
  "recipient": {
    "first_name": "Andrea",
    "last_name": "Smith",
    "phone": "+12405550100"
  },
  "reference": {
    "source": "your_crm",
    "type": "appointment",
    "id": "appointment_123"
  },
  "context": {
    "appointment": {
      "starts_at": "2026-10-06T18:00:00Z",
      "timezone": "America/New_York"
    }
  }
}

Appointment Confirmation

Appointment

appointment_confirmation

When to trigger
The appointment is close and deserves a personal confirmation.
Useful context
context.appointment (start time and time zone)
Example payload
{
  "touchpoint": "appointment_confirmation",
  "occurred_at": "2026-10-05T17:40:00Z",
  "member": {
    "external_id": "rep_456"
  },
  "recipient": {
    "first_name": "Andrea",
    "last_name": "Smith",
    "phone": "+12405550100"
  },
  "reference": {
    "source": "your_crm",
    "type": "appointment",
    "id": "appointment_123"
  },
  "context": {
    "appointment": {
      "starts_at": "2026-10-06T18:00:00Z",
      "timezone": "America/New_York"
    }
  }
}

Estimate / Proposal Follow-Up

No context

estimate_follow_up

When to trigger
An estimate or proposal was presented or sent.
Useful context
reference to the record it is about
Example payload
{
  "touchpoint": "estimate_follow_up",
  "occurred_at": "2026-10-05T17:40:00Z",
  "member": {
    "external_id": "rep_456"
  },
  "recipient": {
    "first_name": "Andrea",
    "last_name": "Smith",
    "phone": "+12405550100"
  },
  "reference": {
    "source": "your_crm",
    "type": "job",
    "id": "job_5521"
  }
}

Decision Follow-Up

No context

decision_follow_up

When to trigger
The homeowner is still deciding.
Useful context
reference to the record it is about
Example payload
{
  "touchpoint": "decision_follow_up",
  "occurred_at": "2026-10-05T17:40:00Z",
  "member": {
    "external_id": "rep_456"
  },
  "recipient": {
    "first_name": "Andrea",
    "last_name": "Smith",
    "phone": "+12405550100"
  },
  "reference": {
    "source": "your_crm",
    "type": "job",
    "id": "job_5521"
  }
}

Both

On the way, kickoff, project updates and completion are the same in either lane.

On My Way

Status

on_my_way

When to trigger
The rep is heading to the property.
Useful context
reference to the appointment or job
Example payload
{
  "touchpoint": "on_my_way",
  "occurred_at": "2026-10-05T17:40:00Z",
  "member": {
    "external_id": "rep_456"
  },
  "recipient": {
    "first_name": "Andrea",
    "last_name": "Smith",
    "phone": "+12405550100"
  },
  "reference": {
    "source": "your_crm",
    "type": "job",
    "id": "job_5521"
  }
}

Project Kickoff / Next Steps

No context

project_kickoff

When to trigger
The homeowner signed and the project is starting.
Useful context
reference to the record it is about
Example payload
{
  "touchpoint": "project_kickoff",
  "occurred_at": "2026-10-05T17:40:00Z",
  "member": {
    "external_id": "rep_456"
  },
  "recipient": {
    "first_name": "Andrea",
    "last_name": "Smith",
    "phone": "+12405550100"
  },
  "reference": {
    "source": "your_crm",
    "type": "job",
    "id": "job_5521"
  }
}

Project Update

No context

project_update

When to trigger
A trade starts, materials arrive or the schedule changes.
Useful context
context.trade
Example payload
{
  "touchpoint": "project_update",
  "occurred_at": "2026-10-05T17:40:00Z",
  "member": {
    "external_id": "rep_456"
  },
  "recipient": {
    "first_name": "Andrea",
    "last_name": "Smith",
    "phone": "+12405550100"
  },
  "reference": {
    "source": "your_crm",
    "type": "job",
    "id": "job_5521"
  },
  "context": {
    "trade": "roofing"
  }
}

Project Complete / Thank You

No context

project_complete

When to trigger
The work is complete.
Useful context
reference to the record it is about
Example payload
{
  "touchpoint": "project_complete",
  "occurred_at": "2026-10-05T17:40:00Z",
  "member": {
    "external_id": "rep_456"
  },
  "recipient": {
    "first_name": "Andrea",
    "last_name": "Smith",
    "phone": "+12405550100"
  },
  "reference": {
    "source": "your_crm",
    "type": "job",
    "id": "job_5521"
  }
}

Insurance restoration and retail

An organization can run both lanes. A rep in one lane sees that lane’s touchpoints. Tell Video Intros which lane a moment belongs to when your CRM knows:

context
{
  "context": {
    "lane": "insurance",
    "trade": "roofing"
  }
}

Integration guides