WhatsApp Free Consultation Flow Template

A two-screen flow for discovery calls and complimentary consultations. It captures the prospect's main goal, where they are today, whether they want to meet in person, by video or by phone, and when, then their details and consent to receive preparation material before the session.

2 screens 8 fields returned Flow JSON 7.2 Appointment booking Coaches, Aesthetics clinics, Financial advisers, Legal services, Tutors

Use Try it to fill the flow and see the exact response_json it returns.

free-consultation.json Open in Flow Builder
{
  "version": "7.2",
  "screens": [
    {
      "id": "CONSULTATION",
      "title": "Free consultation",
      "data": {},
      "layout": {
        "type": "SingleColumnLayout",
        "children": [
          {
            "type": "Form",
            "name": "form_consultation",
            "children": [
              {
                "type": "TextHeading",
                "text": "What would you like help with?"
              },
              {
                "type": "TextBody",
                "text": "Your answers help us prepare, so the session is spent on advice rather than background questions."
              },
              {
                "type": "RadioButtonsGroup",
                "name": "main_goal",
                "label": "Main goal",
                "data-source": [
                  {
                    "id": "goal_career_change",
                    "title": "Change or grow my career",
                    "description": "Coaching for a new role, promotion or business launch"
                  },
                  {
                    "id": "goal_skin_concern",
                    "title": "Treat a skin concern",
                    "description": "Acne, pigmentation, fine lines or scarring"
                  },
                  {
                    "id": "goal_finances",
                    "title": "Get my finances in order",
                    "description": "Savings, debt, pensions or a big purchase"
                  },
                  {
                    "id": "goal_legal_matter",
                    "title": "Understand a legal matter",
                    "description": "Contracts, property, family or business issues"
                  },
                  {
                    "id": "goal_exam_results",
                    "title": "Improve exam results",
                    "description": "Tutoring plans for school or university exams"
                  }
                ],
                "required": true
              },
              {
                "type": "TextArea",
                "name": "current_challenge",
                "label": "Where are you now?",
                "required": true,
                "helper-text": "A few lines on your situation and what you have tried",
                "max-length": 500
              },
              {
                "type": "RadioButtonsGroup",
                "name": "meeting_format",
                "label": "How would you like to meet?",
                "data-source": [
                  {
                    "id": "format_in_person",
                    "title": "In person"
                  },
                  {
                    "id": "format_video",
                    "title": "Video call"
                  },
                  {
                    "id": "format_phone",
                    "title": "Phone call"
                  }
                ],
                "required": true
              },
              {
                "type": "DatePicker",
                "name": "preferred_date",
                "label": "Preferred date",
                "required": true
              },
              {
                "type": "Dropdown",
                "name": "preferred_time",
                "label": "Preferred time of day",
                "data-source": [
                  {
                    "id": "time_morning",
                    "title": "Morning"
                  },
                  {
                    "id": "time_afternoon",
                    "title": "Afternoon"
                  },
                  {
                    "id": "time_evening",
                    "title": "Evening"
                  }
                ],
                "required": true
              },
              {
                "type": "Footer",
                "label": "Continue",
                "on-click-action": {
                  "name": "navigate",
                  "next": {
                    "type": "screen",
                    "name": "YOUR_DETAILS"
                  },
                  "payload": {}
                }
              }
            ]
          }
        ]
      }
    },
    {
      "id": "YOUR_DETAILS",
      "title": "Your details",
      "terminal": true,
      "data": {},
      "layout": {
        "type": "SingleColumnLayout",
        "children": [
          {
            "type": "Form",
            "name": "form_your_details",
            "children": [
              {
                "type": "TextSubheading",
                "text": "Where should we send your confirmation?"
              },
              {
                "type": "TextInput",
                "name": "full_name",
                "label": "Full name",
                "input-type": "text",
                "required": true
              },
              {
                "type": "TextInput",
                "name": "email",
                "label": "Email",
                "input-type": "email",
                "required": true,
                "helper-text": "For the calendar invite and meeting link"
              },
              {
                "type": "OptIn",
                "name": "prep_material_optin",
                "label": "Send me a short questionnaire and preparation tips on WhatsApp before my consultation."
              },
              {
                "type": "TextCaption",
                "text": "We will confirm the exact time by message within one business day."
              },
              {
                "type": "Footer",
                "label": "Book consultation",
                "on-click-action": {
                  "name": "complete",
                  "payload": {
                    "main_goal": "${screen.CONSULTATION.form.main_goal}",
                    "current_challenge": "${screen.CONSULTATION.form.current_challenge}",
                    "meeting_format": "${screen.CONSULTATION.form.meeting_format}",
                    "preferred_date": "${screen.CONSULTATION.form.preferred_date}",
                    "preferred_time": "${screen.CONSULTATION.form.preferred_time}",
                    "full_name": "${form.full_name}",
                    "email": "${form.email}",
                    "prep_material_optin": "${form.prep_material_optin}"
                  }
                }
              }
            ]
          }
        ]
      }
    }
  ]
}

