Direct Stripe connection · 9 min read
How to send automated review requests after a Stripe payment
Written by Mannie Gill, Founder & Lead Developer at EmbedMyReviews. LinkedInPublished
Use EMR’s Stripe automation when a successful payment is the right time to ask for a review. It listens for successful charges, waits for your chosen timing and adds the buyer to the selected campaign. Subscription renewals are skipped, so this is especially useful for one-off services paid after delivery.
TL;DR
The short version
- Choose this for final payments, not deposits before work starts.
- The owner creates a restricted Stripe key; EMR creates the webhook connection.
- Test with a test-mode key and your own email. A test payment can still trigger a real EMR campaign message.
What happens automatically?
- 01
Stripe charge succeeds
- 02
EMR checks eligibility and timing
- 03
The campaign contacts the buyer
Choose this when: A consultant, repair business or service provider charges after completing the work.
Choose another route when: A request after every subscription renewal, a free trial ending, an invoice merely being created, or a delayed bank payment that has not succeeded yet.
Who does what?
The business owner
Creates the restricted key in the correct Stripe account and ensures payments contain an email.
You, the agency
Connects the key, chooses a campaign, verifies test-mode delivery, then sets up the live connection and monitors it.
Set up EMR Automations while signed in as the agency owner and working in the intended client location. The business owner handles access to their own software. They do not need your agency login or a daily EMR task.
A message you can send the business owner
“We can connect review requests to successful payments after your work is finished. You will create a restricted connection key in Stripe. I will set up the review campaign and test it using Stripe’s test environment. You keep taking payments as usual; I look after the review automation.”
Once it is connected
The client takes payments in Stripe as usual. Qualifying payments start the campaign without anyone logging into EMR. You monitor the connection and message delivery. A new key is only needed if the current one is revoked, changed or no longer usable.
Have these ready
- A campaign you have tested with your own contact details.
- Stripe access that allows the owner to create restricted API keys.
- A buyer email in the charge’s billing details or attached Stripe customer. Phone-only records are skipped.
First client? Prepare the review campaign first
From your agency, open Business → Customers → Manage Customers → Open dashboard (or the Customer tab if shown). Select the business location you are setting up.
A campaign is the review message and any follow-ups you want EMR to send. A feedback form controls where the customer is invited to leave their review.
Use Grow → Review Tools → Feedback Forms to prepare the customer’s review destination, then Grow → Campaigns → Request Reviews to create the campaign. Choose its feedback form, message and working sender. Start with one email step for this walkthrough. Add your own test contact through Grow → Campaigns → Invites and verify the message and link.
Set the campaign’s sending window and duplicate-request window. Honour opt-outs. For Google review campaigns, ask eligible customers consistently, leave review gating off and offer no incentives.
Do I need to understand APIs or write code?
No coding is needed for this route. You enter the business’s connection details into EMR’s built-in setup wizard. EMR handles the API calls. Your work is choosing settings and copying the connection credential; you do not write code or build a Zap.
A key or token is a private connection credential. A webhook is an automatic notice that something happened, such as a payment completing. Keep connection credentials private; the business owner does not need to share their everyday login password.
The walkthrough
Set it up, step by step
Owner creates a restricted key. Work through this together the first time.
Together
Pick a payment that follows the customer experience
Agree that the service is complete when the payment succeeds. The native connection has no product or minimum-payment filter.
If this Stripe account mixes deposits and final payments, use a completion-based workflow instead of sending review requests for every qualifying payment.
Before moving on: A payment means the customer has something real to review.
Business owner
Create a restricted API key
Open the API keys page in the Stripe Dashboard, available from Developers. For the initial test, select the test environment and create a restricted key.
Give it Charges: Read, Customers: Read, Invoices: Read and Webhook Endpoints: Write. These let EMR read the payment and contact, recognise renewals and set up delivery. Copy the key securely.
Before moving on: The key has all four permissions; it is not a publishable key beginning pk_.
Agency
Connect the client’s Stripe account
From your agency account, open the client dashboard and select the correct location. Go to Connect → Integrations → Automations. On the Stripe card, click Connect Stripe. If it already shows Manage Stripe, open that and choose New Integration.
Name the connection, paste the restricted key and validate. EMR labels a test-mode key as Test mode. Choose a separate campaign named Stripe test with one email step. The recipient comes from the payment: use only your own email in the test payment.
Before moving on: All permissions validate and you can see whether the connection is in test mode.
Agency
Set the delay and activate
Choose a delay after the payment, up to 24 hours, or The next morning and the correct timezone. One hour is a reasonable starting choice for a service already delivered.
Click Create Endpoint & Activate. EMR creates the Stripe webhook endpoint. Run the tests below before setting up the live key and live campaign.
Before moving on: The endpoint exists, and a test charge produces the expected campaign message.
Together
Make a test payment without charging a real card
In the same Stripe test environment as your connection key, open Payment Links. Create a link for a one-time product with a non-zero price, then open its checkout page. Confirm the page is in test mode.
Enter an email address you control. For the card, use Stripe’s test number 4242 4242 4242 4242, a future expiry date and any three-digit CVC. Complete the test checkout. Do not use real card details.
Find this payment in EMR’s Recent payments. Wait for the configured delay and sending window, then check the actual review message. The Stripe payment is simulated; the EMR email is real.
Before moving on: Your test inbox receives the right review message without a real card charge.
Together
Move to live payments
Create a live restricted key with the same permissions. Use it in a live connection for the correct campaign, then activate. Keep the test connection clearly named and separate.
Confirm the first agreed live payment in EMR activity. Check the customer, timing and destination; an endpoint existing on Stripe is not proof of inbox delivery.
Before moving on: A live event reaches the intended campaign with no duplicate automation also sending to it.
Example: a consultant is paid after a workshop
The consultant completes a workshop and the client pays through Stripe at 2 pm. EMR schedules the buyer for 3 pm with a one-hour delay. If the payment is only an authorisation hold, the request waits for capture. An invoice created but not paid does not meet this trigger.
How to know it is working
Follow the event all the way to a message you receive. A green connection or a successful test response is only part of that journey.
Where to look: Open Automations → Stripe, click the connection name and check Recent payments. Match the test payment and email, then check that contact under Grow → Campaigns → Invites and confirm the message in your inbox. In the automation’s activity, Sent means the contact was passed to the campaign; the inbox check confirms the message actually arrived.
When to expect the message: Set the first-request delay here in the automation. EMR does not add the campaign’s first-step delay on top, but its allowed sending hours still apply. For example, a request due at 8 pm waits if the campaign only sends between 9 am and 6 pm. Follow-up timing stays in the campaign.
Testing again? Use another email address you control for a second successful-send test. Reusing the first address can correctly trigger your duplicate-request rule. Keep that protection on for real customers.
Test 1: Complete a successful test payment containing your own email.
Expected result: A payment appears in EMR activity, reaches the test campaign at the configured time and sends an actual test message to you.
Test 2: Refund a second test payment while its request is still Scheduled in the Stripe automation.
Expected result: EMR cancels that scheduled request when it receives the refund. A contact already passed to the campaign is too late for this test, even if its message is waiting for sending hours.
Test 3: Check a subscription renewal in a suitable test subscription.
Expected result: It is skipped. A trialed subscription’s first real charge is also skipped when Stripe classifies it as a renewal.
If something does not work
Live payments never appear
Check the Test mode label and which Stripe account supplied the key. A test key listens to test payments, not live ones.
Some first subscription payments are skipped
The rule uses Stripe’s invoice billing reason. A first paid charge after a free trial can be classed as a renewal. Use a service-completion trigger if that customer should receive an invitation.
Permission validation fails
Check all four permissions on the restricted key, especially Invoices: Read and Webhook Endpoints: Write. Copy the entire key again.
At handover, record the connection name, source account, client location, campaign, timing, test result and person responsible for failures. Test again after changing the workflow. Keep passwords, API keys and private webhook URLs out of the handover notes.
Cost, reliability and the simpler alternatives
Cost: No Zapier or Make subscription for this route. Stripe payment fees and your existing software subscriptions remain separate from campaign delivery costs.
Reliability: Stripe sends payment and refund notices directly to EMR. EMR tracks each payment once and skips subscription renewals. A refund received while the request is still scheduled in the automation cancels it; it does not withdraw a contact already passed to the campaign.
When to use something else: For appointments paid in advance, use an appointment-end integration. For a completed-job event with extra filters, send only eligible contacts through an inbound webhook. Do not buy a bridge just to duplicate this native payment trigger.