Skip to main content
Help centerGet support
Browse documentation
On this page 12 sections
12 min readIntegrations

Review Request Automations

Set up Calendly, HubSpot, HighLevel, Stripe, Square, WooCommerce, Shopify and inbound webhooks (Zapier, Make, n8n, Pabbly Connect) so review requests follow real customer events.

Your guide, at your pace

Scan the overview. Open a section for its full steps and details.

New to these terms?
API
A way for two apps to share information or carry out tasks for each other.
API key
A secret code that gives an app access to your provider account. Treat it like a password.
SMS
A text message sent to a mobile phone number.
Webhook
An automatic message sent to another app when something happens, such as a new review arriving.

Automations add a contact to a review campaign when something happens in another system: a meeting ends, a deal is won, a payment succeeds, an order is completed. The campaign then sends the request through the customer's own SMS and email providers.

Every automation lives at Connect -> Integrations -> Automations and is set up from your agency account for each customer. Each connection uses the customer's own credentials, stores them encrypted, and can be paused, edited or deleted from the same page.

Where to find them

#

Open the customer account from your agency (Business -> Customers -> Manage Customers -> Open dashboard, or the Customer tab if your sidebar shows it), then go to Connect -> Integrations -> Automations. Each platform has a card with a Connect button that opens a setup wizard. Credentials are validated before anything is saved, and a half-finished setup is kept as a draft you can resume.

Steps and details
  • The page shows totals for connections, active connections, events received and requests sent
  • Every connection has an activity log listing each event received, skipped, cancelled or sent, with the reason
  • After 25 consecutive failures a connection is marked as needing attention and shows integration(s) stopped working
Worth knowing

This automation is managed from your agency account only. Reach it by opening a customer account (Business -> Customers -> Manage Customers -> Open dashboard, or the Customer tab if your sidebar shows it) and going to Connect -> Integrations -> Automations. It is not visible to customers, and View as customer cannot reach it.

Rules shared by every automation

#

The timing step is the same everywhere. Choose After the event with a delay, or The next morning at a set time in a chosen timezone. Inbound webhooks add Straight away. The delay is measured from the event moment recorded by the source platform (meeting end, stage entry, payment time, order completion), so a late webhook delivery never shifts the send.

Steps and details · includes a table
Rules shared by every automation
RuleBehaviour
Delay limitUp to 24 hours for Calendly, Square, Stripe and WooCommerce. Up to 7 days for HubSpot, HighLevel, Shopify and inbound webhooks.
One request per eventEach order, payment, appointment or deal is asked at most once, even if the platform re-sends the event.
Repeat customersThe campaign's ignore duplicate requests for N days rule applies on top, so a customer is not asked again inside that window. Unsubscribed contacts are never sent.
Refunds, cancellations, no-showsCancel any request that has not been sent yet. A request that already went out stays sent and is flagged in the log.
Zero-amount eventsFree orders and zero-amount payments are skipped.
Contact detailsTaken from the source record. Events with neither an email address nor a phone number are logged as skipped.

Rule · Behaviour

Delay limit
Up to 24 hours for Calendly, Square, Stripe and WooCommerce. Up to 7 days for HubSpot, HighLevel, Shopify and inbound webhooks.
One request per event
Each order, payment, appointment or deal is asked at most once, even if the platform re-sends the event.
Repeat customers
The campaign's ignore duplicate requests for N days rule applies on top, so a customer is not asked again inside that window. Unsubscribed contacts are never sent.
Refunds, cancellations, no-shows
Cancel any request that has not been sent yet. A request that already went out stays sent and is flagged in the log.
Zero-amount events
Free orders and zero-amount payments are skipped.
Contact details
Taken from the source record. Events with neither an email address nor a phone number are logged as skipped.
Worth knowing

There are no quiet hours, business-day rules, minimum order amounts or product filters on automations. Control those at the campaign level or in the source platform.

Calendly

#

Trigger: a booking is created. The request is timed from the meeting end. A cancelled booking cancels the pending request. There is no no-show detection and no event-type filter.

Steps and details
  • In Calendly open Integrations -> API and webhooks and generate a Personal Access Token. Webhooks require a Calendly Standard, Teams or Enterprise plan.
  • Step 1: paste the token. Choose Only my calendar or My whole Calendly organization (the organization option needs an admin or owner token).
  • Step 2: choose the campaign and timing (up to 24 hours after the meeting ends, or next morning).
  • Step 3: activate. The webhook subscription is created in Calendly for you and bookings start flowing immediately.
  • Phone numbers are read from the SMS reminder number or a phone-type booking question, so SMS campaigns work when the booking form collects a phone.

