← View All Guides
Webhooks logo
Integration Guide

How to Sync GrowSurf Participant and Referral Events with Webhooks

Use GrowSurf webhooks to store share links, participant details, and referral milestones in your own app without polling the API.

Want the full setup walkthrough?

Use these docs for exact setup steps, supported fields, and troubleshooting.

GrowSurf webhooks push participant, reward, fraud-status, and program events to your endpoint as they happen, so your app can stay in sync without making repeated API calls.

Use this setup when you want to store each participant's share link, mirror referral activity into your own database, or hand GrowSurf events off to internal services the moment they happen.

Integration Steps

Add your endpoint in GrowSurf and send a test request

GrowSurf Webhooks settings in the Program Editor
Add your webhook URL in the Program Editor, then use the built-in Test button before you wire the endpoint into production logic.

Go to the Options step in the Program Editor, open the Webhooks card, enter your endpoint URL, and publish your changes. GrowSurf lets you send a test request right from the integration so you can inspect the exact payload shape first.

Turn on only the events your app actually needs

Open the advanced webhook settings and select the events that match the job. The most common sync flow starts with NEW_PARTICIPANT_ADDED, then layers in PARTICIPANT_REACHED_A_GOAL, PARTICIPANT_FRAUD_STATUS_UPDATED, or CAMPAIGN_ENDED only when your downstream system needs those state changes.

Store participant records from the new-participant payload

The NEW_PARTICIPANT_ADDED payload includes the participant record, their shareUrl, campaign context, and referrer details when the signup came from another participant. That makes it the clean event for saving GrowSurf share links or mirroring participant records into your own database.

Use reward, fraud, and program-end events to update state

Reach for PARTICIPANT_REACHED_A_GOAL when you need to react to reward milestones, PARTICIPANT_FRAUD_STATUS_UPDATED when ops should review a risk change, and CAMPAIGN_ENDED when your app should close out or archive a program.

Secure deliveries and watch the event logs

Advanced Webhooks settings showing event selection and secret field
Advanced webhook settings let you narrow the event list and add a signing secret before you trust production traffic.

Add a webhook secret so GrowSurf includes the GrowSurf-Signature header on outgoing requests, then validate that HMAC before you process production traffic. If deliveries begin to fail, GrowSurf retries them automatically and the current app exposes Webhook Event Logs so you can inspect recent failures while you fix the endpoint.

Code Snippets

app.post('/growsurf/webhooks', function(req, res) {
  const body = req.body;

  if (body.event === 'NEW_PARTICIPANT_ADDED') {
    upsertParticipant({
      email: body.data.email,
      shareUrl: body.data.shareUrl,
      referrerId: body.data.referredBy || null
    });
  }

  res.json({ received: true });
});

Tips

FAQ

Can I choose which events GrowSurf sends?

Yes. The advanced webhook settings let you select the specific event types to emit for each webhook URL.

How many webhooks can one program have?

GrowSurf supports up to five webhooks per program.

What happens if my endpoint fails?

GrowSurf retries failed deliveries with exponential backoff for several days. After repeated failures, the webhook is marked undeliverable until you fix the endpoint and re-enable it.

Set up your refer a friend program with customer referral and affiliate program software that lowers your acquisition costs, increases customer loyalty, and saves you gobs of time.

Trusted by marketing and product teams at fast-growing B2C, fintech, and SaaS companies