Meeting Templates

Meeting Templates

A Meeting Template defines the meeting configuration that applies to all conversations within a campaign. When a candidate successfully completes the conversation flow, the meeting template settings determine how the meeting is scheduled.

Prerequisites

To use scheduling features, your campaign must have:

  1. Closing method set to CALENDAR_MEETING_INTEGRATION
  2. Meeting Template attached to the campaign

How It Works

┌─────────────────────────────────────────────────────────────┐
│                         CAMPAIGN                            │
│  closingMethod: CALENDAR_MEETING_INTEGRATION                │
│  meetingTemplateId: "template_abc123"                       │
│                                                             │
│   ┌─────────────────────────────────────────────────────┐   │
│   │              MEETING TEMPLATE                       │   │
│   │  • Duration: 30 minutes                             │   │
│   │  • Video: Google Meet                               │   │
│   │  • Participants: Hiring Manager (calendar connected)│   │
│   │  • Open Hours: Mon-Fri, 9am-5pm                     │   │
│   └─────────────────────────────────────────────────────┘   │
│                                                             │
│   ┌─────────────┐  ┌─────────────┐  ┌─────────────┐         │
│   │Conversation │  │Conversation │  │Conversation │         │
│   │  (John)     │  │  (Sarah)    │  │  (Mike)     │         │
│   │  Uses same  │  │  Uses same  │  │  Uses same  │         │
│   │  template   │  │  template   │  │  template   │         │
│   └─────────────┘  └─────────────┘  └─────────────┘         │
└─────────────────────────────────────────────────────────────┘

All conversations within a campaign share the same meeting template configuration. This ensures consistency across all candidate interactions.

What's Included in a Meeting Template

SettingDescription
DurationMeeting length in minutes (e.g., 15, 30, 45, 60)
Video ConferencingWhether to include a video link (Google Meet, Microsoft Teams)
ParticipantsWho should attend the meeting and how availability is sourced
Open HoursDays and times when meetings can be scheduled
LocationPhysical address for in-person meetings
Title & DescriptionMeeting title and calendar invite description

Meeting Participants

Each meeting template defines the participants who will attend. For each participant, you configure:

Availability Source

SourceDescription
Connected CalendarReal-time availability from Google or Microsoft calendar
Pre-defined SlotsSpecific time windows when the participant is available
Auto-Collect via EmailPopp emails the participant to collect their availability

Participant Roles

  • Organizer: The meeting owner who sends the calendar invite (one required)
  • Attendee: Additional participants who will join the meeting

Creating Meeting Templates

Create a meeting template via the API:

curl -X POST "https://api.popp.ai/v1/meeting-templates" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "x-organization-id: YOUR_ORGANIZATION_ID" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Interview Call",
    "description": "Initial screening interview",
    "duration": 30,
    "timezone": "Europe/London",
    "videoConferencing": true,
    "videoConferencingProvider": "Google Meet",
    "openHours": [
      {
        "days": [1, 2, 3, 4, 5],
        "start": "09:00",
        "end": "17:00"
      }
    ],
    "meetingParticipants": [
      {
        "name": "Jane Smith",
        "email": "[email protected]",
        "isOrganizer": true,
        "isCalendarConnected": true
      }
    ],
    "buffer": 15,
    "noticePeriodMinutes": 60,
    "availableDaysInTheFuture": 30
  }'

Required Fields

FieldTypeDescription
titlestringThe title of the meeting
durationintegerMeeting length in minutes (1-1440)
timezonestringIANA timezone (e.g., Europe/London, America/New_York)
videoConferencingbooleanWhether to include video conferencing
openHoursarrayAvailable time windows for scheduling
meetingParticipantsarrayList of participants (exactly one must be the organizer)

Optional Fields

