Built for lean teams,
scaled for category leaders
Thanks. You're signed up.
Something went wrong. Please try again.
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.

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.
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.
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.
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.
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.
Resend uses {{{contact.property}}}. Two braces will not resolve, and the Broadcast will go out with the raw tag visible.
A new participant has no referral count yet. |0 keeps the sentence readable instead of shipping “You have made referrals”.
Preview against a Contact that has already synced. A Contact without the properties renders the fallbacks, which hides mistakes in the property names.
{{{contact.grsf_share_url}}}. Add a fallback after a pipe when the value can be empty, like {{{contact.first_name|there}}}.
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.
grsf_share_url. If you only add one, add that one — it is the field that turns an open into a share.
Launch a refer-a-friend or affiliate program that lowers your acquisition costs and builds customer loyalty, with little engineering work.
Trusted by marketing and product teams that grow through customer, user, and partner referrals.
