Mindket

Trip plan email with flights, hotels and activities

Newversion 1 · updated

Overview

An n8n workflow that answers a web request with a trip plan by email. Claude finds the airport codes and researches things to do, SerpApi searches Google Flights and Google Hotels, and Gmail sends the HTML plan.

Trip plan email with flights, hotels and activities is an n8n workflow in the Productivity category, listed by Mindket. It is free. This is version 1, last updated on . Download it on this page or copy its JSON, then import it into an n8n canvas. Nothing runs until you activate it in n8n.

At a glance

Runs in
  • n8n Cloud: import the file into a new workflow there
  • Your own n8n server: the same file and steps
  • A voice agent: give its tool the webhook’s production address
  • A form or another workflow: post the seven fields from there

Platform

Connects 3 apps

How it works

Trigger

Web request

It starts when a POST reaches the travel webhook with:

  • The origin and destination cities
  • The departure and return dates
  • The number of travelers
  • The activities wanted
  • An email address

Actions

  1. Claude turns the cities into airport codes and makes sure the dates lie ahead
  2. Claude researches activities at the destination with web search
  3. SerpApi searches Google Hotels and Google Flights for those dates
  4. Claude writes an HTML email with the flights, hotels and activities
  5. Gmail sends it, and the caller gets a confirmation sentence

Result

A trip plan email with two flights, three highly rated hotels and three activities, the hotels and activities linked

Integrations

What you need before you start.

Anthropic

Language model

Runs Claude for the airport codes, the activity research with web search and the email itself.

NeedsAnthropic API key

SerpApi

Search

Searches Google Flights and Google Hotels for the trip’s dates and number of travelers.

NeedsSerpApi API key, as Query Auth

Gmail

Email

Sends the plan as an HTML email.

NeedsA Google account to sign in with

Workflow check

Checked by Mindket on 13 Nov 2026

Steps
10 steps, starting when its webhook is called
AI
3 steps call an AI model: Airport Codes & Dates, Activities and Email Agent
Sign-ins
Signs in to: SerpApi, Gmail and Anthropic
API keys
No API key is left in the file
Step types
Mindket’s checker reads 7 of its 8 step types. It does not read: Anthropic

Read from the workflow’s file, not from a run.

About

What it is

This n8n workflow answers a web request with a travel plan by email. Another app posts the two cities, the dates, the number of travelers and the kind of activities wanted. Claude turns the cities into airport codes and researches activities on the web. SerpApi then finds hotels on Google Hotels and flights on Google Flights. Claude writes an HTML email around two flights, three hotels and three activities, Gmail sends it, and the caller gets a confirmation. Fourteen nodes run it.

Who it suits

Small travel agencies and trip planners who want a first draft for a client, and builders of voice or chat assistants who need a trip tool to call. Its reply is shaped for a voice agent’s end-call tool. Skip it if you want bookings made. It books nothing. The hotels and activities come as links, and the flights as plain lines with a price.

Who uses it, and how
IndustryWho uses itHow they use itExample
Travel agenciesAgents who answer trip requestsCall it from the request form and read the plan before it goes to the clientAn agent gets a Lisbon plan in the inbox and adds the hotel the client asked about.
Voice assistantsBuilders of phone or web voice agentsPoint the agent’s tool at the webhook and let it end the call on the replyA caller asks for a week in Rome, and the agent says the plan is on its way.
Company travelOffice managersSend each traveler their own plan by putting the request’s email in Send toA manager plans a team’s trip to a conference, and each person gets the email.
Travel writingBloggersRun a few city pairs to collect hotel and activity ideasA blogger compares three weekend trips from Chicago before writing about them.

You need a little n8n: importing a file, adding three credentials and sending a POST request. Its author puts setup at about 13 minutes.

Where to use it

