Google Reviews via WhatsApp: n8n Workflow for Restaurants
Back to blog
Practical Guide 6 min 2756 wordsOctober 13, 2026

Google Reviews via WhatsApp: n8n Workflow for Restaurants

A six-node n8n workflow sends the review request two hours after the visit, only to guests who gave consent. Includes importable JSON and the rules Google enforces.

⚡SEE LIVE DEMOS

To request Google reviews automatically, send a WhatsApp message about two hours after the visit, only to guests who gave consent, with a direct link to your profile. A six-node n8n workflow does it with no manual work and without filtering who gets asked, which Google does not allow.

To request Google reviews automatically, send a WhatsApp message about two hours

Why do Google reviews matter for a restaurant?

Because they are the first thing a diner reads before choosing where to eat. According to BrightLocal’s Local Consumer Review Survey, 75% of people “always” or regularly read online reviews (2024 edition). The revenue effect has been studied too: a Harvard Business School study of independent Seattle restaurants linked one extra Yelp star to 5–9% more revenue. That data is from 2011 and from Yelp, not Google, but the logic holds. The problem is rarely unhappy guests; it is that almost nobody remembers to leave a review on the way out.

Because they are the first thing a diner reads before choosing where to eat. Acc

What do you need before you start?

Before importing anything, decide where the “visit finished” signal comes from. It can be your point-of-sale system, if it can send a webhook when a check closes, or a form your team fills in when the table leaves. What matters is capturing a name, a phone number and, above all, permission to message the guest on WhatsApp. At a taquería in Montrose or a café in The Heights, that permission can be a checkbox on the reservation or a QR code on the table. No consent, no message: the WhatsApp Business messaging policy requires it.

Before importing anything, decide where the “visit finished” signal comes from.
  • 01Verified Google profile: you need your business Place ID to build the direct link to the review window.
  • 02Recorded consent: a checkbox on the reservation, a QR code on the table or a note on the receipt, stored with the phone number and date.
  • 03WhatsApp Cloud API: a verified Meta Business account, a dedicated number, a token and the Phone Number ID.
  • 04Approved template: business-initiated messages outside the 24-hour window require a template reviewed by Meta.
  • 05n8n instance: cloud or self-hosted, with a public HTTPS URL to receive the webhook.
  • 06Visit source: your POS, a spreadsheet or a form that fires the signal when the check closes.
  • 07Review owner: one person who replies to every review and checks the WhatsApp responses that come in.

Step 1: when, and who, should you ask?

The best moment is usually one to three hours after the visit: the memory is fresh and the guest is already home. Asking at the table, with the check still unpaid, feels like pressure. The workflow below waits two hours and sends one short message with the guest’s name and the link. An illustrative example, not a real result: if a Katy restaurant serves 100 tables a week and 40% give consent, that is 40 messages; at a 10% response rate, you get about four new reviews a week, close to 16 a month. And you ask everyone who gave permission, not just the ones who looked happy.

The best moment is usually one to three hours after the visit: the memory is fre
Smartphone on a restaurant table showing a messaging app, with an empty dessert plate and warm light
A short message hours after the visit works better than asking for the review at the table.

Step 2: import the workflow into n8n

The workflow has six nodes. “Visit webhook” receives the name, phone, language and consent flag from your POS or form. “Reply OK” answers the source system right away so it does not hang. “Has consent?” is an IF: with no permission, the flow stops there. “Build message” is a Code node that cleans the phone number, takes the first name and builds the link with your Place ID. “Wait 2 hours” pauses the execution and “Send WhatsApp template” calls the Cloud API. Change PHONE_NUMBER_ID, YOUR_TOKEN, YOUR_PLACE_ID and your template name; in n8n choose Import from clipboard and paste the JSON. In production, store the token as an n8n credential rather than inside the node.

