Calendly makes scheduling meetings effortless. Connecting InstantDM to Calendly lets you send booking links directly in Instagram DMs and get notified when leads schedule appointments - turning Instagram conversations into booked calls.
Why Connect InstantDM to Calendly?
- Frictionless booking - one tap from DM to scheduled meeting
- No back-and-forth - Calendly handles availability and time zones
- Automatic confirmations - Calendly sends email reminders
- Two-way sync - get notified when an Instagram lead books, and DM them a confirmation
Common Use Cases
- Send a booking link when someone asks about consulting or coaching
- Auto-send a Calendly link after a lead capture flow completes
- Get notified via DM when an Instagram lead books a call
- Include booking links as buttons in DM flows
- Track which Instagram campaigns drive the most bookings
What You'll Need
| Requirement | Details |
|---|---|
| InstantDM account | Trendsetter, Trendsetter Pro, or any Multi plan |
| Calendly account | Free or paid plan |
| InstantDM API key | Found at Settings → API in your InstantDM dashboard |
Method 1: Static Booking Link in DM Flows (Simplest)
Step 1: Get Your Calendly Link
- Log in to calendly.com.
- Copy your event link (e.g.,
https://calendly.com/yourname/30min).
Step 2: Add to InstantDM Flow
In the Flow Editor, add a Button node:
- Button text: "Book a Call"
- URL: Your Calendly link
Or send via API:
{
"action": "send_message",
"type": "buttons",
"recipient_id": "INSTAGRAM_USER_ID",
"message": "I'd love to chat! Pick a time that works for you:",
"buttons": [
{ "title": "Book a 30-Min Call", "url": "https://calendly.com/yourname/30min" }
]
}
Pre-Fill Customer Info
Append query parameters to pre-fill the booking form:
https://calendly.com/yourname/30min?name=John+Doe&email=john@example.com
In your webhook receiver:
const name = encodeURIComponent(data.response_variables?.full_name || '');
const email = encodeURIComponent(data.response_variables?.email || '');
const calendlyUrl = `https://calendly.com/yourname/30min?name=${name}&email=${email}`;
Method 2: Get Notified When a Lead Books
Via Calendly Webhooks
- In Calendly, go to Integrations → Webhooks (requires Calendly Professional plan).
- Create a webhook subscription for
invitee.createdevents. - Point it at your server.
Webhook Receiver
app.post('/calendly-webhook', async (req, res) => {
const { event, payload } = req.body;
if (event !== 'invitee.created') {
return res.status(200).json({ status: 'skipped' });
}
const invitee = payload.invitee;
const eventDetails = payload.event;
// Check if this came from an Instagram lead (by email match)
// Look up the Instagram user ID from your database
const instagramUserId = await lookupInstagramUser(invitee.email);
if (instagramUserId) {
await fetch('https://api.instantdm.com/api-webhook', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.INSTANTDM_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
action: 'send_message',
type: 'text',
recipient_id: instagramUserId,
message: `✅ Your call is booked for ${new Date(eventDetails.start_time).toLocaleString()}! Looking forward to chatting with you.`,
}),
});
}
res.status(200).json({ status: 'processed' });
});
Via Make.com
- Set up an InstantDM webhook scenario per the Make.com guide.
- After the flow_completed filter, add an HTTP Request module to send the Calendly link via InstantDM API.
- For booking notifications: create a separate scenario with a Calendly → Watch Events trigger, then send a DM via InstantDM API.
Troubleshooting
| Issue | Solution |
|---|---|
| Calendly link not opening in DM | Ensure the URL is a full HTTPS link. Instagram opens URLs in an in-app browser. |
| Pre-fill not working | Check URL encoding. Spaces should be + or %20. |
| Webhook not firing | Calendly webhooks require a Professional plan. Verify the subscription is active. |
| Can't match booking to Instagram lead | Store the email-to-Instagram mapping when the lead is captured, then look it up when the booking webhook fires. |
Frequently Asked Questions
Do I need Calendly Pro for this?
The basic integration (sending booking links in DMs) works with Calendly's free plan. Webhooks for booking notifications require Calendly Professional ($10/month).
Can I use Calendly with Make.com or Zapier?
Yes. Both platforms have native Calendly integrations. Use them to trigger actions when bookings are created, cancelled, or rescheduled.
Can I embed Calendly in the DM?
No - Instagram DMs don't support embedded web content. You send a link that opens in the browser. Using a button makes it feel seamless.
What's Next
- Set up Cal.com for an open-source alternative.
- Connect to Google Calendar for direct calendar integration.
- Read the HubSpot guide to track bookings in your CRM.
- Explore the full API docs at instantdm.com/instagram-api-docs.