HubSpot

#

Trigger: a deal enters one of the stages you select. Closed Won is pre-selected, but any stage in any pipeline can be chosen. The request is timed from the moment the deal entered the stage. Deals are checked every 15 minutes with a 48-hour look-back, so there is no webhook to configure in HubSpot.

Steps and details
  • A HubSpot super admin creates a private app under Settings -> Integrations -> Private Apps (newer accounts: Development -> Legacy apps) with the scopes crm.objects.deals.read and crm.objects.contacts.read, then copies the access token (it starts with pat-).
  • Step 1: paste the token. Step 2: tick the stages. Step 3: campaign and timing (up to 7 days, or next morning). Step 4: activate.
  • The request goes to the deal's first associated contact. Deals with no contact, or whose contact has no email or phone, are logged as skipped.
  • A deal that is reopened, lost or moved out of the selected stages before the send is cancelled. A deal that re-enters a stage is never asked twice.
  • Works on HubSpot's free CRM, which includes private apps.

HighLevel (GoHighLevel)

#

Trigger: an appointment on the selected calendars ends. Appointments are checked every 15 minutes (48 hours back, 30 days ahead). Cancelled, no-show and invalid appointments never send and cancel any pending request. There is no marketplace app and no webhook.

Steps and details
  • In HighLevel open Settings -> Private Integrations (enable it under Settings -> Labs if you cannot see it), create an integration with the scopes View Contacts and View Calendars & Calendar Events, and copy the token (it starts with pit- and is shown once). The Location ID is under Settings -> Business Profile.
  • The legacy API Key under Settings -> Business Profile does not work here. Use a Private Integration token.
  • Step 2: choose All calendars (calendars added later are included automatically) or specific calendars.
  • Step 3: campaign, attendance and timing. Send unless cancelled or marked no-show (recommended, re-checks the status right before sending, works even when statuses are never updated) or Only when marked Showed (nothing sends without an explicit Showed).
  • Optional Only these tags: comma-separated HighLevel contact tags. When set, only contacts carrying at least one of the tags receive requests.
  • Timing: up to 7 days after the appointment ends, or next morning.

Stripe

#

Trigger: a charge succeeds (or is captured, for authorization-only holds). Refunds cancel the pending request. Subscription renewals are skipped: only one-time payments and the first payment of a new subscription trigger a request, so subscribers are never re-asked every billing cycle.

Steps and details
  • In the Stripe Dashboard open Developers -> API keys and create a restricted key with Charges: Read, Customers: Read, Invoices: Read and Webhook Endpoints: Write.
  • Step 1: paste the key. A test-mode key is accepted and flagged Test mode; only test payments trigger until you swap in a live key.
  • Step 2: campaign and timing (up to 24 hours after the payment, or next morning). Step 3: activate. The webhook endpoint is created on the Stripe account for you.
  • Stripe has no test-event delivery for live endpoints, so the endpoint being created is the verification.
  • A trialed subscription's first real charge is billed as a renewal by Stripe and is skipped. It shows in the log as a skipped row.

Square

#

Trigger: a payment reaches COMPLETED. Cancelled and failed payments and refunds cancel the pending request. Refunds are processed even while the connection is paused.

Steps and details
  • In the Square Developer Dashboard open your application, then Credentials, and copy the Production Access Token.
  • Step 2: campaign, locations and timing. Choose All locations or specific Square locations (loaded live from the account). Timing up to 24 hours after the payment, or next morning.
  • Step 3: Create Webhook & Send Test. Square delivers a test event to prove delivery end to end. You can activate without waiting for it.
  • Contact details come from the buyer email on the payment, or from the Square customer record when one is attached.

WooCommerce

#

Trigger: an order is marked Completed. Refunded, cancelled and failed orders cancel the pending request, and a partial refund before the send cancels it too. Processing and on-hold orders are ignored. No plugin is installed on the WordPress site.

