WhatsApp Event Feedback Flow Template

A one-screen post-event survey covering the overall rating, the best session, how relevant the content was, the speakers, whether the attendee would come again and what topics they want next time.

1 screen 6 fields returned Flow JSON 7.2 Survey Event hosts, Studios, Consultants, Tutors

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

event-feedback.json Open in Flow Builder
{
  "version": "7.2",
  "screens": [
    {
      "id": "EVENT_FEEDBACK",
      "title": "Event feedback",
      "terminal": true,
      "data": {},
      "layout": {
        "type": "SingleColumnLayout",
        "children": [
          {
            "type": "Form",
            "name": "form_event_feedback",
            "children": [
              {
                "type": "TextHeading",
                "text": "How was the event?"
              },
              {
                "type": "TextBody",
                "text": "Your answers shape what we run next. 5 is excellent, 1 is very poor."
              },
              {
                "type": "RadioButtonsGroup",
                "name": "overall_rating",
                "label": "Overall rating",
                "data-source": [
                  {
                    "id": "overall_5",
                    "title": "5 - Excellent"
                  },
                  {
                    "id": "overall_4",
                    "title": "4 - Good"
                  },
                  {
                    "id": "overall_3",
                    "title": "3 - Okay"
                  },
                  {
                    "id": "overall_2",
                    "title": "2 - Poor"
                  },
                  {
                    "id": "overall_1",
                    "title": "1 - Very poor"
                  }
                ],
                "required": true
              },
              {
                "type": "Dropdown",
                "name": "best_session",
                "label": "Best session",
                "data-source": [
                  {
                    "id": "session_opening",
                    "title": "Opening talk"
                  },
                  {
                    "id": "session_workshop",
                    "title": "Hands-on workshop"
                  },
                  {
                    "id": "session_panel",
                    "title": "Panel discussion"
                  },
                  {
                    "id": "session_qa",
                    "title": "Q&A"
                  },
                  {
                    "id": "session_networking",
                    "title": "Networking"
                  }
                ]
              },
              {
                "type": "RadioButtonsGroup",
                "name": "content_relevance",
                "label": "How relevant was the content?",
                "data-source": [
                  {
                    "id": "very_relevant",
                    "title": "Very relevant"
                  },
                  {
                    "id": "mostly_relevant",
                    "title": "Mostly relevant"
                  },
                  {
                    "id": "somewhat_relevant",
                    "title": "Somewhat relevant"
                  },
                  {
                    "id": "not_relevant",
                    "title": "Not relevant to me"
                  }
                ],
                "required": true
              },
              {
                "type": "RadioButtonsGroup",
                "name": "speaker_rating",
                "label": "Speakers",
                "data-source": [
                  {
                    "id": "speaker_5",
                    "title": "5 - Excellent"
                  },
                  {
                    "id": "speaker_4",
                    "title": "4 - Good"
                  },
                  {
                    "id": "speaker_3",
                    "title": "3 - Okay"
                  },
                  {
                    "id": "speaker_2",
                    "title": "2 - Poor"
                  },
                  {
                    "id": "speaker_1",
                    "title": "1 - Very poor"
                  }
                ],
                "required": true
              },
              {
                "type": "RadioButtonsGroup",
                "name": "attend_again",
                "label": "Would you attend again?",
                "data-source": [
                  {
                    "id": "again_yes",
                    "title": "Yes"
                  },
                  {
                    "id": "again_maybe",
                    "title": "Maybe"
                  },
                  {
                    "id": "again_no",
                    "title": "No"
                  }
                ],
                "required": true
              },
              {
                "type": "TextArea",
                "name": "suggested_topics",
                "label": "Topics for next time",
                "helper-text": "What should we cover at the next event?",
                "max-length": 500
              },
              {
                "type": "Footer",
                "label": "Send feedback",
                "on-click-action": {
                  "name": "complete",
                  "payload": {
                    "overall_rating": "${form.overall_rating}",
                    "best_session": "${form.best_session}",
                    "content_relevance": "${form.content_relevance}",
                    "speaker_rating": "${form.speaker_rating}",
                    "attend_again": "${form.attend_again}",
                    "suggested_topics": "${form.suggested_topics}"
                  }
                }
              }
            ]
          }
        ]
      }
    }
  ]
}

Raw JSON for scripts: curl -s https://whautomate.com/whatsapp-flow-templates/event-feedback.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 Survey 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 event feedback flow

Post-event feedback is only worth collecting if it changes the next event. That means asking about the parts you can actually change: which session landed, whether the content matched the audience, how the speakers came across, and what people want to learn next. This template asks exactly those questions on a single screen, so attendees can answer from the train home.

Each question maps to a decision. The overall rating tracks the event over time. "Best session" is a dropdown of your actual agenda, which tells you what to repeat or expand. Content relevance separates a well-run event with the wrong audience from a badly run one. Speaker rating and "would attend again" predict whether your next invitation will be accepted.

