← View All Guides
Resend logo
Integration Guide

How to Add Referral Links to Resend Broadcasts

Drop each participant’s own referral link and progress into a Broadcast with Resend’s Contact Property syntax.

Want the full setup walkthrough?

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

A referral Broadcast only works if every reader gets their own link. Once GrowSurf is syncing to a Resend Segment, that link is a Contact Property, so one Broadcast covers the whole list.

This guide shows the exact syntax for the referral link, a portal link, and progress copy, plus the fallback that keeps an empty value from printing a blank line.

Integration Steps

Confirm the Segment is syncing

The connected Resend integration in GrowSurf with a Segment selected
The Contact Properties exist once a Segment is selected and participants have synced.

A Broadcast can only personalize on properties that are already on the Contact. Check that the Segment is selected in Program Editor > 4. Options > Integrations and that at least one participant has synced.

Write the Broadcast against that Segment

In Resend, create a Broadcast and send it to the Segment GrowSurf is keeping current. Reference properties with triple braces: {{{contact.grsf_share_url}}}. Resend supports a fallback after a pipe, so {{{contact.grsf_total_referral_count|0}}} prints 0 rather than nothing.

Lead with the link, not the explanation

Put the referral link above the fold and make it both the href and the visible text. People copy the visible URL far more often than they click a styled button, and a visible link survives being pasted into a message.

Check where to change the source values

Milestone text, reward rules, and the referral link itself are configured on the GrowSurf side. Change them there and the next sync carries the new values into your Broadcast.

Code Snippets

The participant’s referral link

<p>Copy and paste your unique referral link to share:</p>
<p>
  <a href="{{{contact.grsf_share_url}}}">{{{contact.grsf_share_url}}}</a>
</p>

Referral progress, with a fallback

<p>You have made {{{contact.grsf_total_referral_count|0}}} referrals so far.</p>

A link into your referral portal

<a href="https://grow.surf/YOUR_PROGRAM_ID?grsf_email={{{contact.email}}}&grsf_first_name={{{contact.first_name}}}&grsf_last_name={{{contact.last_name}}}">
  View your referral progress
</a>

Replace YOUR_PROGRAM_ID with your GrowSurf Program ID, or swap the whole https://grow.surf/YOUR_PROGRAM_ID portion for your custom Referral Portal domain.

Tips

Three braces, not two

Resend uses {{{contact.property}}}. Two braces will not resolve, and the Broadcast will go out with the raw tag visible.

Give every number a fallback

A new participant has no referral count yet. |0 keeps the sentence readable instead of shipping “You have made referrals”.

Send a test to a synced Contact

Preview against a Contact that has already synced. A Contact without the properties renders the fallbacks, which hides mistakes in the property names.

FAQ

What is the exact Contact Property syntax?

{{{contact.grsf_share_url}}}. Add a fallback after a pipe when the value can be empty, like {{{contact.first_name|there}}}.

Can I show milestone progress?

Yes, with grsf_next_milestone. It is populated on programs that use milestone rewards and have Next Milestone text set, so give it a fallback on other programs.

Which property matters most?

grsf_share_url. If you only add one, add that one — it is the field that turns an open into a share.

Trusted by marketing and product teams that grow through customer, user, and partner referrals.