Set Up Outcomes
Tell Revnu which result your ads should bring in, a purchase, a trial start or a booked call, and get it reported to every connected ad platform. What works with no code access, Cal.com and Calendly bookings, which outcome to put first, and what to do when a row says Receiving.
An outcome is a real result Revnu counts and reports to your ad platforms: a purchase, a trial start or a booked call. You set each one up in Ads > Revnu Tag. Your ads bid on the first one you set up, so it decides what every campaign is judged on.
Set one up before you expect any ad to launch. Once an outcome is set up, Revnu builds your campaigns and they go live when you approve them, so every ad is judged on a real result from day one. You don't write the code yourself: Revnu opens a pull request on your repo, or gives you a prompt for a coding agent such as Claude Code or Cursor.
Before you start
Someone, or a coding agent, who can change your site's code, or a host for one small function. No developer? See outcomes without code access. The setup adds a script to your pages and a few lines to your server.
A server that confirms the result. A purchase comes from your payment success handler, a trial start from the code that creates the account or trial, a booking from your scheduler's webhook. Revnu counts what your server confirms, rather than a thank-you page or a button click.
How do I set up an outcome?
Open Revnu Tag
Open Ads and press the Revnu Tag tab. Before your first outcome, the tab is a short step-by-step setup.
Enter your website
Type your site's address under Your Website and press Continue. Revnu reads the site: your checkout or booking tool, and whether the tag is already there. If Revnu already knows your website, this step is skipped.
Check what your ads will chase
Revnu suggests one outcome, such as Your Ads Will Chase Purchases, with the reason. Self-serve pricing and a checkout on your site point to purchases; no self-serve checkout points to booked calls. Press Sounds Good to keep it, Change to pick Purchases, Booked Calls or Trial Starts, or Fine-Tune to set which results count. Which outcome should I set up first?
Under Fine-Tune, choose whether a fully refunded order still counts, or for a trial or a booked call, require things like 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.
Add Revnu to your site
Pick one:
Revnu Adds It for You. Press Link GitHub and Choose Repo if you haven't, then Open the Pull Request. Revnu opens a pull request on your repo with the Revnu Tag and one server route, and sends the link in chat. You review and merge it.
Paste a Prompt Yourself. Press Copy Prompt and paste it into Claude Code, Cursor or another coding agent, or send it to your developer. The agent installs the tag and makes your server send the outcome through the Event API once it's confirmed.
Either way, add the server key to your host as
REVNU_EVENT_KEY, then redeploy. Press Get Key to make one, or Copy if it's shown. If your site already has a key, the setup keeps it, so nothing that works breaks.In plain words, a server event means your server tells Revnu "a call was booked" or "an account was created". Server confirmation keeps your numbers clean: it tells a real result apart from spam or a double click.
Warning
Only get a new server event key when the old one is lost. A new key replaces the old one, and your server stops sending outcomes until it's updated.
Check it works
Press Check It Works. Revnu waits for two things: your site loading the Revnu Tag (press Open Site to load it yourself), and your server sending one test event. No real purchase or booking is needed, and you can leave the page.
When both are in, the screen reads You're Live and Revnu writes what counts as a win from your choices, which takes a minute or two. Your first outcome goes live straight away. A second or third outcome waits for you to approve it.
I typed the website address wrong
Press Back to the Your Website step, correct it, and continue. A comma instead of a dot (www,example.com) is the usual slip.
Which outcome should I set up first?
The first outcome is what your ads learn from, so pick the one that happens often enough to learn on.
Trial start suits most software. A free sign-up counts here too. It happens far more often than a payment.
Booked call suits sales-led businesses that sell on a call.
Purchase suits shops and products people buy straight away.
Tip
A frequent first outcome gets you answers fast. With a purchase-only first outcome on a cheap product, each ad needs several days of its budget before Revnu can tell a loser from bad luck, so Revnu may suggest putting sign-ups or trial starts first.
To change which outcome comes first, ask Revnu in chat, for example "make booked calls our first outcome". It drafts the change, and you approve it in Ads > Revnu Tag.
None of these fits. What do I pick?
Pick the closest of the three, and name your own event. Every outcome is one of purchase, trial start or booked call, but the event behind it can be anything your server confirms.
An account application, a trade account sign-up or a waitlist sign-up fits Trial start: a new account or application your server creates.
A quote request, a demo request or a consultation request fits Booked call when it leads to a call, or Trial start when it doesn't.
A paid order of any kind fits Purchase.
The easiest route is to say it in chat: "count trade account applications as our first outcome; our server sends account_application when one is submitted." Revnu drafts the definition and you approve it in Ads > Revnu Tag. The event comes from your server when the application is saved. Revnu counts that confirmation rather than a browser form submit, which keeps spam and double clicks out.
How do I track booked calls from Cal.com or Calendly?
A booking reaches Revnu when your scheduler tells your server about it. That's a webhook, and the setup prompt tells your coding agent to build the receiving end.
The scheduler side takes your login, so the agent finishes the code first, then ends its reply with steps for you.
Note
Read the end of the agent's reply. Its steps for your scheduler are what get bookings flowing.
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. A webhook secret is optional; the agent's code checks it if you set one.
Calendly. Webhooks come with Calendly's paid plans: Standard, Teams or Enterprise. With a personal access token, Calendly creates webhooks through its API, so the agent adds a command to your project. 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.
How do I track purchases and trial starts?
Same flow: pick Purchases or Trial Starts in setup, or press Set Up on that row once your first outcome is live, then install. The agent hooks into the place your app already confirms the result: the payment success handler, or the code that creates the account or trial. Your payment and scheduler logins and secrets stay in your app. Revnu never asks for them.
For a purchase, a 100% discount or a free trial isn't a purchase. To test, use a near-total discount and leave a small amount to pay.
How do I set up outcomes without code access?
Revnu sees visits, clicks and every platform's own numbers with no code at all. One small hosted function adds booked calls, trials and purchases.
Ready with no developer
Visits and ad clicks. If your site builder has a custom-code box for the page head (Webflow, Framer, WordPress and most builders do), paste the Revnu Tag there. Revnu then sees where each visitor came from, including which ad they clicked.
Spend, clicks and the platforms' own numbers. Revnu reads these from each connected ad account with no setup on your site.
Telling Revnu how a call went. Once your bookings reach Revnu, say "Tuesday's call was a no-show" or "they signed" in chat, and Revnu records exactly what you said against that booking.
Counting results with one small function
A booked call reaches Revnu through a receiver you host. Your scheduler sends a webhook, and code you host (a small serverless function counts) passes it to Revnu. Cal.com and Calendly webhooks go to that receiver rather than straight to Revnu.
Calendly sends webhooks on its paid plans. Standard, Teams or Enterprise.
Call results attach to bookings. Revnu records what you tell it against a booking it already has, so get bookings arriving first.
With the receiver in place, every ad is judged on booked calls. Two quick ways there:
Get one small piece of code hosted. Your site can stay no-code. A developer or a coding agent can build the booking receiver as a small function on a host such as Vercel or Netlify, then give you its webhook address to paste into your scheduler.
Connect GitHub if your site lives in a repo. Choose Revnu Adds It for You in setup, or connect the repo in Connections > Learn Your Business > GitHub and ask Revnu in chat to open the pull request that adds the tag and the booking receiver. You review and merge it, then add the server key to your host.
No developer and no coding agent?
Put the Revnu Tag in your site builder so Revnu sees clicks and visits, and tell Revnu in chat when ad visitors book a call ("two calls this week came from the Google ads"). Revnu takes that as your word rather than a counted outcome, so to compare one ad against another, add the receiver. A coding agent such as Claude Code or Cursor is cheap enough for a non-developer to run once to build the receiver.
Read the outcomes table
| Column | What it means |
|---|---|
| Status | Live: set up and counted. Receiving: your server already sends it; press Set Up and Revnu counts it. Not set up: ready to set up, with nothing arriving yet. |
| 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 platforms that receive it. A dash means none yet. |
Set Up starts setup for that outcome. Edit changes one that's already live.
My bookings say Receiving and count for nothing
This means bookings reach Revnu, but your definition doesn't include them. It happens most often when another outcome, usually Purchase, was set up first. Every booking is already recorded, ready to count once you set it up.
Press Set Up on the Booked call row and finish the setup it opens.
If booked calls should be what your ads bid on, ask Revnu to make them the first outcome, then approve the change in Ads > Revnu Tag.
Your developer can confirm the cause from the Event API's reply: counted: false with a not_counted_reason naming the outcomes your definition counts. See Event API.
How do I check each ad platform is receiving results?
Look under Manage Ad Channels in Ads > Revnu Tag, below the outcomes table. It appears once your first outcome is set up. Connecting an ad account is the only step: Revnu creates the conversion event on that account and starts sending your outcomes to it, so you never copy an event ID or pick a conversion rule.
Each channel's row says which outcomes it receives and whether the platform has confirmed one yet. A platform confirms once an ad on it brings in a result.
Google. Revnu creates its own conversion actions, set as secondary, so your existing campaigns keep bidding as before.
X and Reddit. These have you create the Pixel by hand, once. If the account has none, the row asks you to create one in that platform's Events Manager. If a Reddit account has several, the row asks which to use.
TikTok. Revnu uses the account's Pixel, or creates one named "Revnu" if there's none. To check TikTok, ask Revnu "is TikTok receiving our conversions?"
Which outcomes does each platform receive?
Your ads bid on your first outcome. Revnu also reports your other outcomes to each platform so it sees the whole funnel, but they never change what campaigns optimise for. Two exceptions:
TikTok receives your first outcome, and Revnu counts the later ones itself.
On Reddit, Revnu holds back an outcome that maps to the same Pixel event as your first one, so bidding stays on your first outcome.
Next steps
Frequently Asked Questions
Can I track booked calls without a developer?
Yes, with a coding agent. Your scheduler sends a webhook to a small piece you host, which passes each booking to Revnu, and a coding agent can build and host that piece for you even if your site is no-code. Until it's in place, Revnu counts visits and clicks.
Can Revnu count bookings on a free Calendly plan?
Revnu counts Calendly bookings through Calendly's webhooks, which come with its paid plans (Standard, Teams or Enterprise). On one of those plans, every booking reaches Revnu automatically.
Can I just tell Revnu how each call went?
Yes, for any booking that has reached Revnu. Say "the 3pm call was a no-show" or "they signed" in chat and Revnu records exactly that against the booking.
Why do booked calls never arrive?
Usually the booking webhook is missing. Check it exists in Cal.com or Calendly, using the steps from the end of your coding agent's reply. If bookings do arrive but the row says Receiving, they aren't set up as an outcome yet: click Set Up on that row.
Why does a row say Receiving?
Your server already sends that outcome, and it's ready to count. Click Set Up on the row. If another outcome is first, ask Revnu to move this one first too.
Which outcome do my ads optimise for?
The first one you set up. The others are reported to your ad platforms without changing bidding, and TikTok receives the first. To change the order, ask Revnu and approve the draft in Ads, Revnu Tag.
My result isn't a purchase, trial or booked call. What do I choose?
The closest of the three, with your own event name. An account application or sign-up is a trial start. A quote request that leads to a call is a booked call. Ask Revnu in chat to set it up and approve the draft.
How do I fix a wrong website address in setup?
Click Back to the Your Website step, correct it, and continue.
Can Revnu add the tracking code to my site itself?
Yes, when your site's code is in a GitHub repo. Choose Revnu Adds It for You in the Revnu Tag setup, or ask Revnu in chat. It opens a pull request; you review and merge it, then add the server key to your host.
What if "Writing your win definition" takes more than a few minutes?
Click Ask Again. Your setup is saved either way.
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's updated.