Skip to main content
Integrations

Send participant data to a webhook

Connect a webhook to a Revup promotion, choose the data to send, and test a JSON delivery to your endpoint.

Before you start

  • Get a public HTTPS webhook URL from the service that should receive your participant data. Revup rejects localhost, private-network, and invalid URLs.
  • Your endpoint must accept POST requests with a JSON body and return a successful 2xx response. Connecting validates the URL; it does not prove that your receiver can process an entry.
  • For a first test, use a request inspector such as Webhook.site with sample participant details. Use your own receiving service for customer data.
  • Purchase Sweepstakes promotions do not have an Integrations tab, so this connector is not available on those promotions.

This guide covers Integrations β†’ Webhook. The Send Webhook step in Flows is a separate feature with its own timing and request settings.

Connect a webhook to a promotion

  1. Open the promotion builder, go to Integrations, and select + Add Integration.
  2. Choose Webhook. If the endpoint is already connected to your Revup account, select + Add beside that Webhook connection instead, then continue to field mapping.
Integrations picker filtered for Webhook, showing a saved endpoint with an Add button and the Webhook connector
  1. In Connect Webhook, paste your receiving URL into Webhook URL and select Connect. You do not need an OAuth sign-in or an API key for this connector.
Connect Webhook dialog with a public HTTPS endpoint entered and the Connect button
  1. In Configure Webhook, review Form Field Mapping. Contact fields such as First Name, Last Name, Email, and Phone are mapped automatically. The lock icon means the destination cannot be changed.
  2. For each other answer you want to send, open its mapping dropdown and choose + Create custom field. Enter a key such as favorite_color, then select Create. This defines a key in your webhook's custom_fields data; it does not create a field in the receiving service.
  3. Leave optional answers set to Do not sync this field if you do not want to send them. Review System Fields, then select Save.
Configure Webhook showing locked contact mappings and Favorite color mapped to a custom field

The Webhook card now shows Active. This confirms that the promotion is configured. Complete the delivery test below to confirm that the receiving endpoint works.

Webhook card marked Active in the promotion's Integrations panel

Test an actual delivery

  1. Make sure the promotion has started. Open Share β†’ Share link and use its Public Link.
  2. Submit one entry with sample details and a value for each field you want to check.
  3. Open your receiver's request log. Look for a POST request with event_type set to entrant.processed and the expected promotion and participant IDs.
  4. Check the contact values in primary_fields, the promotion information in system_fields, and your mapped answers in custom_fields. For example, a Favorite color answer mapped to favorite_color appears as custom_fields.favorite_color.
  5. Confirm that your receiver returned a 2xx response. In Revup, open the participant from the promotion's Participants panel and check Activity for the integration result.
Webhook.site showing the event type, promotion and participant IDs, and sample contact fields from the received JSON request
Participant Activity showing Webhook with a Synced status and a successful delivery message

Use the public link for this test. Entries from the builder preview are flagged as test entries and are never sent to integrations. Delivery also waits for any required entry verification and processing to finish.

Understand the JSON payload

Revup sends the request with Content-Type: application/json. A normal participant event contains these sections:

KeyWhat it contains
event_typeentrant.processed for a normal participant delivery
sent_atThe time Revup sent the request, in UTC
accountYour Revup account's id
promotionThe promotion's id and name
entrantThe participant's id and created_at value
primary_fieldsMapped contact details, such as first_name, last_name, email, and phone_number
system_fieldsThe available promotion, referral, source, device, and return-link values listed below
custom_fieldsOther mapped answers, using the keys you created

Only mapped values that are available are sent. A missing or blank answer may be omitted. Read values by their key names rather than relying on the order of fields in the JSON.

Contact mappings also support address fields, including separate address and address2 keys, plus city, state, postal code, country, birthday, and gender when those fields are on the form. Custom keys should be simple and consistent: use letters, numbers, underscores, or hyphens, such as favorite_color. Avoid using the reserved contact or system keys for custom answers.

System fields

Expand System Fields in Configure Webhook to review the locked mappings. Revup includes their values when available.

Expanded System Fields showing the eight locked webhook mappings
KeyWhat it contains
promotion_idThe promotion associated with the entry
referral_linkThe participant's personal share link
auto_login_linkA private link that returns the participant to their own entry
tracking_campaignThe tracking link's campaign name, when present
entry_source_urlThe page where the participant entered
referring_source_urlThe page that sent the participant to the promotion
device_typeThe type of device used to enter
ip_addressThe IP address used to enter

Keep Auto Login Link private. It can give access to a participant's entry. Do not put it in public logs, shared screenshots, or a message to another participant.

Payment updates

For a supported promotion with a payment field, a completed payment can produce a separate entrant.payment_paid event. It includes account, promotion, and participant information, plus payment.amount, payment.amount_cents, payment.currency, and payment.paid_at. A mapped payment field can also appear in custom_fields.

This event has a different shape from the normal participant event; it does not repeat the full primary_fields and system_fields sections. Check event_type in your receiver and test the payment path separately if you use it.

If the form includes Email Consent and the participant leaves it unchecked, Revup removes their mapped email addresses from the normal webhook payload. If the form includes SMS Consent and it is unchecked, Revup removes their mapped phone numbers.

The normal webhook delivery can still proceed when another allowed email address or phone number remains. If consent filtering removes all allowed email and phone identifiers, Revup skips that delivery. Without a consent field for a channel, this filter does not remove that channel's value. Receiving a webhook does not itself subscribe someone to marketing messages in another service.

Reuse or remove a connection

The endpoint stays connected to your Revup account. On another promotion, go to Integrations β†’ + Add Integration, select + Add beside the saved Webhook connection, configure that promotion's fields, and select Save. Each promotion has its own mapping.

To stop future syncing for one promotion, select the trash icon on its Webhook card and confirm Yes, remove. This leaves the account connection available for other promotions. Use Manage or Account β†’ Integrations to manage the saved account connection. Removing a connection does not erase data already received by your endpoint.

Troubleshooting

  • The URL is rejected: Use a complete public HTTPS address. Localhost, private IP addresses, and invalid destinations cannot receive these webhooks.
  • The card is Active, but no request arrives: Use the public promotion link after its start time, not the preview. Check entry verification, consent, account limits, and the participant's Activity. Saving the integration does not send existing participants automatically.
  • A custom answer is missing: Check its mapping and submitted value. Do not sync this field excludes it from the payload. Look for the key under custom_fields, not at the top level.
  • The receiver rejects the request: Check that it accepts a JSON POST and returns a 2xx status promptly. A login page, 4xx error, 5xx error, or timeout is not a successful delivery.
  • A delivery failed: Fix the endpoint or mapping problem, then review the participant's Activity. Use the retry control when available. If the receiving service may already have processed the request, check its logs before retrying to avoid duplicate actions.
  • Trial limit: Trial integrations sync only the first 20 participants across the Revup account. Upgrading enables future syncs; skipped participants are not synced retroactively.

For your developer: the connector has no custom authentication-header or signing-secret setting, and requests do not carry a Revup signature. Validate incoming data and design the receiver to tolerate repeat deliveries without repeating business actions. Do not treat an unsigned request alone as proof that Revup sent it.