Test a Smart Invites webhook
Dry-run an event on a Smart Invites webhook's Test tab to see who it would invite and why, without saving anything or sending an email.
To see what an event would do before a real customer buys, open the webhook's Test tab, paste the event into Event payload and click Run test. It's a dry run through the webhook's mapping, filter and routing: nothing is saved and no email is sent.
Smart Invites are on Premium and Business, and you need to own the workspace or be an Admin on the project.
Open the Test tab
In your project's sidebar, open Invites under Collect, go to the Webhooks tab and click the webhook. On its page, click the Test tab.
Put in an event
Event payload starts with a sample event from the webhook's platform. Edit it, or paste a real event from your platform. The webhook's Activity tab has real ones too: open an event there to see what your platform sent. Reset sample brings back the platform's sample.
The event must be a single JSON object. A list of events can't be tested, because the webhook rejects one too. A Gumroad sale arrives as form fields, so write it as flat JSON: see What ReTestimonial reads from a sale.
Run the test
Click Run test. The result appears under the button, with what the webhook found in the event: see What the result tells you.
The test uses the webhook's saved settings. After you change something in Settings, click Save changes, then run the test again.
What the result tells you
The result reads This event would invite followed by the address, or This event would not send an invite with the reasons. It also shows the Email, Name and Company it found, and a Filter line: Passed or Not matched — event skipped. When the webhook has routing rules, a Routing line names the rule that matched and its form, or reads No rule matched — default form.
| Reason shown | What it means |
|---|---|
| The webhook is paused: its real events are discarded until you activate it | The webhook is paused, so a real event like this one would be discarded. Click Activate on the webhook's page: see Pause a webhook. |
| Filter condition not matched | The event doesn't meet Only invite when (optional) in the webhook's Settings. That's the result you want for an event that shouldn't invite anyone. |
| A test event from the platform: it's skipped, and nobody is invited | The event is marked as a test: a Stripe event with livemode set to false, a Shopify order with test set to true, or a Lemon Squeezy order in test mode. |
| The form is paused or a draft | The form this customer would be sent to isn't active, so its link wouldn't open. |
| The form no longer exists | The webhook's form was deleted. |
| Email field not found in payload | Nothing was found at the webhook's Email path. |
| Invalid email format: followed by a value | Email path points at a field that doesn't hold an email address. |
| This address is on the project's do-not-email list | The address is on the Do not email tab. The reason follows in brackets, such as "(unsubscribed)". |
| This address bounced or reported an earlier email as spam | The address is blocked for every email ReTestimonial sends, in any project. |
| Within 90-day cooldown | This address was invited in this project within the webhook's Re-invite cooldown (days); the number shown is your webhook's. It's what you get when you test with an address you already invited. |
| Insufficient invitation credits/quota | The project has no invites left: its monthly allowance is used up and the workspace has no invitation credits. |
Real events are stopped for the same reasons. How to fix each one is in Smart Invites webhook not inviting customers.
What the test doesn't check
The test reads only the payload you put in and the webhook's saved settings. So an event can pass the test and still invite nobody when your platform really sends it:
- The signing secret. The test doesn't check the signing secret. When the webhook has one saved, a real event that isn't signed with it fails.
- The email sequence. The test doesn't check whether the webhook's email sequence still exists. If it was deleted, real events fail.
- What your platform sends outside the payload. The test spots a platform's test events by what's in the payload, so a pasted Stripe event with
livemodeset tofalsereads as a test event, and Shopify's Send test notification (which Shopify marks in a header the test can't see) still reads as an invite.
The messages a real event shows for the first two are under If the event failed.
Test with a real event from your platform
The Test tab shows how the webhook reads an event. To check the connection itself, which means the URL in your platform and the signing secret, have your platform send an event to the webhook's URL. It's listed on the webhook's Activity tab with its result; if it isn't, see If no event is listed.
For Stripe, Shopify and Lemon Squeezy, the test events and test-mode orders your platform sends to the webhook URL are skipped, so nobody is invited. Each is listed as Skipped, with the reason "A test event from the platform, so nobody was invited and no invite was used".
For other platforms, a test event is handled like a real one: if it passes the filter, the address in it is invited and emailed, and one invite is used. Use an email address of your own. Gumroad's test ping doesn't invite anyone as long as the webhook keeps the filter it started with.
How to send one from each platform: Stripe, Shopify, WooCommerce, Gumroad, Lemon Squeezy, Paddle and any other app.
What happens next
A test on the Test tab leaves nothing behind: it isn't listed under Activity, it doesn't change the webhook's counts, and it doesn't use an invite. Editing the payload clears the result, so run the test again after each change.
Was this page helpful?
Send invites from any app with a custom webhook
Post a customer's email from your own backend, Zapier, Make or n8n to a custom webhook, and ReTestimonial emails them a testimonial request.
Pause, change or delete a Smart Invites webhook
Pause a Smart Invites webhook to stop new invites, change its form, emails, paths or signing secret, or delete it for good.