HighLevel (GoHighLevel): show proof when a tag is added
Already 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.
7 min read · Updated Oct 6, 2026
Lots of funnel builders already tag contacts in HighLevel when something happens: "Bought VIP Ticket", "Registered - Webinar Oct", "Joined Challenge". You can turn each of those tags into social proof on your pages. When the tag is added, a HighLevel workflow sends the contact to your RAVE™ campaign, and your cards show "Sarah K. from Austin just purchased VIP Ticket".
RAVE™ doesn't connect to your HighLevel account, and it doesn't need to. The workflow sends just the one contact who was tagged.
When to use this recipe
Use it when:
- Your order forms, calendars, webinar tool or other workflows already tag contacts in HighLevel, and
- You want those buyers or registrants to appear on your sales page, registration page or thank-you page.
If you'd rather trigger on a form or an order directly, see Send HighLevel opt-ins and orders to RAVE™. The pixel goes on your funnel pages as usual: Install the pixel on HighLevel.
What you need
- A RAVE™ campaign that shows on your page, with the pixel installed on your funnel or website.
- The campaign's webhook URL. In RAVE™, open the campaign and click its Sources tab (or click Sources & integrations in the sidebar and pick the campaign). Copy the URL under Webhook URL.
- The exact tag you want to use, for example
bought vip ticket. (HighLevel usually stores tags in lowercase.)
Build your URL
Add labels to the end of your webhook URL so RAVE™ knows what the tag means:
https://rave.cxformula.com/api/ingest/YOUR_CAMPAIGN_KEY?source=ghl&event=purchase&product=VIP%20Ticket
| Label | What to put | Example |
|---|---|---|
event | What the person did. purchase shows "just purchased"; registration and signup show "just joined". | event=purchase |
product | The name your cards show. Use %20 for each space. Up to 120 characters. | product=VIP%20Ticket |
step | Optional. A short label that keeps different products from being treated as duplicates (see below). | step=vip |
Some ready-made examples (tag names are examples; use your own):
| Tag in HighLevel | Add to your RAVE™ URL |
|---|---|
| bought vip ticket | ?source=ghl&event=purchase&product=VIP%20Ticket&step=vip |
| bought general admission | ?source=ghl&event=purchase&product=General%20Admission&step=ga |
| registered - webinar oct | ?source=ghl&event=registration&product=October%20Webinar |
| joined challenge | ?source=ghl&event=signup&product=5-Day%20Challenge |
Step by step
Create a workflow
In HighLevel, go to Automation → Workflows and click Create workflow. Start from scratch.
Add the trigger
Click Add Trigger and choose Contact Tag.
Pick your tag
Add a filter for Tag Added and choose your tag, for example
bought vip ticket. Save the trigger.Add a Webhook action
Click + under the trigger, search for
webhookand choose Webhook. Give it a name like "Send to RAVE™".Set method and URL
Leave Method on POST and paste your labeled URL into URL, for example
https://rave.cxformula.com/api/ingest/YOUR_CAMPAIGN_KEY?source=ghl&event=purchase&product=VIP%20Ticket.Add the contact fields
Under Custom Data, click + Add item and add the keys in the table below. Then click Save Action.
Publish
Switch the workflow from Draft to Publish (top right) and save.
That's it. From now on, every contact who gets the tag shows up in your RAVE™ cards within about a minute.
What RAVE™ shows from the contact
HighLevel's Webhook already sends the contact's standard fields. Adding them as Custom Data too makes sure the right values are used:
| Key | Value | What RAVE™ does with it |
|---|---|---|
first_name | {{contact.first_name}} | Shown on cards ("Sarah") |
last_name | {{contact.last_name}} | Only the first letter is kept ("Sarah K."). The full last name is never stored. |
email | {{contact.email}} | Turned into a one-way code to spot duplicates, then never shown |
city | {{contact.city}} | Shown as the location ("from Austin") |
state | {{contact.state}} | Added to the location ("Austin, TX") |
HighLevel's Webhook also includes your own business details (your sub-account's name and address). RAVE™ ignores those, so a contact without a city never shows your business's city.
If a contact has no first name, RAVE™ still records the event using the email, and cards show "Someone". If a contact has neither a first name nor an email, RAVE™ skips it.
One URL per product, or one for everything
One workflow per tag (recommended). Each tag gets its own workflow and its own URL with its own product=. It's the easiest to read later and the hardest to get wrong.
One workflow, a product field. If you'd rather run one workflow for several tags, leave product= out of the URL and add a product key under Custom Data instead, filled from a contact field that holds the product name. You can also add an If/Else step that checks which tag the contact has and put a separate Webhook action, each with its own URL, on each branch.
Test it
Use a test contact
Create a contact with your own email (or a plus address like you+vip@example.com), a first name, last name and city.
Add the tag
Open the contact in HighLevel and add the tag, for example
bought vip ticket. Make sure the workflow is published first.Check the workflow
In the workflow's execution history, confirm the contact passed the Webhook step.
Check RAVE™
Open the campaign's Analytics. Events received and Events by type go up by one. The site's page also shows Events, last 7 days.
See the alert
Open your page. If the campaign is live, the test person appears in your cards within about a minute.
RAVE™ doesn't have a per-event log yet, so the Analytics counters are the place to confirm an event arrived. To check how the card looks without touching HighLevel, use Send test event on the campaign page.
Troubleshooting
- Nothing shows up. Check the workflow is published (not a draft) and that the trigger filter is Tag Added with the right tag. A contact who already went through the workflow may not enter again unless re-entry is allowed in the workflow's settings; to retest, use a new contact or remove and re-add the tag.
- Still nothing. Make sure the method is POST, you pasted the whole URL including the long campaign key, and the campaign isn't paused. A paused campaign skips webhooks.
- The wrong product name shows. Check the
product=label in that workflow's URL. Use%20for spaces. If you send aproductkey in the data, remember aproduct=in the URL wins. - Names look odd, like
{{contact.first_name}}. A merge field is misspelled. Copy the keys and values from the table above exactly. RAVE™ ignores unfilled merge fields. - Everything says "just joined". Add
event=purchaseto the URL. - The second product a person buys doesn't show. RAVE™ counts the same email doing the same thing once within the campaign's Duplicate window (minutes) (24 hours by default, on the Privacy tab). Give each product its own
step=, such asstep=vipandstep=ga, so they count separately. - Staff or test contacts show on your page. Add an If/Else step before the Webhook action that skips contacts with a tag like
staffor an email at your own domain. To remove someone who already went through, delete their entries by email with the RAVE™ API (see Privacy and data deletion). - The same person shows twice. Usually two workflows fire for the same tag, or the tag was removed and added again. Check that only one workflow sends that tag to RAVE™.
- Agencies. Use the webhook URL from the client's own RAVE™ workspace so their events land in their campaigns.
Privacy
RAVE™ keeps only what the cards need: first name, the first letter of the last name, city and state, and the product. The email is stored only as a one-way code to spot duplicates and is never shown to visitors. Your campaign's Privacy tab can show first names only, or no names at all. More: Privacy and data deletion.
Common questions
Can RAVE™ read my HighLevel tags directly?
Not directly yet. Use a tag-triggered webhook like the one above. The upside: RAVE™ never needs access to your HighLevel account or your contact list. Only the contact who just got the tag is sent.
Is the webhook URL secret?
Treat it like a password. Anyone with the URL can send events to that campaign. If it leaks, contact RAVE™ support.
More detail on labels and event types: How webhooks work. Using ActiveCampaign too? See ActiveCampaign: show proof when a tag is added.
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.
- Send HighLevel (GoHighLevel) opt-ins and orders to RAVE™Add a Webhook action to a HighLevel workflow so form submissions and orders show up in your RAVE™ cards.
- Install the pixel on HighLevel (GoHighLevel)Add the RAVE™ pixel to a HighLevel funnel or website through its head tracking code setting.
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.