Integration Guide

How to Connect InstantDM with Google Calendar (Step-by-Step Guide)

Learn how to create Google Calendar events from Instagram DM interactions and send calendar links via Instagram DMs using InstantDM.

Meta Business Partner
30,000+ creators
$9.99/mo flat

Connecting InstantDM to Google Calendar lets you create calendar events when Instagram leads book appointments through DM flows, and send Google Calendar links directly in DMs.


Why Connect InstantDM to Google Calendar?

  • Auto-create events - when a lead books via DM, it appears on your calendar
  • Send calendar links - let leads add events to their own calendar
  • Team visibility - shared calendars show Instagram appointments alongside other meetings
  • Reminders - Google Calendar sends automatic reminders

Common Use Cases

  • Create a calendar event when someone books a consultation via DM flow
  • Send "Add to Calendar" links after confirming an appointment
  • Block time on your calendar when a lead requests a specific slot
  • Sync DM-booked appointments with your team calendar

What You'll Need

Requirement Details
InstantDM account Trendsetter, Trendsetter Pro, or any Multi plan
Google account With Google Calendar
InstantDM API key Found at Settings → API in your InstantDM dashboard

Method 1: Via Make.com (Recommended)

Step 1: Set Up the Webhook

Follow the Make.com integration guide to create a webhook scenario.

Step 2: Add Google Calendar Module

  1. After the webhook trigger, add a Filter: event equals flow_completed.
  2. Add Google Calendar → Create an Event.
  3. Connect your Google account.
  4. Configure:
Field Value
Calendar Select your calendar
Summary Instagram Lead: {{data.response_variables.full_name}}
Description Email: {{data.response_variables.email}}\nPhone: {{data.response_variables.phone}}\nInterest: {{data.response_variables.interest}}\nInstagram: @{{data.username}}
Start Date Tomorrow at 10:00 AM (or from flow data)
Duration 30 minutes

Step 3: Test and Activate

  1. Run once, trigger a test event.
  2. Check your Google Calendar for the new event.
  3. Activate.

Method 2: Send "Add to Calendar" Links

Generate a Google Calendar link that leads can click to add an event to their own calendar:

function createGoogleCalendarLink(title, description, startDate, endDate, location = '') {
  const params = new URLSearchParams({
    action: 'TEMPLATE',
    text: title,
    details: description,
    dates: `${formatDate(startDate)}/${formatDate(endDate)}`,
    location: location,
  });
  
  return `https://calendar.google.com/calendar/render?${params.toString()}`;
}

function formatDate(date) {
  return new Date(date).toISOString().replace(/[-:]/g, '').replace(/\.\d{3}/, '');
}

// Usage
const calendarLink = createGoogleCalendarLink(
  'Consultation Call',
  'Call with YourBrand about Premium Plan',
  '2025-02-01T10:00:00',
  '2025-02-01T10:30:00'
);

Send via InstantDM:

{
  "action": "send_message",
  "type": "buttons",
  "recipient_id": "INSTAGRAM_USER_ID",
  "message": "Your call is confirmed! Add it to your calendar:",
  "buttons": [
    { "title": "Add to Calendar", "url": "GENERATED_CALENDAR_LINK" }
  ]
}

Method 3: Direct API (Google Calendar API)

const { google } = require('googleapis');

const auth = new google.auth.GoogleAuth({
  keyFile: './service-account-key.json',
  scopes: ['https://www.googleapis.com/auth/calendar'],
});

const calendar = google.calendar({ version: 'v3', auth });

async function createEvent(summary, description, startTime, attendeeEmail) {
  const event = await calendar.events.insert({
    calendarId: 'primary',
    requestBody: {
      summary,
      description,
      start: { dateTime: startTime, timeZone: 'America/New_York' },
      end: { dateTime: new Date(new Date(startTime).getTime() + 30 * 60000).toISOString(), timeZone: 'America/New_York' },
      attendees: attendeeEmail ? [{ email: attendeeEmail }] : [],
      reminders: { useDefault: true },
    },
  });
  
  return event.data;
}

Troubleshooting

Issue Solution
Event not appearing Check the calendar ID. For personal calendar, use primary. For shared calendars, use the calendar's email address.
Time zone wrong Specify the time zone in the event start/end. Don't rely on defaults.
Service account can't access calendar Share the calendar with the service account email address.
"Add to Calendar" link not working Ensure dates are in the correct format (YYYYMMDDTHHmmssZ).

Frequently Asked Questions

Can I let leads pick a time slot via DM?

Not directly through Google Calendar. For time-slot selection, use Calendly or Cal.com which provide a booking UI. Then sync the booking to Google Calendar.

Can I create events on a shared team calendar?

Yes. Use the shared calendar's ID instead of primary. The service account or connected account needs write access to the shared calendar.


What's Next

Ready to Automate Your Instagram DMs?

Join 30,000+ creators and brands using InstantDM today.

Start Your Free Trial

No credit card required. Setup in under 15 minutes.