The final field, suggested topics, is the one organisers use most. A handful of open-text answers from real attendees is a better agenda brief than any brainstorm, and it arrives in the same WhatsApp thread you will use to invite them next time.

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
overall_rating
overall_5, overall_4, overall_3, overall_2, overall_1
RadioButtonsGroup EVENT_FEEDBACK Yes item id "overall_4"
best_session
session_opening, session_workshop, session_panel, session_qa, session_networking
Dropdown EVENT_FEEDBACK No item id "session_workshop"
content_relevance
very_relevant, mostly_relevant, somewhat_relevant, not_relevant
RadioButtonsGroup EVENT_FEEDBACK Yes item id "very_relevant"
speaker_rating
speaker_5, speaker_4, speaker_3, speaker_2, speaker_1
RadioButtonsGroup EVENT_FEEDBACK Yes item id "speaker_5"
attend_again
again_yes, again_maybe, again_no
RadioButtonsGroup EVENT_FEEDBACK Yes item id "again_yes"
suggested_topics TextArea EVENT_FEEDBACK No string "Pricing strategy for small studios, and more time for Q&A."

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 Event Feedback 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",
  "overall_rating": "overall_4",
  "best_session": "session_workshop",
  "content_relevance": "very_relevant",
  "speaker_rating": "speaker_5",
  "attend_again": "again_yes",
  "suggested_topics": "Pricing strategy for small studios, and more time for Q&A."
}
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\",\"overall_rating\":\"overall_4\",\"best_session\":\"session_workshop\",\"content_relevance\":\"very_relevant\",\"speaker_rating\":\"speaker_5\",\"attend_again\":\"again_yes\",\"suggested_topics\":\"Pricing strategy for small studios, and more time for Q&A.\"}"
                  }
                }
              }
            ]
          }
        }
      ]
    }
  ]
}

Deploy with the WhatsApp Cloud API

Prefer code over WhatsApp Manager? Save the template as event-feedback.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": "event_feedback", "categories": ["SURVEY"]}'
# => {"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-event-feedback.json
{
  "messaging_product": "whatsapp",
  "recipient_type": "individual",
  "to": "14155550123",
  "type": "interactive",
  "interactive": {
    "type": "flow",
    "header": {
      "type": "text",
      "text": "Thanks for coming"
    },
    "body": {
      "text": "It was great to see you at the workshop yesterday. Could you tell us how it went? One screen, about a minute."
    },
    "footer": {
      "text": "Reply STOP to opt out"
    },
    "action": {
      "name": "flow",
      "parameters": {
        "flow_message_version": "3",
        "flow_token": "bk_8f2c41",
        "flow_id": "YOUR_FLOW_ID",
        "flow_cta": "Share feedback",
        "flow_action": "navigate",
        "flow_action_payload": {
          "screen": "EVENT_FEEDBACK"
        }
      }
    }
  }
}
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-event-feedback.json

When to send it

The morning after

Send it the next morning, not during the closing drinks. Attendees have had time to reflect but still remember individual sessions.

After a workshop series

For a multi-week course or workshop run, send it after the final session and list every session in the dropdown.

After a webinar

Online events have lower commitment and faster forgetting. Send it within two hours of the stream ending.

Only to people who attended

Filter by check-in, not by RSVP. Asking no-shows to rate an event produces guesses that pollute your numbers.

How to customise this template

  • Replace the best_session options with your agenda titles, each under 30 characters. Use the item description for the speaker name or time slot.
  • For a single-speaker event, change the speaker question label to name the role ("Rate the host") and remove the best session dropdown.
  • If you run the same format monthly, keep every item id stable and only change titles, so ratings compare cleanly from one edition to the next.
  • Add a TextCaption with a date for next time if it is already set. People who rate highly are the most likely to book immediately.

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 send one generic flow for every event without updating the session list. A dropdown of last month's sessions produces meaningless answers.
  • Surveys sent more than two or three days later get far fewer responses and vaguer answers. Schedule the send before the event, not after.
  • The rating fields return ids such as overall_4 and speaker_5. Strip the prefix before averaging, and treat each field as its own 1 to 5 scale.
  • If attendees came with guests, only the person who received the flow answers. Do not treat response counts as attendance counts.

Send it automatically after every visit

In Whautomate, import this flow into the built-in flow editor and click Publish. Attach it to a message template's Flow button and send it from an automation when an appointment is created or updated, or as a broadcast to a segment. Every response is saved on the client's profile, and a "WhatsApp Flow form is submitted" automation can alert your team the moment a low score comes in.

  • Automations on appointment, class and order updates
  • Alert staff on low scores automatically
  • Responses saved to the client profile and exportable

7-day free trial, no credit card required.

Frequently asked questions

A dropdown keeps the screen short when you have many sessions and allows up to 200 options. Radio lists show every choice at once but are capped at 20 items and make one-screen surveys long.
An nfm_reply message with response_json containing the flow_token, overall_rating, best_session, content_relevance, speaker_rating and attend_again as item ids, and suggested_topics as a string.
Put the event id in the flow_token for every send, such as "fb_workshop_1105". If the session list differs between events, publish a separate flow per event instead, because a static flow cannot load the agenda dynamically.
Yes, through an approved template with a Flow button. Most attendees will not have messaged you recently, so a template is the normal route for event surveys.

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.