How webhooks work
Each campaign has its own webhook URL. Point your tools at it, label each signal with ?event=, ?product= and ?step=, and test it.
4 min read · Updated Oct 6, 2026
A webhook is how your other tools tell RAVE™ that something happened: someone opted in, bought, registered or watched. Each event becomes a person your RAVE™ cards can show, such as "Sarah K. from Austin just joined".
Find your webhook URL
Every campaign has its own webhook URL. To find it:
- In your workspace, click Sources & integrations in the sidebar and pick a campaign, or open the campaign and click its Sources tab.
- Copy the URL under Webhook URL. It looks like this:
https://rave.cxformula.com/api/ingest/YOUR_CAMPAIGN_KEY
The campaign key in the URL is different from your pixel's site key. Treat the webhook URL like a password: anyone who has it can send events to that campaign.
Label each signal
You can add labels to the end of the URL. They let one tool feed several webhooks (opt-in page, order form, upsell) and have each one recorded correctly.
| Parameter | What it does | Example |
|---|---|---|
source | Names the tool sending the event | source=clickfunnels |
event | Sets the event type, overriding what the payload suggests | event=purchase |
product | The product or offer name shown on cards (up to 120 characters) | product=Ultimate%20Pack |
step | A free-text funnel step (up to 60 characters) | step=upsell-1 |
vid | The visitor's RAVE™ ID, for A/B conversion goals (advanced) | vid=… |
For example:
https://rave.cxformula.com/api/ingest/YOUR_CAMPAIGN_KEY?source=clickfunnels&event=purchase&product=Ultimate%20Pack&step=main
Use %20 for spaces. You don't have to build these by hand: the campaign's Sources tab has Setup guides with event, product and step fields that build the full URL for you.
Event types
| Event | Card wording |
|---|---|
signup | just joined |
registration | just joined |
purchase | just purchased |
upsell | just purchased |
watched | just watched |
attended | just attended |
completed | just completed |
custom | just took action |
By default, RAVE™ Alert cards use signup, registration, purchase, upsell and custom, and RAVE™ Live cards use watched, attended and completed. RAVE™ Count cards count them.
If you leave out event, RAVE™ guesses from the payload: words like "upsell" or "one-time offer" mean upsell, "order", "purchase", "sale" or "payment" mean purchase, "registration" or "webinar" mean registration, and anything else is a signup. To record watched, attended, completed or custom, set event= in the URL.
What to send
RAVE™ accepts JSON or form-encoded POST bodies and reads common field names automatically, including nested ones. The useful fields are:
- Name:
first_nameandlast_name(or a singlename/full_name) - Email:
email - Location:
city,state,country - Product:
product,product_nameoroffer_name
Each event needs at least a first name or an email; otherwise RAVE™ skips it. Emails are stored only as a one-way hash and are never shown. Last names never leave RAVE™'s servers beyond an initial, so a card shows "Sarah K.", not a full name. The campaign's Privacy tab can also show first names only, or no names.
Test it
Save the webhook in your tool
Paste the labeled URL and choose POST.
Trigger a real event
Submit your own opt-in form or place a test order.
Check the campaign
Open the campaign's Analytics, or the site's Events, last 7 days counter.
Look at your page
If the campaign is live, the new person appears in your cards within about a minute.
To check the cards themselves without a webhook, use Send test event on the campaign page.
Troubleshooting
- Nothing arrives. Make sure the tool sends a POST, not a GET, and that you copied the whole URL. Opening the URL in a browser only confirms the RAVE™ service is up.
- Events are skipped. A paused campaign skips webhooks, and an event with no first name and no email is ignored. Check that your tool maps the name and email fields.
- Names are missing. Your tool may be sending unfilled merge tags such as
{first_name}. RAVE™ ignores those, so map the real field. - Everything shows as "just joined". Add
event=purchase(or the right type) to that webhook's URL. - Each buyer shows only once. That's the duplicate window. Give upsells their own
step=so they count separately. - Your trial ended. Webhooks keep recording, but cards are paused until you choose a plan.
Already tagging contacts in ActiveCampaign or HighLevel (GoHighLevel)?
If your buyers or registrants already get a tag (for example "Bought VIP Ticket"), you don't need anything new. Build an automation or workflow that starts when the tag is added and sends a webhook to your campaign URL, labeled with event= and product=. Step-by-step recipes:
Common questions
Can RAVE™ read my ActiveCampaign or HighLevel tags directly?
Not directly yet. Use a tag-triggered webhook instead: in ActiveCampaign or HighLevel, an automation that starts when the tag is added sends that one contact to your RAVE™ webhook URL. It also means RAVE™ never needs access to your ActiveCampaign or HighLevel account or your contact list. See the recipes above.
Guides for your tools
Related articles
- ActiveCampaign: show proof when a tag is addedAlready tag buyers or registrants in ActiveCampaign? Add a Webhook step to a "Tag is added" automation and each tagged contact shows up in your RAVE™ cards.
- HighLevel (GoHighLevel): show proof when a tag is addedAlready tag buyers or registrants in HighLevel? Add a Webhook action to a "Contact Tag" workflow and each tagged contact shows up in your RAVE™ cards.
- Send ClickFunnels opt-ins and purchases to RAVE™Create one ClickFunnels 2.0 webhook endpoint per signal (opt-in, order, upsell) pointed at your RAVE™ campaign's webhook URL.
Can't find it?
Send us a question, a bug or an idea. It goes straight to the RAVE™ team, and you can follow its status.