Raw JSON for scripts: curl -s https://whautomate.com/whatsapp-flow-templates/free-consultation.json

Import in 60 seconds
  1. Copy the JSON above (or edit it first in the Flow Builder).
  2. In WhatsApp Manager, open Account tools > Flows, create a flow and choose Appointment booking as the category.
  3. Paste into the JSON editor, check the preview, then Publish.
  4. Send it with the Flow ID, as an interactive message or through a template's Flow button.

Not technical? Skip the JSON and send it from Whautomate with a drag-and-drop editor.

About this free consultation booking flow

A free consultation is a sales meeting that has to feel like help. The fastest way to waste one is to spend the first fifteen minutes asking what the person wants. This flow collects the goal and the backstory in advance, so the coach, adviser or clinician opens the session already knowing whether it is a skin concern, a debt consolidation question or a child two grades behind in maths.

Screen one covers the consultation: a goal radio with descriptions that help the person put words to their situation, a TextArea for the current challenge, the meeting format and a preferred date and time of day. Screen two collects name and email and ends with an OptIn to receive prep material, such as a short questionnaire, a what-to-bring list or an intake guide.

The prep-material OptIn does double duty. It gives you explicit consent to send a pre-session message, and people who tick it show up far more reliably, because they have already engaged with you before the meeting. Treat unticked submissions as higher no-show risk and send a reminder closer to the day.

Fields this flow returns

When the customer taps the final button, the complete action sends these keys back in response_json. Fields from earlier screens are pulled in with global references (${screen.SCREEN_ID.form.field}), so nothing is lost between screens.

KeyComponentScreenRequiredReturnsExample
main_goal
goal_career_change, goal_skin_concern, goal_finances, goal_legal_matter, goal_exam_results
RadioButtonsGroup CONSULTATION Yes item id "goal_career_change"
current_challenge TextArea CONSULTATION Yes string "Eight years in retail management, want to move into HR but no formal qualifications yet."
meeting_format
format_in_person, format_video, format_phone
RadioButtonsGroup CONSULTATION Yes item id "format_video"
preferred_date DatePicker CONSULTATION Yes YYYY-MM-DD "2026-10-20"
preferred_time
time_morning, time_afternoon, time_evening
Dropdown CONSULTATION Yes item id "time_evening"
full_name TextInput YOUR_DETAILS Yes string "Samira Haddad"
email TextInput (email) YOUR_DETAILS Yes string "[email protected]"
prep_material_optin OptIn YOUR_DETAILS No boolean true

Optional fields the customer leaves empty may be missing from response_json or arrive empty. Treat every optional key as nullable in your handler.

No developer needed

Send the Free Consultation Booking flow without touching code

You do not need to be technical to use WhatsApp Flows. Connect your WhatsApp number, set the flow up in our drag-and-drop editor and send it to customers in a few clicks. No JSON, no API calls, no WhatsApp Manager.

1

Connect your number

Log in with Facebook and connect your WhatsApp number in a few minutes. No API keys or servers to set up.

2

Set up the flow

Start from a ready-made form or import this one, then drag fields in, change the wording and try it on a live phone preview. Click Publish when it looks right.

3

Send it anywhere

Send it from any chat in the Team Inbox, on web or mobile, send it automatically from an automation, or broadcast it to a list.

4

Get the answers

Every answer is saved on the customer's profile and chat, and your team can be notified the moment a form comes in.

