# Testing safely

Source: https://docs.revoplyai.com/get-started/testing-safely/

> There is no sandbox. How to test webhooks with sample events, reach a local receiver, and keep test flows away from real customers.

There is no sandbox and no test mode. Every flow that runs sends real WhatsApp messages,
and every template it sends is billed by Meta. Test with sample events, your own phone
number, and a project set aside for testing.

## Webhooks: send test events [#webhooks-send-test-events]

On **Integrations → Webhooks**, **Send test** posts a sample of any event to an endpoint,
signed with its current secret, and shows what your endpoint answered.

* Choose **Ping** for a request with no customer data, or any event type for that event's
  documented example.
* A test carries `"test": true` in the envelope; real events carry `"test": false`. Drop
  tests before they reach your CRM.
* The endpoint does not have to be subscribed to the event, or switched on.
* A test is not retried, and a failed test does not count towards switching the endpoint
  off.
* Tests and resends are limited to 10 a minute per account.

See [Testing webhooks](/webhooks/testing/).

## Reaching a receiver on your computer [#reaching-a-receiver-on-your-computer]

We only deliver to public `https://` addresses, so `localhost` cannot receive events. Run a
tunnel, such as `ngrok http 3000`, and
add the HTTPS address it prints as an endpoint. Remove the endpoint when you are done:
tunnel addresses are often reused by someone else later.

## Flow triggers: test with your own number [#flow-triggers-test-with-your-own-number]

A flow trigger URL has no dry run: an accepted request sends the flow's template to the
number in the body.

1. Build the flow and create its URL, but leave it unpublished.
2. Send one request with your own phone number. It is answered `409 flow_off`, and the
   builder keeps the body so you can map its fields with a tap.
3. Publish the flow, then send a request with your own number again, with a new
   `Idempotency-Key`.

## A project for testing [#a-project-for-testing]

A [project](/get-started/introduction/#concepts) is a separate company in your account,
with its own channels, contacts, flows and webhook endpoints, and its own `company.id` in
events. Connect a test number to a project and build test flows there, so they can never
reach your customers. Templates its automations send count against the daily allowance
shared with the rest of your account.
