# 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.

1. **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.

2. **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](/help/collect/send-invites-from-gumroad#what-retestimonial-reads-from-a-sale).

3. **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](#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](/help/collect/pause-change-or-delete-a-smart-invites-webhook#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](/help/troubleshooting/invite-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 `livemode` set to `false` reads 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](/help/troubleshooting/invite-webhook-not-inviting-customers#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](/help/troubleshooting/invite-webhook-not-inviting-customers#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](/help/collect/send-invites-from-stripe#test-mode-and-live-mode), [Shopify](/help/collect/send-invites-from-shopify#shopifys-test-doesnt-use-an-invite), [WooCommerce](/help/collect/send-invites-from-woocommerce#test-the-connection), [Gumroad](/help/collect/send-invites-from-gumroad), [Lemon Squeezy](/help/collect/send-invites-from-lemon-squeezy#test-mode), [Paddle](/help/collect/send-invites-from-paddle#test-without-a-real-customer) and [any other app](/help/collect/send-invites-from-any-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.

- [Send invites automatically with a webhook](/help/collect/send-invites-automatically-with-a-webhook)
- [Pause, change or delete a Smart Invites webhook](/help/collect/pause-change-or-delete-a-smart-invites-webhook)
- [Preview and send a test invite email](/help/collect/preview-and-send-a-test-invite-email), to test the email itself
- [Smart Invites webhook not inviting customers](/help/troubleshooting/invite-webhook-not-inviting-customers)
- [Track invite campaigns and contacts](/help/collect/track-invite-campaigns)
