Listmonk

Listmonk

Listmonk er en selvhostet nyhedsbrev- og mailinglistehåndtering, som arrangører kan bruge internt til at sende informations-e-mails til deltagere.

Listmonk kan installeres på din egen server, eller det kan hurtigt og nemt opsættes i skyen.

Her er nogle skytjenester, hvor du hurtigt kan opsætte Listmonk-systemet:

Cloud-tjenester
One-click deploy on Railway
Deploy on Elestio
Deploy on PikaPod

Listmonk-dashboardet ser sådan ud:

splash.png

For at forbinde Listmonk, gå til Klubindstillinger -> "Integrationer".

Klubindstillinger kan findes i nederste venstre hjørne.

Under integrationer, find Listmonk og klik på "Forbind".

For at forbinde Listmonk, skal følgende felter udfyldes:

Efter at have udfyldt felterne og trykket på "Gem", vil systemet forsøge at forbinde til Listmonk og verificere, at forbindelsen fungerer.

Når forbindelsen er etableret, kan du vælge et e-maildesign og udføre følgende handlinger:

  1. Vælg det e-maildesign, der sendes, når et medlemskab er betalt.
  2. Udfør begivenhedssynkronisering.
  3. Synkroniser medlemse-mails.
  4. Send en test "Køb e-mail".

Begivenhedssynkronisering (konkurrencer eller udfordringer) #

Hver arrangørs begivenhed opretter en ny e-mailliste i Listmonk, hvilket gør det muligt at knytte deltagere til en specifik e-mailliste, så arrangøren kan sende e-mails kun til deltagere af den specifikke begivenhed.

Ved at trykke på knappen "Initialiser fuld begivenhedssynkronisering" oprettes alle begivenheder i Listmonk.

Alle begivenheder vil blive gemt i følgende format: "År - Konkurrencenavn".

Når en ny deltager tilføjes til Listmonk, kontrollerer systemet, om den specifikke begivenhed er oprettet; hvis ikke, oprettes den.

Deltagersynkronisering #

Hver gang et køb foretages (medlemskabsbetaling), sendes en forespørgsel til Listmonk, og deltagerens e-mails tilføjes. Både "faktura-e-mail", som køberen skal udfylde, og alle e-mails knyttet til deltagerne tilføjes.

Hver deltager tilføjes til den specifikke konkurrenceliste, og følgende attributter vedhæftes:

  • Begivenheder - indeholder en liste over alle de begivenheder, som deltageren har deltaget i.
  • Markedsføring - indeholder information om de "markedsførings"-præferencer, der blev markeret under købsprocessen.

Denne information kan bruges til at filtrere deltagere og tilføje dem til nye mailinglister.

For eksempel, for at finde alle deltagere, der har angivet, at de ønsker at modtage nyheder, kan følgende forespørgsel bruges: (subscribers.attribs->'marketing'->>'News')::BOOLEAN = true.

Udførelse af denne forespørgsel vil vælge alle deltagere, der har angivet, at de ønsker at modtage nyheder.

Initial deltager-synkronisering #

For at udføre den indledende deltager-synkronisering skal du trykke på knappen "Initialiser fuld datasynkronisering med Listmonk". Bemærk, at dette kan tage længere tid, hvis antallet af deltagere er stort.

Købsbekræftelse e-mail #

DistantRace sender en automatisk e-mail fra systemet, når en deltager betaler for deres tilmelding, men arrangører kan oprette deres eget e-maildesign.

Det er vigtigt at inkludere følgende i e-mailen:

  • Hvad der betales for og beløbene
  • Det samlede betalte beløb
  • Et link til købsbekræftelsen

Hvordan opretter man en e-mail og forbinder den til DistantRace?

  1. Opret en købsbekræftelse e-mail.

I Listmonk er det muligt at oprette "Transaktionelle" e-maildesigns. Opret et nyt design til købsbekræftelse.

Her er et forenklet eksempel på e-mailen:

<!doctype html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1">
        <base target="_blank">

        <style>
            body {
                background-color: #F0F1F3;
                font-family: 'Helvetica Neue', 'Segoe UI', Helvetica, sans-serif;
                font-size: 15px;
                line-height: 26px;
                margin: 0;
                color: #444;
            }

            pre {
                background: #f4f4f4f4;
                padding: 2px;
            }

            table {
                width: 100%;
                border: 1px solid #ddd;
            }
            table td {
                border-color: #ddd;
                padding: 5px;
            }
            table th {
                border-color: #000;
                padding: 5px;
                text-align: left;
            }

            .wrap {
                background-color: #fff;
                padding: 30px;
                max-width: 525px;
                margin: 0 auto;
                border-radius: 5px;
            }

            .button {
                background: #0055d4;
                border-radius: 3px;
                text-decoration: none !important;
                color: #fff !important;
                font-weight: bold;
                padding: 10px 30px;
                display: inline-block;
            }
            .button:hover {
                background: #111;
            }

            .footer {
                text-align: center;
                font-size: 12px;
                color: #888;
            }
                .footer a {
                    color: #888;
                    margin-right: 5px;
                }

            .gutter {
                padding: 30px;
            }

            img {
                max-width: 100%;
                height: auto;
            }

            a {
                color: #0055d4;
            }
                a:hover {
                    color: #111;
                }
            @media screen and (max-width: 600px) {
                .wrap {
                    max-width: auto;
                }
                .gutter {
                    padding: 10px;
                }
            }
        </style>
    </head>
<body style="background-color: #F0F1F3;font-family: 'Helvetica Neue', 'Segoe UI', Helvetica, sans-serif;font-size: 15px;line-height: 26px;margin: 0;color: #444;">
    <div class="gutter" style="padding: 30px;">&nbsp;</div>
    <div class="wrap" style="background-color: #fff;padding: 30px;max-width: 525px;margin: 0 auto;border-radius: 5px;">
        <p>Hello {{ .Subscriber.Name }}</p>
        <p>
            <strong>Order number: </strong> {{ .Tx.Data.orderNumber }}<br />
            <strong>Created date: </strong> {{ .Tx.Data.createdAt }}<br />
        </p>
        <br />
        <table>
        <tr><th>Name</th><th>Price</th></tr>
        {{range .Tx.Data.products}} <tr><td>{{.title }}</td><td>{{.price}} {{ .Tx.Data.currency }}</td></tr>{{end}} 	
        </table>
        Total price: {{ .Tx.Data.orderSum }} {{ .Tx.Data.currency }}
        <br />
        <p>
            <a href="{{ .Tx.Data.orderUrl }}">Open Order</a>
        </p>
    </div>
    
    <div class="footer" style="text-align: center;font-size: 12px;color: #888;">
        <p>{{ L.T "public.poweredBy" }} <a href="https://listmonk.app" target="_blank" rel="noreferrer" style="color: #888;">listmonk</a></p>
    </div>
</body>
</html>

Visuelt ser denne HTML sådan ud:

  1. Når designet er forberedt, skal den specifikke skabelon vælges i DistantRace Listmonk-integrationen:

Hvis designet ikke er tilgængeligt, tryk på "Opdater" knappen (ved at trykke på denne knap opdateres listen over designs) og åbn integrationen igen.

  1. Når designet er valgt og gemt, kan du teste, hvordan designet ser ud ved at sende en test-e-mail. Tryk på knappen "Test Order Email (if template is set)".

Det var det - fra dette øjeblik, hvis en deltager betaler for deres tilmelding, vil kun din designede e-mail blive sendt.

Her er et eksempel med den information, der sendes til Listmonk for at sende e-mailen:


{
        "subscriber_email": email,
        "template_id": template_id,
        "data": {
            "orderID": "36902",
            "orderNumber": 36902,
            "firstName": first_name,
            "lastName": last_name,
            "cartID": "36902",
            "orderUrl": "https://distantrace.com/en/cart/d5949dac-b7d9-4e93-a874-34946286c006/",
            "currency": "EUR",
            "orderSum": 30.0,
            "createdAt": "2024-05-02 15:50",
            "updatedAt": "2024-05-02 16:36",
            "paymentMethod": "payment with card",
            "paymentStatus": "paid",
            "tags": ["Competition Name"],
            "products": [
                {
                    "cartProductID": 85268,
                    "productID": "607",
                    "variantID": "432",
                    "variantTitle": "Distance Name",
                    "title": "Participant Name - Competition Name, Distance Name, Additional products",
                    "vendor": "Competition Name",
                    "quantity": 1,
                    "price": 15.0,
                },
                {
                    "cartProductID": 85268,
                    "productID": "607",
                    "variantID": "432",
                    "variantTitle": "Distance Name",
                    "title": "Participant Name - Competition Name, Distance Name, Additional products",
                    "vendor": "Competition Name",
                    "quantity": 1,
                    "price": 15.0,
                },
            ],
        },
        "content_type": "html",
    }

Vis som Markdown