Any n8n that can reach Anthropic, SerpApi and Gmail will run it, and anything that can send JSON can start it.

  • n8n Cloud: import the file into a new workflow there
  • Your own n8n server: the same file and steps
  • A voice agent: give its tool the webhook’s production address
  • A form or another workflow: post the seven fields from there

Setup

Get it saves a zip with workflow.json and Mindket’s setup notes in your downloads folder.

What you need first
NeedDetail
n8nOn n8n Cloud or on a server of your own
AnthropicAn API key, with web search on for Activities
SerpApiAn account and its API key, for the flight and hotel searches
GmailAn account to send the plans from
A callerAnything that can POST a JSON body: another workflow, a form tool, a voice agent or curl
  1. In n8n, create a workflow, open its menu, choose Import from File and pick workflow.json.
  2. Add an Anthropic credential and select it in Anthropic Chat Model, Anthropic Chat Model1 and Activities.
  3. Add a Query Auth credential for SerpApi, with api_key as the name and your key as the value. Select it in Flights and Resorts.
  4. Add a Gmail OAuth2 credential in Send Plan and replace YOUR_EMAIL with the inbox for the plans. To mail each traveler, put {{ $('Set Fields').item.json.email }} there.
  5. In the system message of Email Agent, replace YOUR_TEAM_NAME with the name to sign with.
  6. Save, send the request below to the test address of Webhook, then publish and use the production address.

The webhook takes a POST at the path travel. Spell the departure date depature_date, as the file does, or that field arrives empty:

{
  "origin": "Chicago",
  "destination": "Lisbon",
  "depature_date": "2026-12-12",
  "return_date": "2026-12-19",
  "travelers": 2,
  "activities": "food tours and day trips",
  "email": "you@example.com"
}

How to use it

Send the request to the webhook. The caller then waits. The answer comes only after the email is out, so Claude and both searches run first. Read the first plans in your own inbox before you point Send to at travelers.

What to change for a different result
To changeWhere
Sections, tone and lengthThe system message of Email Agent, which asks for a line after each section and at most 1,000 words
How many results the email namesThe text of Email Agent, which lists flights [0] and [1] and hotels and activities [0] to [2]
Hotel ordersort_by in Resorts: 3 lowest price, 8 highest rating, 13 most reviewed
Activity researchThe prompt of Activities and its limit of five searches
Modelclaude-sonnet-5-5 in the two chat models and in Activities

Example

The request above goes in. Airport Codes & Dates answers in its parser’s shape, with Claude choosing the airports:

{
  "origin": "ORD",
  "destination": "LIS",
  "departure": "2026-12-12",
  "return": "2026-12-19"
}

The email’s subject names the dates and Lisbon. Its body opens with a short welcome, then lists the two flights with airline, time, duration and price. The hotels follow with links and pictures, then the activities with links. The caller receives this, cut short here, with the subject at the end of description:

{
  "type": "system",
  "name": "end_call",
  "description": "An email has been sent with the travel plan for: …",
  "response_timeout_secs": 20
}

For newcomers and experts

If you are new. n8n draws a workflow as boxes joined by lines, and each box, a node, does one job. A webhook is an address that starts the workflow when something posts to it. Send the test request first. Then open each node in the run to see what it received and what it sent.

For experts. Three Claude steps share the work. Only the last writes for a reader.

The three Claude steps
NodeKindWhat to know
Airport Codes & DatesA chain with a parserGets the current time, so it can move dates that lie in the past
ActivitiesAnthropic’s own node with web searchUp to five searches and 4,000 tokens. Its JSON answer is never read
Email AgentAn agent with a parser and no toolsGets a fixed text built from the searches and returns subject and emailBody

The file named claude-sonnet-4-20250514 in all three. Anthropic’s deprecations page, read on 2 November 2026, lists it as retired on 15 June 2026, so the copy here uses claude-sonnet-5-5, the replacement it names.

Good to know

