> For the complete documentation index, see [llms.txt](https://docs.growsurf.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.growsurf.com/integrations/loops.md).

# Loops

## Sync participants to a Loops mailing list

**Step 1:** In [Loops > Settings > API](https://app.loops.so/settings?page=api), generate a new API key, and copy it.

**Step 2:** In GrowSurf, open *Program Editor > 4. Options > Integrations > Loops*. Enter the API key, then connect your account.

<figure><img src="/files/pYy3UFDpkx6dw5SKiegY" alt="The Loops integration API key form in the GrowSurf Program Editor"><figcaption><p>Connect Loops with an API key.</p></figcaption></figure>

**Step 3:** Select the Loops mailing list that should receive GrowSurf participants, then save your changes. GrowSurf creates the Contact Properties listed below and starts syncing new and updated participants.

<figure><img src="/files/10BIXTNyMuyEug6JveAD" alt="The enabled Loops integration with the GrowSurf E2E mailing list selected"><figcaption><p>Select the Loops mailing list that should receive participant data.</p></figcaption></figure>

{% hint style="warning" %}
Connect Loops before importing participants. If participants are already in your Program, follow [these ESP sync options](https://support.growsurf.com/article/385-how-can-i-sync-my-growsurf-participants-to-my-esp) to send their GrowSurf data to Loops.
{% endhint %}

## Contact Properties

GrowSurf creates these account-level Contact Properties in Loops. Use the property API name inside braces, such as `{grsfShareUrl}`.

| Contact Property                         | API name                       | Type   | Description                                                         | Example                                |
| ---------------------------------------- | ------------------------------ | ------ | ------------------------------------------------------------------- | -------------------------------------- |
| GrowSurf Share URL                       | `grsfShareUrl`                 | String | The participant's unique referral link                              | `https://growsurf.com?grsf=abc123`     |
| GrowSurf Participant ID                  | `grsfParticipantId`            | String | The participant's GrowSurf ID                                       | `abc123`                               |
| GrowSurf Referral Status                 | `grsfReferralStatus`           | String | The participant's referral-credit status                            | `CREDIT_PENDING`                       |
| GrowSurf Participant First Name          | `grsfParticipantFirstName`     | String | The participant's first name                                        | `Bob`                                  |
| GrowSurf Participant Last Name           | `grsfParticipantLastName`      | String | The participant's last name                                         | `Loblaw`                               |
| GrowSurf Referrer First Name             | `grsfReferrerFirstName`        | String | The referrer's first name, when applicable                          | `Gavin`                                |
| GrowSurf Referrer Last Name              | `grsfReferrerLastName`         | String | The referrer's last name, when applicable                           | `Belson`                               |
| GrowSurf Referrer Email                  | `grsfReferrerEmail`            | String | The referrer's email, when applicable                               | `gavin@example.com`                    |
| GrowSurf Total Referral Count            | `grsfTotalReferralCount`       | Number | The participant's all-time referral count                           | `12`                                   |
| GrowSurf Monthly Referral Count          | `grsfMonthlyReferralCount`     | Number | The participant's referral count for the current month              | `3`                                    |
| GrowSurf Previous Monthly Referral Count | `grsfPrevMonthlyReferralCount` | Number | The participant's referral count for the previous month             | `8`                                    |
| GrowSurf Next Milestone                  | `grsfNextMilestone`            | String | The next milestone message, when the Program uses milestone rewards | `2 referrals until your next reward`   |
| GrowSurf Next Monthly Milestone          | `grsfNextMonthlyMilestone`     | String | The next monthly milestone message, when applicable                 | `1 referral until this month's reward` |
| GrowSurf Total Invite Count              | `grsfTotalInviteCount`         | Number | The participant's all-time invite count                             | `24`                                   |
| GrowSurf Total Impression Count          | `grsfTotalImpressionCount`     | Number | The participant's all-time referral-link view count                 | `150`                                  |

The referral status can be `CREDIT_PENDING`, `CREDIT_AWARDED`, or `CREDIT_EXPIRED`.

[View the Loops tutorials](/integrations/loops/tutorials.md) for copy-and-paste examples. View Loops' [Contact Properties guide](https://loops.so/docs/contacts/properties) to see how to add these values to campaign and workflow emails.

## Troubleshooting

* If GrowSurf cannot connect, generate a new key under *Loops > Settings > API* and try again.
* If the selected mailing list was deleted, choose an existing list in GrowSurf and save again.
* Loops does not allow an unsubscribed Contact to be added back to a mailing list. That Contact can fail while the rest of the integration continues syncing normally.
* Check the GrowSurf participant's activity logs when a participant does not sync. GrowSurf retries temporary provider errors for up to seven days.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.growsurf.com/integrations/loops.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
