n8nWorkPlanningAI score · PendingAI-assisted edit · no obvious prompt-injection riskn8n.io

Slack Emoji Trigger: Auto-Create Calendar Events with RSVP Sync

Slack 📅 reaction → AI parses time/location → Google Calendar create/update → ✅ reaction auto-syncs attendees

Some experienceStepsWorkflowPromptTip
Who
Teams that organize events in Slack and want automatic Google Calendar sync
You get
Post a message with 📅 emoji in a Slack channel; AI extracts time and location to create a calendar event; team members RSVP with ✅ and are automatically added or removed as attendees
You need
n8n · slack · google-calendar · serpapi

Constraints

Prerequisites: n8n instance, Slack workspace (user access token with required permissions), OpenAI API key, Google Calendar access, SerpAPI key (optional, for location search). After importing the template into n8n, replace placeholders in workflow.json: Google Calendar [email protected] and Slack channelId C074W8X9UJV, and configure credentials for each service.

What they did

Author jimleuk published this workflow template in the n8n template library. The template demonstrates a full automation: in a Slack channel, a user posts an event message with a 📅 emoji; n8n triggers on schedule and an AI Agent parses the time and location, creates a Google Calendar event, and replies under the original message with a confirmation link; other members RSVP with a ✅ reaction, and the system automatically adds them as calendar attendees. The template contains 33 nodes covering trigger, branching, AI parsing, calendar operations, reaction tracking, and conditional filtering.

How it went

Source report (author_report): The template has 8,030 views on n8n.io. The description includes a Jill/Jack example conversation showing the full flow from Slack message to calendar creation to RSVP sync. No specific success rate, error rate, or performance data is provided.

Worth knowing

[Known limitations] 1) The Google Calendar node in workflow.json uses a placeholder email [email protected] that must be replaced; 2) The Slack channelId in the Get Invite Replies node is hardcoded as C074W8X9UJV and must be replaced with the actual channel; 3) A SerpAPI key is required for location search; without it, location parsing may fail; 4) The Schedule Trigger defaults to 30-minute intervals, which may need adjustment for real-time requirements; 5) The source does not provide details on error handling or retry mechanisms; 6) This site has not tested the workflow (reproduction=not_tested).

n8n workflow template

Structure checked · Not run-tested

Use “Import from File” in n8n, or copy the JSON and paste it into the editor. Connect your own accounts, then try test data. The template is inactive by default.

Setup and test checklist

Credentials to connect

  • After import, connect your own credentials on auth-required nodes; author secrets are not included.

Configuration to replace

  • Source template is n8n public workflow #2326 (~33 nodes). Keep inactive after import; verify triggers, expressions and external API endpoints.
  • Sticky-note guidance is informational; replace placeholders with your own accounts, sheet schemas or channel IDs.

Test input and expected output

  • Manually run the main path once in a test workspace and confirm credentialed nodes authenticate without errors.
  • Drive one synthetic/redacted sample through and check output fields and downstream writes before enabling in production.

Template changes

  • Author credential bindings, webhookId and execution data are removed; the workflow is inactive. Nodes, connections and original prompts are preserved. Not run-tested in n8n.
  • No business-logic edits; verify keys, quotas and privacy compliance before use.

Template retrieved: 2026-10-25