Steps and details
  • In WooCommerce open Settings -> Advanced -> REST API and add a key with Read/Write permissions under an administrator or shop manager user. The store URL must start with https://.
  • Step 1: store URL, consumer key and secret. Hosts that strip the Authorization header are detected and the connection falls back to query-string authentication automatically.
  • Step 2: campaign and timing (up to 24 hours after completion, or next morning). Timing is anchored to the completion time recorded by WooCommerce.
  • Step 3: the order.updated webhook is created on the store through your key. WooCommerce sends an unsigned test ping; some hosts block it while real deliveries work, so you can activate without waiting.
  • Every six hours the webhook is re-activated if WooCommerce silently disabled it, and completed orders from the last 72 hours are back-filled. If the webhook was deleted from the store, the connection is flagged.
  • Contact details come from the order's billing name, email and phone.

Shopify

#

Trigger: your choice of When the order is fulfilled (recommended for physical products) or When the order is paid (digital products and services). Cancellations and refunds cancel the pending request. Gateway test orders are ignored. Shopify POS orders arrive as normal orders and trigger the same way.

Steps and details
  • The store owner creates a custom app in the Shopify Dev Dashboard (Settings -> Apps -> Develop apps): grant read_orders and read_customers, release, install on the store, then copy the Client ID and Client secret from the app settings.
  • Step 1: .myshopify.com domain, client ID and secret. Step 2: campaign, trigger moment and timing (up to 7 days, or next morning). Step 3: Create Webhooks & Activate.
  • Webhooks for paid, fulfilled, cancelled and refunded orders are created on the store. Shopify deletes a subscription after repeated delivery failures; every six hours missing subscriptions are re-created and orders from the last 72 hours are back-filled.
  • On the Shopify Basic and Starter plans, custom apps receive limited customer contact details. Orders that arrive without an email are skipped. The Grow plan or higher gives full coverage.
  • Shopify has no test-event API. The subscriptions being accepted is the verification.

Inbound webhooks: Zapier, Make, n8n, Pabbly Connect and any app

#

The Webhooks card and the Zapier, Make, n8n and Pabbly Connect cards share one engine. The wizard gives you an endpoint URL on your own domain (https://your-domain/api/webhooks/inbound/...). Any app that can POST JSON to that URL adds contacts to the campaign. There is no EmbedMyReviews app to install in those platforms.

Steps and details · includes a table
  • Step 1: name the connection and choose a campaign. A configured domain is required because the URL is built from it.
  • Step 2: paste the URL into your app and send a test. The test payload is captured so you can map fields visually. You can skip capture and map manually, or re-capture later.
  • Step 3: map First Name, Last Name or Full Name, Email and Phone using dot-notation paths. Email or phone is required. A full name is split automatically when first and last are not mapped.
  • Optional Appointment or order date: pick the payload field that holds when the appointment or order happens. Fields such as end_time, appointment_date, completed_at or order_date are suggested when they parse as dates.
  • Step 4: Straight away, A set time after the moment (15 minutes to 7 days, timed from the mapped date, or from arrival when the date is missing), or The next morning.
  • Optional signing secret: when set, requests must carry an HMAC-SHA256 signature of the raw body (or timestamp.body). The token in the URL can be regenerated at any time; the old URL stops working immediately.
  • Duplicate submissions inside five minutes are ignored. Bodies above 256 KB are rejected.
Inbound webhooks: Zapier, Make, n8n, Pabbly Connect and any app
PlatformWhat to add after your triggerPlan note
ZapierWebhooks by Zapier action, event POST, payload type json, then Test stepWebhooks by Zapier requires a paid Zapier plan
MakeHTTP -> Make a request, method POST, body type Raw, content type JSON, then Run onceWorks on every Make plan, including free
n8nHTTP Request node, method POST, body content type JSON, then execute the noden8n Cloud or self-hosted
Pabbly ConnectAPI by Pabbly action, POST, payload JSON, then Save and Send Test RequestAny plan with API by Pabbly
Any other appPoint its webhook or HTTP action at the endpoint URL with a JSON bodyNone

Choosing a route

#

Customer runs on Calendly, HubSpot, HighLevel, Stripe, Square, WooCommerce or Shopify: use the native automation

Steps and details
  • Customer sends emails from their system (invoices, confirmations): use Email Triggered Invites
  • Customer already uses Zapier, Make, n8n or Pabbly Connect: use that preset
  • Anything else that can send a webhook: use the generic Webhooks card

Common questions

Still need a hand?

Tell us what you’re trying to do. We’ll help you find the next step.

Get support

Search the help center