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:
- Closing method set to
CALENDAR_MEETING_INTEGRATION - 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
| Setting | Description |
|---|---|
| Duration | Meeting length in minutes (e.g., 15, 30, 45, 60) |
| Video Conferencing | Whether to include a video link (Google Meet, Microsoft Teams) |
| Participants | Who should attend the meeting and how availability is sourced |
| Open Hours | Days and times when meetings can be scheduled |
| Location | Physical address for in-person meetings |
| Title & Description | Meeting title and calendar invite description |
Meeting Participants
Each meeting template defines the participants who will attend. For each participant, you configure:
Availability Source
| Source | Description |
|---|---|
| Connected Calendar | Real-time availability from Google or Microsoft calendar |
| Pre-defined Slots | Specific time windows when the participant is available |
| Auto-Collect via Email | Popp 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
| Field | Type | Description |
|---|---|---|
title | string | The title of the meeting |
duration | integer | Meeting length in minutes (1-1440) |
timezone | string | IANA timezone (e.g., Europe/London, America/New_York) |
videoConferencing | boolean | Whether to include video conferencing |
openHours | array | Available time windows for scheduling |
meetingParticipants | array | List of participants (exactly one must be the organizer) |
Optional Fields
| Field | Type | Default | Description |
|---|---|---|---|
description | string | - | Calendar invite description |
videoConferencingProvider | string | - | Google Meet or Microsoft Teams (required if videoConferencing is true) |
location | string | - | Physical address (cannot be used with video conferencing) |
buffer | integer | 0 | Buffer time in minutes before/after meetings (multiple of 5, max 120) |
noticePeriodMinutes | integer | 0 | Minimum notice required for booking |
availableDaysInTheFuture | integer | 30 | How many days in the future bookings are available |
reminderMinutesBeforeMeeting | integer | 1440 | Minutes 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
| Parameter | Type | Description |
|---|---|---|
title | string | Search by title (partial match) |
status | string | Filter by status (ACTIVE, ARCHIVED) |
location | string | Search by location (partial match) |
isVideoConference | boolean | Filter by video conferencing enabled |
limit | integer | Results per page (1-100, default: 100) |
nextToken | string | Pagination 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
- Create Meeting Template - Create a new meeting template
- List Meeting Templates - List and search templates
- Get Meeting Template - Get full template details
- Invite Calendar Contact - Invite team members to connect calendars
Next Steps
Once your campaign has a meeting template configured:
- Auto-Schedule Conversations via the API
- Set up Webhooks to receive meeting notifications
Updated about 14 hours ago