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:

  1. In your workspace, click Sources & integrations in the sidebar and pick a campaign, or open the campaign and click its Sources tab.
  2. 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.

ParameterWhat it doesExample
sourceNames the tool sending the eventsource=clickfunnels
eventSets the event type, overriding what the payload suggestsevent=purchase
productThe product or offer name shown on cards (up to 120 characters)product=Ultimate%20Pack
stepA free-text funnel step (up to 60 characters)step=upsell-1
vidThe 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

EventCard wording
signupjust joined
registrationjust joined
purchasejust purchased
upselljust purchased
watchedjust watched
attendedjust attended
completedjust completed
customjust 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_name and last_name (or a single name / full_name)
  • Email: email
  • Location: city, state, country
  • Product: product, product_name or offer_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

  1. Save the webhook in your tool

    Paste the labeled URL and choose POST.

  2. Trigger a real event

    Submit your own opt-in form or place a test order.

  3. Check the campaign

    Open the campaign's Analytics, or the site's Events, last 7 days counter.

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

Was this helpful?

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.

Send feedback