# How to Add Referral Links to Loops Emails > Use GrowSurf contact properties in Loops emails so every contact receives their own referral link and progress. - URL: https://growsurf.com/integration-guides/loops-referral-email-personalization/ --- [← View All Guides](/integration-guides/) Single-brace contact properties put each reader’s own referral link into one Loops campaign or loop. Want the full setup walkthrough? Use these docs for exact setup steps, supported fields, and troubleshooting. [GrowSurf Loops email tutorials](https://docs.growsurf.com/integrations/loops/tutorials) [Loops contact properties docs](https://loops.so/docs/contacts/properties) With GrowSurf syncing into a Loops mailing list, each contact’s referral link and progress are contact properties. One campaign covers the whole list, each reader seeing their own link. Loops merges with single braces and camelCase names. Both differ from what most email tools use, so they are worth getting right before your first send. ## Integration Steps ### Confirm the properties exist The Loops API key field in the GrowSurf Program EditorLoops lives in Program Editor > 4. Options > Integrations. Open a synced contact in Loops and confirm the `grsf` properties carry values before you write against them. ### Put the link where it gets copied Use `{grsfShareUrl}` as both the href and the visible text, above the fold. ### Keep progress honest for new contacts `{grsfTotalReferralCount}` reads well for an active referrer and badly for someone at zero. Write the sentence so it works at zero, or send that variant only to contacts with referrals. ### Move the prompt into a loop A loop that fires after signup keeps asking every new contact without another send. Change the reward in GrowSurf and the next sync updates the values. ## Code Snippets **The referral link** ```

Share your referral link:

{grsfShareUrl} ``` **Progress and next milestone** ```

You have made {grsfTotalReferralCount} referrals so far.

{grsfNextMilestone}

``` **A link into your referral portal** ``` View your referral progress ``` Replace `YOUR_PROGRAM_ID` with your GrowSurf Program ID, or use your custom Referral Portal domain. ## Tips #### One brace, not two `{grsfShareUrl}` merges. The double-brace form other tools use does not. #### Names are camelCase `grsfNextMilestone`, not `grsf_next_milestone`. #### Preview as a synced contact A test to an address that is not in the mailing list resolves nothing. Recommended Guides [Loops logo How to Sync GrowSurf Referral Data to Loops Contacts One API key, one mailing list, and every Loops contact carries their referral link as a contact property. View Guide →](/integration-guides/loops-referral-contact-sync/) [Resend logo 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. View Guide →](/integration-guides/resend-referral-broadcast-personalization/) [Bento logo How to Add Referral Links to Bento Emails and Flows Bento reads GrowSurf data as visitor attributes, so one broadcast gives every person their own referral link. View Guide →](/integration-guides/bento-referral-email-personalization/) ## FAQ #### What is the merge syntax in Loops? Single curly braces around the camelCase property, for example `{grsfShareUrl}`. #### Do these work in loops as well as campaigns? Yes. They are contact properties, so anywhere Loops merges contact data. #### Why is my value blank? Usually a snake\_case spelling, or a contact that has not synced yet. ## Turn word of mouth into steady growth from your customers Launch a refer-a-friend or affiliate program that lowers your acquisition costs and builds customer loyalty, with little engineering work. [Launch Your Program](https://app.growsurf.com/signup) 14-day free trial No credit card required Trusted by marketing and product teams that grow through customer, user, and partner referrals. ## Built for lean teams, scaled for category leaders Thanks. You're signed up. Something went wrong. Please try again.