Enrich Calendly Invitees with Dropcontact and Store in Notion

Overview

This workflow automatically enriches Calendly invitee data using Dropcontact and creates a detailed contact record in a Notion database. Whenever a new invitee schedules an event on Calendly, the workflow captures their details, enriches them with company and professional information via Dropcontact, and then writes a new database page in Notion with all the enriched data. This is ideal for sales teams, recruiters, or anyone who wants to maintain an up-to-date CRM or lead database without manual entry.

Workflow Steps

  1. Calendly Trigger (OAuth2) — Listens for the invitee.created event. When a new invitee books a meeting, this node triggers the workflow and passes the invitee’s data (email, name, etc.).
  2. Dropcontact (API Key auth) — Takes the invitee’s email from the Calendly payload and enriches it with corporate data (company name, SIREN number, etc.) using the Dropcontact API. Optional fields like full_name, last_name, first_name are also transmitted to improve matching. The node is configured with siren: true and language: 'fr' to target French companies.
  3. Notion (OAuth2) — Creates a new page in the specified Notion database with property values drawn from the enriched data. The properties include a date range (start/end times from the event), the invitee’s email, full name, a URL (from environment variable BASE_URL), a people assignee (hardcoded user ID), and a civility text field. The database ID must be configured in the node’s parameters.
  4. Error Handler (stopAndError) — If any node fails, this error handler will halt execution and output a clear error message. It keeps the workflow safe and auditable.