Three gaps in the prompt text change what the email says.

  • Nightly rates: the first two hotels show the third hotel’s rate, because their lines read properties[2]. Change them to [0] and [1]
  • Activities: Email Agent reads them from the raw search results, and their description is an encrypted string, so Claude writes it from the title
  • Fewer results fail: a search with fewer than two flights or three hotels stops the run at Email Agent, and no email goes out
  • One leg only: each flight shows its first leg, so a connection’s second leg is missing
  • Billing: Anthropic bills three Claude calls and each web search, and SerpApi counts two searches a run
  • Open address: once it is published, anyone with the webhook’s address can start a run on your keys, so add Header Auth if others could find it
  • Your data: the cities, dates and wishes go to Anthropic and SerpApi, and the plan goes through Gmail
  • Credentials: the JSON holds none, and no personal address or brand name from its author

README and files

README

Trip plan email with flights, hotels and activities

An n8n workflow that answers one web request with a travel plan by email. Another app, a form or a voice agent posts the
cities, the dates, the number of travelers and the kind of things to do. Claude turns the cities into airport codes,
searches the web for activities, and SerpApi finds flights on Google Flights and hotels on Google Hotels. Claude then
writes an HTML email with the three lists, Gmail sends it, and the request gets a one-line confirmation back.

What is inside

  • workflow.json: the workflow as n8n exports it, fourteen nodes and no sticky notes. It holds no credential.
  • README.md: these notes.

What we changed from the original copy

  • Send Plan sent every plan to one personal address. It now sends to YOUR_EMAIL.
  • The email prompt signed off with a travel brand's name. It now says YOUR_TEAM_NAME.
  • All three Claude steps named claude-sonnet-4-20250514. Anthropic's deprecations page, read on 2 November 2026, lists
    that model as retired on 15 June 2026, so requests to it fail. They now use claude-sonnet-5-5, the replacement that
    page names.

Before you start

  • An n8n instance, on n8n Cloud or your own server.
  • An Anthropic API key. Activities uses Claude's web search, which is on unless an admin turned it off in the Claude
    Console.
  • A SerpApi account and its API key.
  • A Gmail account to send from.
  • Something that can send a POST request with a JSON body: another workflow, a form tool, a voice agent or curl.

Set it up

  1. In n8n, create a workflow, open its menu and choose Import from File. Pick workflow.json.
  2. Add an Anthropic credential and select it in Anthropic Chat Model, Anthropic Chat Model1 and Activities.
  3. Add a Query Auth credential for SerpApi: the parameter name is api_key and the value is your key. Select it in
    Flights and Resorts.
  4. Add a Gmail OAuth2 credential and select it in Send Plan. Replace YOUR_EMAIL in Send to with the inbox for the
    plans. To mail each traveler instead, put {{ $('Set Fields').item.json.email }} there.
  5. In the system message of Email Agent, replace YOUR_TEAM_NAME with the name the email should be signed with.
  6. Save. Copy the test address from Webhook, send it the request below, then publish the workflow and use its
    production address.

The request

Webhook takes a POST at the path travel. Set Fields reads these fields from the JSON body. Spell the departure date
depature_date, as the file does, or that field arrives empty.

{
  "origin": "Chicago",
  "destination": "Lisbon",
  "depature_date": "2026-12-12",
  "return_date": "2026-12-19",
  "travelers": 2,
  "activities": "food tours and day trips",
  "email": "you@example.com"
}

The answer comes back as JSON once the email is out. Its description holds the sentence from Response, and the rest
of it looks like the settings of a voice agent's end-call tool, so a voice agent can read the result and hang up.

