# Loops

{% embed url="<https://www.youtube.com/watch?v=SwedBn58NIM>" %}
Using Loops to send Magic Link emails — Video tutorial
{% endembed %}

First of all, configure Loops.

For this to work you only need the `LOOPS_API_KEY` environment variable configured.&#x20;

[Follow this guide](https://docs.shipped.club/emails#create-api-key) to set it.

## Configure Auth to use Loops for Magic Link

Open `src/config/auth.ts` and set

```typescript
import { emailFrom } from "@/config";
import { sendTransactionalEmail } from "@/libs/loops"

/* ... */

providers: [
  EmailProvider({
    async sendVerificationRequest({ identifier: email, url }) {
      await sendTransactionalEmail({
        transactionalId: "", // the transactional id you created on Loops
        email,
        dataVariables: {
          url, // change it to the variable you set in the Loops transactional
        },
      });
    },
  }),
],
```

## Create a Transactional in Loops

Log in to Loops and go to [Transactional](https://app.loops.so/transactional).

Click "New" and create an email similar to this one:

<figure><img src="https://3985976695-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FT3t4pDs63s3Soj1JetJw%2Fuploads%2FkHvA2fk8RGu2Cst0JJGe%2Fimage.png?alt=media&#x26;token=46e1c64b-104d-450a-a504-5d059b59bce1" alt=""><figcaption><p>Magic Link Email Transactional</p></figcaption></figure>

It is important that `url` is a **data variable.**<br>

<figure><img src="https://3985976695-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FT3t4pDs63s3Soj1JetJw%2Fuploads%2F4tNt5oFLH6Yl98VLOmrW%2Fimage.png?alt=media&#x26;token=4e73c9d7-b7e7-48b9-aeb0-8b55b6487226" alt=""><figcaption></figcaption></figure>

Now click on "Next", copy the transactional id (a string with this format clq6w35vr000yib0qwz0bwxp7), and paste it in `auth.ts` as the value of `transactionalId`.\
\
You have now configured Loops to send the magic link email 🎉


---

# Agent Instructions: 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:

```
GET https://docs.shipped.club/features/authentication/loops.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