Setup Instructions

  • Calendly Account: Create a Calendly account and obtain an API key or set up OAuth2. The trigger node will need this credential.
  • Dropcontact Account: Sign up for Dropcontact and get an API key. Set the credential in n8n under the Dropcontact node.
  • Notion Account: Create a Notion integration at notion.so/my-integrations and copy the token. Also create a database with the required properties (Date, Email, Title, URL, People, Text). The database ID is found in the database URL.
  • Environment Variables: The workflow uses BASE_URL in the Notion node. Set this in your n8n environment variables (e.g., BASE_URL=https://yourapp.com).
  • Database ID: Replace the empty databaseId in the Notion node with your actual database ID.
  • User ID in People: The hardcoded peopleValue (22ad678a-175a-405c-b504-978d7804ebb8) should be replaced with the Notion user ID of the person to assign.

Use Cases & Variations

  • Lead Enrichment & CRM: Perfect for sales teams to automatically log enriched leads from Calendly into a Notion CRM.
  • Recruitment: Enrich candidate details when they book an interview, storing in a candidate database.
  • Multi-language: Change the Dropcontact language parameter (fr, en, etc.) to match your region.
  • Custom Properties: Modify the Notion properties to include additional fields like phone number, company size, or tags.
  • Error Notifications: Connect the error handler to a Slack or email node to alert you on failures.
4 nodesmanual triggerCRM
NotionDropcontactStop And Error

Workflow JSON

{
  "nodes": [
    {
      "name": "Notion",
      "type": "n8n-nodes-base.notion",
      "position": [
        850,
        400
      ],
      "parameters": {
        "resource": "databasePage",
        "databaseId": "",
        "propertiesUi": {
          "propertyValues": [
            {
              "key": "YOUR_CREDENTIAL_HERE",
              "range": true,
              "dateEnd": "={{$node[\"Function\"].json[\"payload\"][\"event\"][\"end_time\"]}}",
              "dateStart": "={{$node[\"Function\"].json[\"payload\"][\"event\"][\"invitee_start_time\"]}}"
            },
            {
              "key": "YOUR_CREDENTIAL_HERE",
              "emailValue": "={{$json[\"email\"][0][\"email\"]}}"
            },
            {
              "key": "YOUR_CREDENTIAL_HERE",
              "title": "={{$json[\"full_name\"]}}"
            },
            {
              "key": "YOUR_CREDENTIAL_HERE",
              "urlValue": "{{ $env.BASE_URL }}"
            },
            {
              "key": "YOUR_CREDENTIAL_HERE",
              "peopleValue": [
                "22ad678a-175a-405c-b504-978d7804ebb8"
              ]
            },
            {
              "key": "YOUR_CREDENTIAL_HERE",
              "urlValue": "{{ $env.BASE_URL }}"
            },
            {
              "key": "YOUR_CREDENTIAL_HERE",
              "urlValue": "{{ $env.BASE_URL }}"
            },
            {
              "key": "YOUR_CREDENTIAL_HERE",
              "textContent": "={{$json[\"civility\"]}}"
            }
// ... truncated (copy to see full JSON)

How to Import This Workflow

  1. 1Copy the workflow JSON above using the Copy Workflow JSON button.
  2. 2Open your n8n instance and go to Workflows.
  3. 3Click Import from JSON and paste the copied workflow.

Don't have an n8n instance? Start your free trial at n8nautomation.cloud

Related Templates

Automated Birthday & Anniversary Wishes from Airtable via Gmail

Overview This workflow automatically sends personalized birthday and anniversary wishes to your contacts (clients, employees, or members) every day at 8 AM. It checks an Airtable base for any records where today matches the person's date of birth or anniversary, then sends a warm email via Gmail. Perfect for maintaining relationships without manual effort. How It Works Schedule Trigger — Runs the workflow daily at 8 AM (no auth) Search Client — Queries Airtable for records where the or field matches today's month and day (API Key auth) Check Available Dates — An IF node that verifies the record actually has a date in either field (no auth) No Operation, do nothing — A placeholder for records that don't have a date (false branch) Generate Subject & Body — A Code node that creates a custom subject line and message depending on whether it's a birthday or anniversary (no auth) Send Emails — Sends the email to the person's address using Gmail (OAuth2) Node Details Schedule Trigger (No auth) — Configured to trigger at 8:00 AM every day. You can adjust the hour in the node settings. Search Client (API Key auth) — Uses an Airtable credential. The filter formula finds all records where either date matches today. Check Available Dates (No auth) — Two conditions combined with AND: is not empty AND is not empty. This ensures the record has at least one date to work with. Records that pass go to the true branch; others go to the false branch (No Operation). Generate Subject & Body (No auth) — JavaScript code that extracts the person's name, email, and dates. It compares today's month-day to the date fields and sets a subject like "🎂 Happy Birthday!" or "💍 Happy Anniversary!" along with a friendly message. The output includes the original data plus , , and . Send Emails (OAuth2) — Uses a Gmail credential. Sends a plain text email to the recipient's email address with the generated subject and message. The option is disabled to keep the email clean. Setup Instructions Airtable — Create a base with a table containing at least these fields: (text), (email), (date), (date). Populate with your contacts. Airtable Credential — In n8n, create an Airtable credential using your API key (get it from your Airtable account settings). Gmail Credential — Create a Gmail OAuth2 credential in n8n. You'll need a Google Cloud project with the Gmail API enabled and the necessary redirect URIs configured. Update Node Parameters — Open the Search Client node and select your Airtable base and table. The filter formula is already set; you may need to adjust field names if they differ. Activate Workflow — Once everything is connected, toggle the workflow to active. It will run daily at 8 AM. Use Cases & Variations Employee Recognition — Replace the email with a Slack message to a company channel for public recognition. Client Appreciation — Add a discount code or special offer in the email body. Multi‑channel — Combine with SMS (e.g., Twilio) for a more personal touch. Different Triggers — Change the schedule to run weekly or on specific days. Custom Templates — Modify the Code node to pull from a Google Doc or use HTML email formatting. This workflow is easily adaptable to any scenario where you want to automatically celebrate important dates with your network.

6 nodes

Sync Calendly Invitees to Mautic Contacts

Overview This workflow automatically creates or updates a contact in Mautic whenever a new invitee schedules an event through Calendly. It eliminates manual data entry, ensures your CRM stays current, and helps you follow up with leads immediately after they book a call. How It Works The workflow runs in two main steps: first, it listens for a new Calendly event; second, it uses the invitee's email and name to either create a new contact in Mautic or update an existing one if the email already exists. Nodes and Their Roles On new event () – OAuth2 – Listens for the event from Calendly. When someone schedules an event, this node fires with the invitee's email, name, and other details. - Parameters: set to Create/update contact () – Basic Auth – Receives the trigger data and sends a request to Mautic to create or update a contact. It maps the invitee's email (from the trigger's ) and first name (from ). If a contact with that email already exists in Mautic, its first name is overwritten. - Parameters: = , = Error Handler () – No auth – Catches any execution errors and stops the workflow with a user-defined message, preventing silent failures. Setup Instructions Calendly account: You need a Calendly account with OAuth access. In n8n, create a Calendly OAuth2 credential (Client ID and Client Secret from your Calendly developer app). Mautic instance: You need a running Mautic instance with API access. In n8n, create a Mautic credential with the instance URL, your Mautic username, and password (Basic Auth). Workflow activation: Set the Calendly trigger to “Webhook” mode and use the provided webhook URL in your Calendly webhook settings. Activate the workflow. Use Cases & Variations Sales follow‑up: Automatically add new leads from demo bookings into Mautic for immediate email sequences. Marketing automation: Combine with Mautic segments and campaigns to send tailored content based on event type. Other CRMs: Replace the Mautic node with Salesforce, HubSpot, or any other CRM node supported by n8n. Enrichment: Add an HTTP Request node to look up company details before creating the contact.

4 nodes

Calendly Event Listener (Skeleton) with Error Handling

Calendly Event Listener (Skeleton) with Error Handling This workflow provides a starting point for automating tasks based on Calendly scheduling events. It listens for new invitees or cancelled bookings and includes a built-in error handler to catch and log failures gracefully. Useful for sending follow‑up emails, updating CRM records, or triggering notifications when someone books or cancels a meeting. Because the workflow contains only the trigger and error handler, it is designed to be extended by adding your own processing nodes. The Calendly Trigger fires on and events, passing the full event payload to the next node. The Error Handler catches any errors from downstream nodes and stops execution with a custom error message, preventing partial runs. Nodes in the Workflow Calendly Trigger (n8n-nodes-base.calendlyTrigger) — API Key auth (requires a Calendly Personal Access Token) - Events: , — fires whenever a new invitee schedules or cancels a booking. - This is a webhook-based trigger; n8n automatically registers the webhook URL with Calendly using the provided API token. Error Handler (n8n-nodes-base.stopAndError) — No auth - Message: — this message is shown in execution logs when an error occurs. - This node is connected as an error workflow; it stops execution and prevents the workflow from continuing after an error. Setup Instructions Calendly Account & API Token: You need a Calendly account (free or paid). Generate a Personal Access Token from your Calendly Settings → Integrations → API & Webhooks. Copy the token. n8n Credential: In n8n, create a new credential of type „Calendly API“ and paste your token. This credential will be used by the Calendly Trigger node. Optional: Add nodes after the trigger to process the event data (e.g., a Slack node, a Google Sheets node, or an HTTP Request to your CRM). Connect them to the trigger’s output. If you add nodes, connect the Error Handler via the error output of the last node (or use the workflow’s error handling settings). Use Cases & Variations New booking notifications: After the trigger, add a Slack node to post a message to a channel when someone books a call. CRM integration: Use an HTTP Request node to create/update a contact in HubSpot, Salesforce, or your own API. Email follow‑up: Add a Gmail or SendGrid node to send a thank‑you email to the invitee. Cancellation handling: Because the trigger also listens for , you can add conditional logic (e.g., via an IF node) to handle cancellations differently — like removing the event from a calendar or updating a status field. To adapt the workflow, simply duplicate the trigger or add new nodes with appropriate credentials. The error handler ensures that any failures in downstream nodes are caught and reported, making this skeleton robust enough for production use after extension.

2 nodes

Ready to automate with n8n?

Get affordable managed n8n hosting with 24/7 support.