7-day free trial, no credit card required.

Sample webhook payload (nfm_reply)

This is what your webhook receives when a customer submits the flow. response_json is a JSON string: parse it, then match flow_token to the record you created when you sent the message. The customer's WhatsApp number is in messages[0].from.

response_json (parsed)
{
  "flow_token": "bk_8f2c41",
  "main_goal": "goal_career_change",
  "current_challenge": "Eight years in retail management, want to move into HR but no formal qualifications yet.",
  "meeting_format": "format_video",
  "preferred_date": "2026-10-20",
  "preferred_time": "time_evening",
  "full_name": "Samira Haddad",
  "email": "[email protected]",
  "prep_material_optin": true
}
POST your-webhook (full event)
{
  "object": "whatsapp_business_account",
  "entry": [
    {
      "id": "WHATSAPP_BUSINESS_ACCOUNT_ID",
      "changes": [
        {
          "field": "messages",
          "value": {
            "messaging_product": "whatsapp",
            "metadata": {
              "display_phone_number": "15550001234",
              "phone_number_id": "PHONE_NUMBER_ID"
            },
            "contacts": [
              {
                "profile": {
                  "name": "Alex Morgan"
                },
                "wa_id": "14155550123"
              }
            ],
            "messages": [
              {
                "context": {
                  "from": "15550001234",
                  "id": "wamid.SENT_FLOW_MESSAGE_ID"
                },
                "from": "14155550123",
                "id": "wamid.INCOMING_MESSAGE_ID",
                "timestamp": "1760000000",
                "type": "interactive",
                "interactive": {
                  "type": "nfm_reply",
                  "nfm_reply": {
                    "name": "flow",
                    "body": "Sent",
                    "response_json": "{\"flow_token\":\"bk_8f2c41\",\"main_goal\":\"goal_career_change\",\"current_challenge\":\"Eight years in retail management, want to move into HR but no formal qualifications yet.\",\"meeting_format\":\"format_video\",\"preferred_date\":\"2026-10-20\",\"preferred_time\":\"time_evening\",\"full_name\":\"Samira Haddad\",\"email\":\"[email protected]\",\"prep_material_optin\":true}"
                  }
                }
              }
            ]
          }
        }
      ]
    }
  ]
}

Deploy with the WhatsApp Cloud API

Prefer code over WhatsApp Manager? Save the template as free-consultation.json and run these calls with a system user token that has whatsapp_business_management and whatsapp_business_messaging permissions.

1. Create the flow

bash
curl -X POST 'https://graph.facebook.com/v23.0/{WABA_ID}/flows' \
  -H 'Authorization: Bearer {ACCESS_TOKEN}' \
  -H 'Content-Type: application/json' \
  -d '{"name": "free_consultation", "categories": ["APPOINTMENT_BOOKING"]}'
# => {"id": "{FLOW_ID}"}

2. Upload the Flow JSON

bash
curl -X POST 'https://graph.facebook.com/v23.0/{FLOW_ID}/assets' \
  -H 'Authorization: Bearer {ACCESS_TOKEN}' \
  -F '[email protected];type=application/json' \
  -F 'name=flow.json' \
  -F 'asset_type=FLOW_JSON'
# => {"success": true, "validation_errors": []}

3. Publish it

bash
curl -X POST 'https://graph.facebook.com/v23.0/{FLOW_ID}/publish' \
  -H 'Authorization: Bearer {ACCESS_TOKEN}'

Publishing is permanent: a published flow cannot be edited. To change it later, create a new flow (or clone it with clone_flow_id) and publish the new version.

4. Send it to a customer

Inside the 24-hour customer service window, send an interactive flow message. Outside it, create a message template with a Flow button that points to this flow, and send the template instead.