The workflow has six nodes. “Visit webhook” receives the name, phone, language a
n8n workflow: request Google reviews via WhatsApp — copy and paste into n8n (Import from clipboard)
{
  "name": "Request Google reviews via WhatsApp",
  "nodes": [
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "visit-finished",
        "responseMode": "responseNode",
        "options": {}
      },
      "name": "Visit webhook",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2,
      "position": [
        0,
        0
      ]
    },
    {
      "parameters": {
        "respondWith": "json",
        "responseBody": "={{ JSON.stringify({ ok: true }) }}",
        "options": {}
      },
      "name": "Reply OK",
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1.1,
      "position": [
        220,
        0
      ]
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict"
          },
          "conditions": [
            {
              "id": "consent-check",
              "leftValue": "={{ $json.body.whatsapp_opt_in }}",
              "rightValue": "",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "name": "Has consent?",
      "type": "n8n-nodes-base.if",
      "typeVersion": 2,
      "position": [
        440,
        0
      ]
    },
    {
      "parameters": {
        "jsCode": "const b = $input.first().json.body || {};\nconst phone = String(b.phone || '').replace(/\\D/g, '');\nconst name = String(b.name || '').split(' ')[0] || 'there';\nconst lang = b.language === 'es' ? 'es' : 'en_US';\nconst reviewUrl = 'https://search.google.com/local/writereview?placeid=YOUR_PLACE_ID';\nreturn [{ json: { phone, name, lang, reviewUrl } }];"
      },
      "name": "Build message",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        660,
        -100
      ]
    },
    {
      "parameters": {
        "amount": 2,
        "unit": "hours"
      },
      "name": "Wait 2 hours",
      "type": "n8n-nodes-base.wait",
      "typeVersion": 1.1,
      "position": [
        880,
        -100
      ]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://graph.facebook.com/v21.0/PHONE_NUMBER_ID/messages",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer YOUR_TOKEN"
            }
          ]
        },
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={{ JSON.stringify({ messaging_product: 'whatsapp', to: $json.phone, type: 'template', template: { name: 'review_request', language: { code: $json.lang }, components: [{ type: 'body', parameters: [{ type: 'text', text: $json.name }, { type: 'text', text: $json.reviewUrl }] }] } }) }}",
        "options": {}
      },
      "name": "Send WhatsApp template",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        1100,
        -100
      ]
    }
  ],
  "connections": {
    "Visit webhook": {
      "main": [
        [
          {
            "node": "Reply OK",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Reply OK": {
      "main": [
        [
          {
            "node": "Has consent?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Has consent?": {
      "main": [
        [
          {
            "node": "Build message",
            "type": "main",
            "index": 0
          }
        ],
        []
      ]
    },
    "Build message": {
      "main": [
        [
          {
            "node": "Wait 2 hours",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait 2 hours": {
      "main": [
        [
          {
            "node": "Send WhatsApp template",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  }
}

Step 3: create the WhatsApp template and test

In Meta’s WhatsApp Manager, create a marketing-category template in English and Spanish with two variables: {{1}} for the name and {{2}} for the link. A text that works: “Hi {{1}}, thanks for visiting us today. If you’d like to share how it went, you can leave a Google review here: {{2}}”. Meta reviews it before enabling it, and charges per message by category and country, so check its current rate card. Test with your own number and two or three trusted people: the link must open the review window, the language must be right, and a phone without consent must receive nothing. As we do in our WhatsApp automation service, log every send in a sheet so you know which tables already got the message.

In Meta’s WhatsApp Manager, create a marketing-category template in English and

What should you never do when asking for reviews?

Three things. First, filtering: asking “how was everything?” and sending the link only to people who answer well. According to the platform guidelines summarized by BrightLocal, Google does not allow asking only customers you know are happy or using tools that hide negative reviews. Second, offering discounts or freebies in exchange for a review. Third, writing them yourself or asking staff to. What you can do: ask everyone equally, reply to every review calmly and use criticism to fix processes. Future customers read your public replies too.

Three things. First, filtering: asking “how was everything?” and sending the lin
"

"A review requested from everyone equally is worth more than ten requested only from happy guests: the first builds reputation, the others build risk."

Equipo Davarion

Can I ask for reviews by SMS instead of WhatsApp?

Yes, but the rules change. In the United States, automated commercial text messages fall under the TCPA, which requires prior consent from the customer. On WhatsApp, Meta requires an opt-in and an approved template. In both cases, keep proof of consent with the date, channel and number, and offer a simple way to opt out. If you are unsure about your case, ask a lawyer before launching the campaign.

Yes, but the rules change. In the United States, automated commercial text messa

What do I do about a negative review?

Reply publicly within a day or two, calmly and without arguing: thank them, acknowledge the problem and offer to sort it out offline. Do not ask for it to be removed or offset it with public discounts. If it breaks Google’s policies (spam, abusive language, someone who was never a customer), you can report it from your profile. The rest stay: a profile with one well-handled complaint looks more real than one with none, and it points to what to fix in the kitchen or on the floor.

Reply publicly within a day or two, calmly and without arguing: thank them, ackn

How long until I see an effect?

The first reviews arrive within days, but the effect on your average rating depends on how many you have today: a place with 40 reviews moves faster than one with 800. Track three numbers for 60 to 90 days: new reviews per week, average rating and the share of guests who gave consent. They will tell you whether to adjust the send time, the template text or the way you ask for permission.

The first reviews arrive within days, but the effect on your average rating depe

Want us to set it up for your restaurant?

If you run a restaurant in Houston and want reviews to arrive without depending on your team’s memory, book a free 15-minute audit. We review your flow, consent and template, and tell you what to automate first. Explore our AI automation service in Houston, see the examples and try the demos. The SPARK package includes a chatbot and an automation like this one.

If you run a restaurant in Houston and want reviews to arrive without depending
#automate Google review requests#Google reviews via WhatsApp#restaurant review automation#n8n workflow Google reviews#WhatsApp review request template#get more reviews restaurant Houston#ask for reviews without violating Google policy

Davarion Group & Labs

WANT TO SEE THE AI IN ACTION?

Try an AI chatbot configured with your business name — live, no signup required.