# Set Up Outcomes

> Choose what counts as a result on your site, connect it, and check it works. Covers purchases, trial starts and booked calls, including the booking webhook for Cal.com and Calendly.

Canonical: https://revnu.com/docs/set-up-outcomes
Last updated: 2026-10-02

An outcome is a result on your site that Revnu counts and reports to your ad channels. There are three: a **purchase**, a **trial start** and a **booked call**. You set each one up on its own, in the dashboard under **Ads → Revnu Tag**.

## Read the outcomes table

Each outcome is one row.

| Column | What it means |
|---|---|
| Status | **Live**: set up and counted. **Receiving**: your server already sends it, but it isn't set up, so Revnu isn't counting it yet. **Not Set Up**: nothing is arriving and it isn't set up. |
| This week | How many arrived in the last seven days. |
| Last seen | When the most recent one arrived, plus any that were cancelled or refunded. |
| Reported to | The ad channels that receive it. A dash means none yet. |

**Set Up** starts setup for that outcome. **Edit** changes one that is already live.

## Set up an outcome

Setup has three steps: Define, Connect and Verify.

### 1. Define

Choose which results count. For a purchase, choose whether a fully refunded order still counts. For a trial or a booked call, you can require things like a work email, a decision-maker or a minimum company size.

**Web search** is off by default. Turn it on and Revnu researches each company that books or signs up, and only counts the ones that fit.

### 2. Connect

Click **Copy Setup Prompt** and paste it into the coding agent you use on your site, such as Claude Code or Cursor. The agent installs the [Revnu Tag](/docs/revnu-tag) and makes your server send the outcome through the [Event API](/docs/event-api) once it is confirmed.

The prompt includes a new server event key only when your site doesn't have one yet. If it already has one, the agent keeps the `REVNU_EVENT_KEY` your server uses, so nothing that already works breaks.

### 3. Verify

Open your site and complete a real one: make a purchase, start a trial or book a call. Revnu shows it the moment it links that result to your visit.

If the outcome is already arriving from your server, Revnu skips the test. It writes the definition from your Define choices, which takes about a minute. Your first outcome goes live straight away. A second or third outcome waits for you to approve it.

## Booked calls need a webhook

A booking only reaches Revnu when your scheduler tells your server about it. That is a webhook, and the setup prompt tells your coding agent to build it.

Some of the work needs your scheduler login, which the agent doesn't have. When that happens, the agent finishes the code first, then ends its reply with the steps for you. **Read the end of the agent's reply.** If you skip that step, no booking ever arrives.

**Cal.com.** In Cal.com, go to **Settings → Developer → Webhooks** and add the URL your agent gives you. Subscribe to booking created, booking rescheduled and booking cancelled. Adding a webhook secret is optional, and the agent's code checks it if you set one.

**Calendly.** Webhooks need a paid Calendly plan: Standard, Teams or Enterprise. With a personal access token they can only be created through Calendly's API, so the agent adds a command to your project. You put your token in the environment variable it names, then run that command once.

A cancelled booking takes the original booking back, so cancellations don't count as results.

## Frequently asked questions

### Why does "Waiting for Your First Real Booking" never change?

Usually the booking webhook is missing. Check that it exists in Cal.com or Calendly, using the steps your coding agent gave you.

### What if "Writing Your Win Definition" takes more than a few minutes?

Click **Ask Again**. Your setup is saved either way.

### Why does a row say Receiving?

Your server already sends that outcome, but Revnu isn't counting it. Click **Set Up** on the row.

### When should I get a new server event key?

Only when the old key is lost. A new key replaces the old one, and your server stops sending outcomes until it is updated.