send-free-consultation.json
{
  "messaging_product": "whatsapp",
  "recipient_type": "individual",
  "to": "14155550123",
  "type": "interactive",
  "interactive": {
    "type": "flow",
    "header": {
      "type": "text",
      "text": "Your free consultation"
    },
    "body": {
      "text": "Tell us what you want to achieve and pick a time. We will come to the session prepared, so you get real advice from the first minute."
    },
    "footer": {
      "text": "No cost, no obligation"
    },
    "action": {
      "name": "flow",
      "parameters": {
        "flow_message_version": "3",
        "flow_token": "bk_8f2c41",
        "flow_id": "YOUR_FLOW_ID",
        "flow_cta": "Book free consultation",
        "flow_action": "navigate",
        "flow_action_payload": {
          "screen": "CONSULTATION"
        }
      }
    }
  }
}
bash
curl -X POST 'https://graph.facebook.com/v23.0/{PHONE_NUMBER_ID}/messages' \
  -H 'Authorization: Bearer {ACCESS_TOKEN}' \
  -H 'Content-Type: application/json' \
  -d @send-free-consultation.json

When to send it

Discovery-call CTA

Reply with the flow when someone messages from your "Book a free call" link or bio link, so the booking happens in the chat they opened.

After a lead magnet

Someone who downloaded your guide or checklist is warm. Send the flow a day later through a Flow-button template while the topic is fresh.

Undecided enquiries

When a prospect asks detailed questions but will not commit to a paid session, offer the consultation flow as a low-risk next step.

Seasonal intake

Tutors before exam season, financial advisers before tax deadlines and aesthetics clinics before the holidays can broadcast it to past enquirers.

How to customise this template

  • Rewrite the goal options in your client's language, not your service names. "Clear my acne scars" converts better than "Fractional laser resurfacing".
  • If you only meet online, remove the in-person option or the whole format radio, and put your video tool in the TextBody so there are no surprises.
  • Link your privacy policy or consultation terms with an EmbeddedLink on the last screen if you work in a regulated field such as finance, legal or medical aesthetics.
  • Tie the prep material to the goal id in your webhook: send a skin questionnaire for goal_skin_concern and a document checklist for goal_finances.

Open this template in the Flow Builder to make these changes visually. The builder keeps field names unique and regenerates the completion payload for you.

Common mistakes to avoid

  • Do not ask for sensitive details in the TextArea without saying how they are handled. For medical or financial cases, invite a summary and keep specifics for the session.
  • OptIn labels allow 120 characters. Name exactly what you will send, because a vague "I agree to receive messages" weakens the consent record.
  • Avoid calling the session a "consultation" in regulated industries where that word implies formal advice. "Intro call" may be the safer label for legal and finance.
  • The preferred date is a wish, not a booking. Confirm the exact time by message and send a calendar invite, or the prospect may not treat it as fixed.

Need live availability instead of a "preferred time"?

A static flow can only collect a requested time, so your team still has to confirm it by hand. Whautomate ships a built-in appointment booking flow that reads your real services, staff and open slots, books the appointment directly and sends the confirmation. It is created and published in your WhatsApp account from an automation template, and it runs on an encrypted endpoint Whautomate hosts. There is no endpoint code for you to write.

  • Live services, staff and time slots from your calendar
  • Books directly, with no manual confirmation step
  • Multi-location version picks the branch first

7-day free trial, no credit card required.

Frequently asked questions

It sits in between. We publish it with the APPOINTMENT_BOOKING Meta category because the outcome is a scheduled session, but it behaves like a lead form: most submissions are new contacts, and the answers are qualification data.
Read prep_material_optin from response_json. It is true when ticked and false otherwise. Send the questionnaire or checklist only when it is true, and log the flow_token with the consent timestamp.
Not with a static flow, which records a preferred date and time of day. Live slot selection needs a data_exchange endpoint connected to your calendar. Whautomate's built-in appointment booking flow does that using your real services and open slots.
It is set as required because it is what makes the session useful. If your completion rate drops, make it optional and ask the question at the start of the call instead.

The Complete Omnichannel Customer Engagement Platform

Go beyond free tools. Automate conversations, build AI chatbots, send broadcast campaigns, book appointments, sell products, and manage every messaging channel from one powerful platform. Trusted by thousands of businesses worldwide.

  • WhatsApp, Instagram, Messenger, Telegram & Live Chat
  • AI chatbots & no-code automation
  • Broadcast campaigns & analytics
  • Appointment & class booking
  • E-commerce, Shopify & WooCommerce integration
  • CRM, invoicing & payment collection

No credit card required. Free 7-day trial. Visit our pricing page for plans.