How a run goes

  1. Set Fields takes the seven values out of the request body.
  2. Airport Codes & Dates has Claude turn both cities into airport codes and check that the dates lie in the future,
    against the current time. Locations & Dates holds its answer to origin, destination, departure and return.
  3. Activities asks Claude to research things to do of the requested kind at the destination, with up to five web
    searches.
  4. Resorts searches Google Hotels through SerpApi for the destination, the dates and the number of adults, sorted by
    highest rating.
  5. Flights searches Google Flights through SerpApi between the two airport codes on those dates.
  6. Email Agent receives two flights, three hotels and three activities in a fixed text and writes the email as HTML
    in four parts: an introduction, flights, hotels and activities. Subject & Email holds its answer to subject and
    emailBody.
  7. Send Plan sends it as an HTML email, Response writes the confirmation sentence and Respond to Webhook returns it.

Change the look

  • Sections, tone and length: the system message of Email Agent. It asks for a horizontal line after each section,
    hotel pictures at a fifth of the width and no more than 1,000 words.
  • How many results the email names: the text of Email Agent, which lists flights [0] and [1], and hotels and
    activities [0] to [2].
  • Hotel order: sort_by in Resorts. SerpApi's Google Hotels documentation gives 3 for lowest price,
    8 for highest rating and 13 for most reviewed.
  • Activity research: the prompt of Activities, and its search limit of 5.
  • Model: claude-sonnet-5-5 in Anthropic Chat Model, Anthropic Chat Model1 and Activities.

Good to know

  • Nightly rates: the first and second hotels show the third hotel's rate per night and total, because their lines in
    the Email Agent text read properties[2]. Change those two to properties[0] and properties[1].
  • Activities: Email Agent reads them from the raw search results in content[1] of the Activities answer, which
    holds them only when Claude searches before it writes any text. Their description is the search result's
    encrypted_content, an encrypted string, so Claude writes the descriptions from the titles. The JSON list the
    Activities prompt asks for is never read.
  • Fewer results fail: the text expects two flights, three hotels with two nearby places each and three activities. A
    search that returns fewer stops the run at Email Agent, and no email goes out.
  • One leg only: each flight line reads flights[0], so the second leg of a connection is left out.
  • The request's email is read but not used until you change Send to (step 4).
  • Billing: Anthropic bills three Claude calls and each web search, and SerpApi counts two searches a run.
  • Open address: once the workflow is published, anyone with the webhook's address can start a run on your keys. Add
    Header Auth in the Webhook node's Authentication if others could find it.
  • Your data: the cities, dates and activity wishes go to Anthropic and SerpApi, and the plan goes through Gmail.
  • Credentials: the JSON holds none, no personal address and no brand name from its author.
Files
README.md  6 KB
workflow.json  20 KB

2 files, 26 KB, downloaded as a zip.

What’s new

  • Version 1 · 2026-11-03

Reviews

No ratings yet

Write a review

No reviews yet.

More from Mindket

See all from Mindket

Bonsai-27B-GGUF

lmstudio-community · Kit

A GGUF conversion of the 27B Bonsai model for LM Studio, with a 3.80 GB Q1_0 language file and a 0.93 GB BF16 vision projector. Tested for text, vision and par…

New

Runs DeepSeek-V4.1-Flash-1017 as a 2.9 bits-per-weight EXL3 quantization, a 196 GiB copy for people serving large models on their own hardware. Perplexity stay…

New

MusicGen Small

facebook · Kit

Generates short music clips from a text description or an audio prompt, in the small checkpoint of facebook's MusicGen. It suits developers and music hobbyists…

New

Similar in Productivity

See all in Productivity

ACE-Step 1.5 XL SFT

ACE-Step · Kit

Generates music from text with a 4B diffusion decoder, 50 steps and guidance control, aiming for higher audio quality than the base. For creators with a GPU of…

New

Guizang PPT Skill

op7418 · Skill

Skill that makes single-file HTML slide decks, slide illustrations and platform covers in two visual styles, with a presenter mode for rehearsal. For speakers…

New29.8k

Frontend Slides

zarazhangrui · Skill

Builds HTML presentations from scratch or from a PowerPoint file and shows visual style previews to pick from, for people who want web slides with no CSS or Ja…

New32.3k