When a job is completed in Zuper, or an invoice is paid, Reviewflowz asks the customer for a review. The review that comes back is matched to that job and credited to the technicians on it, when the job names them. An invoice names no technicians.
How it works
A job reaches a Completed, Paid or Closed status in Zuper, or an invoice is paid.
At the next hourly check, Reviewflowz picks up the job or invoice, the customer and the technicians.
The request goes out after your delay.
The customer's review is matched to the job and credited to its technicians.
What triggers a request
Trigger | When it fires | Who is asked |
A job is completed | The job reaches its first status of the Completed, Paid or Closed type | The customer on the job |
An invoice is paid | The invoice reaches its PAID status | The customer on the invoice |
Both are off when Zuper is connected: switch on the moments you want to ask about, and the request is created when you do. Both feed one request, named Zuper, so a customer is asked once, at whichever moment comes first. A second Zuper company on the same account gets its own request, named Zuper followed by the company's name. The customer is asked by the email and phone on the record. A customer whose email or text notifications are turned off in Zuper isn't asked that way. Customers aren't asked when your business or the customer is in the EU, the UK or Switzerland.
Jobs completed in the 90 days before you connected are imported so their reviews still match. Nobody is messaged for those.
Connect Zuper
You connect with your company login name and an API key an admin creates in Zuper. No Zuper approval is needed:
Who. Create the key while signed in as an admin: a key can only see what its user can see.
Login name. The company name you enter when you sign in to Zuper.
In Zuper, open Settings, then Developer Hub, then API Keys, and click New API Key. Name it Reviewflowz, tick Read-only, click Create and copy the key. Your other keys keep working as they are. Zuper's own guide is API Keys.
In Reviewflowz, open Integrations, go to the Automate Review Requests tab and click the Zuper card. If you already have an integration connected there, click Connect another integration first. Type your Company login name, paste the key into API key and click Connect Zuper. The Connection card shows your Company and Company login name with Status: Connected.
Pick the location your customers are served from
Under Customers are served from, pick the Reviewflowz location this Zuper company's customers belong to, so each request points at its review profile. Peakline Roofing & Exteriors serves its customers from its one location. If your Reviewflowz account has one location, it is picked for you the first time you connect. Run more than one Zuper company? Connect each one separately and pick its location.
Set up the request
Timing. A job counts from the moment it reaches its completed status, an invoice from the moment it is paid, and your delay comes on top. Peakline Roofing & Exteriors emails 3 hours later, then sends a reminder 3 days after that with the subject "Still happy with the work, {{first_name}}?" and the button "Leave a review". Follow-ups stop once a customer clicks, reviews or unsubscribes.
Channel. Email, SMS or WhatsApp, set per message.
Message. Peakline's From name is "Peakline Roofing & Exteriors", the Subject "How did we do, {{first_name}}?", which Avery Collins reads as "How did we do, Avery?", and the Button text "Review your job". Try yours with Send myself a test.
Direct reviews to. Smart routing gives one button, and your goal for reviews decides which site it opens. Peakline aims for as many Google and Yelp reviews as possible. Show all options on the email lists every site instead.
Turn it on
Switch on A job is completed, An invoice is paid, or both, then open the request and click Turn requests on. The status line reads "Sending requests to every new contact", and the Syncing panel's Asking customers served after shows the day you connected.
When a job or an invoice changes
If a job is cancelled, marked failed, moved back to an earlier status or deleted, or an invoice is no longer paid, before the request goes out, the request is cancelled.
See what it brings back
Every review is matched to the customer and the job or invoice it came from. A job credits the technicians on it, when it names them; an invoice names no technicians. Landon Easton's five star review, "After the hailstorm Marco came out the next morning, walked us through the damage and handled the insurance photos.", lands on Marco Ruiz. Reports > Dashboard > Team Attribution Leaderboard counts the reviews credited to each technician, Tessa Lang, Owen Brandt and Marco Ruiz at Peakline. The Requests page counts Contacts, Requests, Clicked CTA, Matched and Stopped, and the CRM Integration widget under Reports > Dashboard tracks requests, links clicked and reviews matched from Zuper.
Good to know
Keep the Reviewflowz key in Zuper. If the card shows Reconnect needed, create a new key under Settings, then Developer Hub, then API Keys, signed in as an admin, and enter it with Enter new credentials. Your triggers and location stay as they are.
The Syncing panel counts customers who can't be asked, such as a job with no email or phone you may use. They're still kept, so a review from that customer is matched by name.
Disconnect stops the checks and cancels every request that hasn't gone out.

