Steps

  1. Configure Slack trigger and monitored channel

    After importing the template into n8n, configure the Schedule Trigger node (default: every 30 minutes) and the Search for Invite Requests node. The Slack node requires a user access token, and your Slack app must have permissions to search messages, read reactions, and post replies. Set the query in Search for Invite Requests to listen for messages with the 📅 emoji in the target channel.

  2. Check if event exists or needs creation

    The Get Invite Replies node fetches the message thread, and the Get Existing Invite EventID code node parses whether a #event{id} tag already exists in the thread (generated by the reply in step 4). The Should Create Event? node checks eventId: if absent, the workflow follows the "create event" branch; if present, it follows the "update attendees" branch.

    Execution prompt · Source text。JS Code field of the Get Existing Invite EventID node

    const channel =  $('Search for Invite Requests').item.json.channel;
    
    return $input
      .all()
      .filter(item => !item.json.thread_ts || item.json.ts === item.json.thread_ts)
      .map(invite => {
        const replies = $input
          .all()
          .filter(reply => reply.json.thread_ts === invite.json.thread_ts);
        const replyWithEventTag = replies
          .find(reply => reply.json.bot_id && reply.json.text.match(/#event([a-z0-9]+)/i));
        const eventId = replyWithEventTag
          ? replyWithEventTag.json.text.match(/#event([a-z0-9]+)/i)[1]
          : null;
        return {
          eventId,
          invite,
          channel,
        }
      });
    
    return output;
  3. Configure AI Agent to parse message and output structured data

    The Calendar Event Booking Agent node (AI Agent) connects to OpenAI Chat Model, SerpAPI tool, Wikipedia tool, and Structured Output Parser. The AI generates an event title, parses start/end times (default start time 9am), searches for the full address and URL of the location, and outputs structured JSON. The Structured Output Parser enforces 8 fields: event_title, event_start_date, event_start_time, event_end_date, event_end_time, location_address, location_url, event_type.

    Execution prompt · Source text。Text / System Prompt field of the Calendar Event Booking Agent node

    Your role is to create professional event calendar events based on user message.
    Given the following user message, do the following 5 tasks. Note, Assume all dates are within the current year which is {{ $now.format("yyyy") }} unless stated otherwise.
    1. Summarize the message and generate a title for the event. Make sure it's eye-catching to attract more attendees!
    2. Determine and extract the start date and time for the event. Date must be in the format yyyy-MM-dd and time in the format of hh:mm:ss. If no start time is indicated, the start time is 9am. If you are unable to do so, just leave it blank.
    3. Determine and extract the end date and time for the event. Date must be in the format yyyy-MM-dd and time in the format of hh:mm:ss. If you are unable to do so, just leave it blank.
    4. Where the user message refers to a location or venue, use the SerpAPI tool to search for this location or venue on the web and retrieve the full address.
    5. Additionally, if the location or venue has a website or relevant webpage, return the URL of the location or venue.
    6. Try to identify the event type as one of "social meeting", "social gathering", "business meeting", "business gathering" or "unknown".
    
    user message:
    ```{{ $json.invite.json.text }}```

    Execution prompt · Source text。JSON Schema field of the Structured Output Parser node

    {
      "type": "object",
      "properties": {
        "event_title": { "type": "string" },
        "event_start_date": { "type": "string" },
        "event_start_time": { "type": "string" },
        "event_end_date": { "type": "string" },
        "event_end_time": { "type": "string" },
        "location_address": { "type": "string" },
        "location_url": { "type": "string" },
        "event_type": { "type": "string" }
      }
    }
  4. Create calendar event and reply in Slack thread

    The Create Event node uses Google Calendar to create an event with the AI-parsed title, time, location, and description. The event description includes the original message text and formatted time/location. The Reply Invite with EventId node posts a reply in the original message thread containing the calendar link and #event{id} tag, which subsequent runs use to recognize that the event has already been created and avoid duplicates.

    Execution prompt · Source text。Text field of the Reply Invite with EventId node

    =Event Created!
    Add to Calendar: {{ $json.htmlLink }}
    #event{{ $json.id }}
  5. Track RSVP reactions and sync attendees

    When the event already exists, the workflow enters the "update attendees" branch. Get Invite Reactions fetches the list of ✅ reactions on the message, Extract Invite Reactions splits the reactions, Is Attending filters for white_check_mark, For Each User ID... iterates over users, Get User retrieves user profiles, Should Add Attendee? checks whether the user is already in the event (to avoid duplicate notifications), Get User Email extracts the email, and Add Attendee to Event updates the Google Calendar event attendee list. If a user removes their reaction, a subsequent run will automatically remove them from the attendees.

Prompt you can copy

Setup guidance · Editorial suggestion。Hand to setup assistant; confirm inputs and permissions first

This block is the prompt. Ads are never placed here.

You are an n8n workflow setup assistant. The user wants to recreate the "Slack emoji trigger auto-create Google Calendar events with RSVP sync" workflow. Assist in this order: 1) Confirm the user has an n8n instance, Slack user access token, OpenAI API key, Google Calendar access, and SerpAPI key; 2) Guide them to import workflow ID 2326 from the n8n template library or upload workflow.json; 3) Remind them to replace all placeholders (Google Calendar email, Slack channelId); 4) Explain the purpose of the AI Agent node prompt and the Structured Output Parser field requirements; 5) Suggest testing end-to-end with a sample message first.

After importing the template, be sure to replace [email protected] and C074W8X9UJV with actual values; the AI Agent prompt is built-in and ready to test without modification, but consider tuning it for your team's language.

Source

Organise an Event using Slack, Google Calendar and AI · jimleuk · n8n.io · 2024-07-10

Comments & feedback

Tried this method? Share results, problems or improvements. Comments appear after moderation. Please avoid sensitive information.

Loading…

    Related