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
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.
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 webhooksand generate a Personal Access Token. Webhooks require a Calendly Standard, Teams or Enterprise plan. - Step 1: paste the token. Choose
Only my calendarorMy 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 scopescrm.objects.deals.readandcrm.objects.contacts.read, then copies the access token (it starts withpat-). - 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 underSettings -> Labsif you cannot see it), create an integration with the scopesView ContactsandView Calendars & Calendar Events, and copy the token (it starts withpit-and is shown once). The Location ID is underSettings -> Business Profile. - The legacy API Key under
Settings -> Business Profiledoes 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) orOnly 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 keysand create a restricted key withCharges: Read,Customers: Read,Invoices: ReadandWebhook 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 locationsor 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 APIand add a key withRead/Writepermissions under an administrator or shop manager user. The store URL must start withhttps://. - 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.updatedwebhook 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): grantread_ordersandread_customers, release, install on the store, then copy the Client ID and Client secret from the app settings. - Step 1:
.myshopify.comdomain, 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 NameorFull Name,EmailandPhoneusing 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 asend_time,appointment_date,completed_atororder_dateare 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), orThe 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.
| Platform | What to add after your trigger | Plan note |
|---|---|---|
| Zapier | Webhooks by Zapier action, event POST, payload type json, then Test step | Webhooks by Zapier requires a paid Zapier plan |
| Make | HTTP -> Make a request, method POST, body type Raw, content type JSON, then Run once | Works on every Make plan, including free |
| n8n | HTTP Request node, method POST, body content type JSON, then execute the node | n8n Cloud or self-hosted |
| Pabbly Connect | API by Pabbly action, POST, payload JSON, then Save and Send Test Request | Any plan with API by Pabbly |
| Any other app | Point its webhook or HTTP action at the endpoint URL with a JSON body | None |
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