FieldTypeDefaultDescription
descriptionstring-Calendar invite description
videoConferencingProviderstring-Google Meet or Microsoft Teams (required if videoConferencing is true)
locationstring-Physical address (cannot be used with video conferencing)
bufferinteger0Buffer time in minutes before/after meetings (multiple of 5, max 120)
noticePeriodMinutesinteger0Minimum notice required for booking
availableDaysInTheFutureinteger30How many days in the future bookings are available
reminderMinutesBeforeMeetinginteger1440Minutes before meeting to send reminder

Participant Configuration

Each participant requires:

{
  "name": "Jane Smith",
  "email": "[email protected]",
  "isOrganizer": true,
  "isCalendarConnected": true
}

For participants without a connected calendar, provide pre-defined availability:

{
  "name": "John Doe",
  "email": "[email protected]",
  "isOrganizer": false,
  "isCalendarConnected": false,
  "availability": {
    "timezone": "Europe/London",
    "timeSlots": [
      {
        "date": "2025-01-20",
        "startTime": "09:00",
        "endTime": "12:00"
      },
      {
        "date": "2025-01-21",
        "startTime": "14:00",
        "endTime": "17:00"
      }
    ]
  }
}

Set autoCollectAvailability: true to have Popp automatically collect the participant's availability via conversation.

Response

{
  "id": "b0453b2c-9bf2-4903-a4da-b9cddb682425",
  "title": "Interview Call",
  "status": "ACTIVE",
  "createdAt": "2025-01-01T09:00:00Z"
}

Once you have a meeting template ID, attach it to your campaign by setting the closing method to CALENDAR_MEETING_INTEGRATION. All conversations in that campaign will use the template settings.

Listing Meeting Templates

Retrieve all meeting templates for your organization:

curl -X GET "https://api.popp.ai/v1/meeting-templates" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "x-organization-id: YOUR_ORGANIZATION_ID"

Filtering

ParameterTypeDescription
titlestringSearch by title (partial match)
statusstringFilter by status (ACTIVE, ARCHIVED)
locationstringSearch by location (partial match)
isVideoConferencebooleanFilter by video conferencing enabled
limitintegerResults per page (1-100, default: 100)
nextTokenstringPagination token from previous response

Example with filters:

curl -X GET "https://api.popp.ai/v1/meeting-templates?status=ACTIVE&title=Interview&limit=10" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "x-organization-id: YOUR_ORGANIZATION_ID"

Getting Meeting Template Details

Retrieve the full configuration for a specific meeting template:

curl -X GET "https://api.popp.ai/v1/meeting-templates/{templateId}" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "x-organization-id: YOUR_ORGANIZATION_ID"

This returns all configuration details including availability settings, buffer times, and reminder settings.

Inviting Calendar Contacts

Before creating a meeting template with a participant, they must have their calendar connected to Popp. Use the Invite Calendar Contact endpoint to send an invitation:

curl -X POST "https://api.popp.ai/v1/invite-calendar-contact" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "x-organization-id: YOUR_ORGANIZATION_ID" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "[email protected]",
    "name": "Jane Smith",
    "reference": "hiring-manager-001"
  }'

The contact will receive an email invitation to connect their Google or Microsoft calendar to Popp.

Example Use Cases

Standard Interview

  • Duration: 30 minutes
  • Video: Google Meet
  • Participants: Hiring Manager (calendar connected)
  • Open Hours: Monday-Friday, 9am-5pm

Panel Interview

  • Duration: 60 minutes
  • Video: Microsoft Teams
  • Participants:
    • Hiring Manager (calendar connected, organizer)
    • Team Lead (calendar connected)
    • HR Representative (calendar connected)
  • Open Hours: Tuesday-Thursday, 10am-4pm

On-site Visit

  • Duration: 90 minutes
  • Video: None
  • Location: 123 Main St, Suite 400, New York, NY 10001
  • Participants: Office Manager (pre-defined availability)
  • Open Hours: Monday, Wednesday, Friday, 9am-12pm

API Reference

Next Steps

Once your campaign has a meeting template configured: