Fancy Events mit CiviCRM

Fancy Events mit CiviCRM

Zusammenfassung

CiviCRM bietet schon in den Kernfunktionen viele großartige Funktionen für Event- und Teilnehmendenmanagement. In diesem Kochbuchrezept beschreibe ich ein Szenario, in dem wir noch eine Menge mehr aus CiviCRM rausholen.

Wir bauen uns hier also ein Setup mit dem wir

  • Kontakte mit personalisiertem Link und RSVP-Formular aus CiviCRM heraus einladen,
  • automatische Bestätigungs-E-Mails je nach Rolle und Sprache des Teilnehmenden konfigurieren,
  • personalisierte Dokumente an E-Mails anhängen (bspw. Eintrittskarten mit QR-Codes und Teilnahmebestätigungen),
  • Personen beim Event mit QR-Codes einchecken und dabei ihren Teilnehmendenstatus anpassen,
  • in Design und Funktion stark anpassbare Anmeldeformulare einsetzen.

Zielgruppe / Komplexität

Wir setzen hier auf eine ganze Latte von CiviCRM- und teilweise Drupal-Erweiterungen, ich empfehle beim ersten Mal vielleicht nur Teile davon umzusetzen oder sich auf eine steilere Lernkurve einzustellen :wink:
Abgesehen von der Entwicklung neuer oder Anpassung bestehender Anmeldeprofile kann man allerdings alles via Oberfläche konfigurieren.

Eingesetzte Erweiterungen & Module

Wir gehen bei den Beschreibungen davon aus, dass die o.g. Module und Erweiterungen installiert sind.

Hinweis zur (optionalen) Nutzung von RemoteEvents & RemoteTools

RemoteEvents ist dafür da, Anmeldeformulare von Events bereitzustellen und bietet dabei umfassende Möglichkeiten zur Individualisierung. Wir nutzen es hier für Formulare, die in Logik und Design deutlich besser anpassbar sind als die nativen CiviCRM-Formulare. Der Funktionsumfang von RemoteEvents ist recht breit, wir gehen hier darum nur auf die relevanten Aspekte ein.

CiviRemote ist eine Erweiterung die darauf abzielt, Kontakte in externen Systemen oder dem CiviCRM-Drupal durch einen Login oder durch Token zu identifizieren. Sie kann in vielen verschiedenen Szenarien, bspw. auch Self-Service-Portalen genutzt werden. Hier nutzen wir sie nur für die Verarbeitung der Token für die Einladungsfunktion.

Für beide CiviCRM-Erweiterungen benötigt man noch so genannte „Endpunkte“ also bspw. Module, die die Funktionen dann bereitstellen. Momentan existieren diese nur für Drupal (siehe unten).

Falls diese nicht verwendet werden sollen, können die Konfigurationen unten übersprungen werden. Dann ist die Nutzung von RSVP-Formularen nur sehr eingeschränkt und die RemoteEvent-Formulare (inkl. Storno- und Änderungslinks) gar nicht möglich.

Alles andere sollte weitgehend identisch funktionieren. Zudem können natürlich perspektivisch entsprechende Module für andere Systeme entwickelt und/oder CiviCRM-native Formulare gebaut werden.

Konfigurationen

Remotetools

Die Einstellungen für Remotetools unter „https://deinecivicrmurl.org/civicrm/admin/remotetools?reset=1“ sind noch überschaubar, in unserem Setup müssen wir nur den Haken setzen bei „Remote Contact Matching Enabled“ und das gewünschte XCM-Profil auswählen.

RemoteEvents

Zunächst einmal sollte man unter https://deinecivicrmurl.org/civicrm/admin/remoteevent/settings?reset=1 einige Grundeinstellungen vornehmen. Das meiste sollte einigermaßen selbsterklärend sein, eine Beispielkonfiguration findet Ihr hier:


Beim „Bearbeiten Link“ nutzen wir „https://deinedrupalurl.org/civiremote/event/update/{token}“ beim Abmeldelink „https://deinedrupalurl.org/civiremote/event/cancel/{token}“.

In jedem Event erscheinen nun je nach Einstellung mindestens der neue Reiter „Onlineanmeldung (CiviRemote)“. Dort setzen wir mindestens dem Haken bei „RemoteEvent Funktionen Aktiviert?“. Im Anschluss müssen wir darüber hinaus ein Standard Anmeldeprofil und ein Standardupdateprofil auswählen.

Die Profile sind im Grunde fertig konfigurierte Einstellungen, die im Anmeldeformular die angezeigten Felder, Labels, Gruppierungen etc. bestimmen. Momentan können Profile noch nicht an der Oberfläche erstellt oder bearbeitet werden (Funktion in Arbeit) werden, daher wählen wir aus den bestehenden aus:

Das Profil E-Mail und Name enthält alle für uns relevanten Felder, wir wählen dieses sowohl für Anmeldungen als auch für Updates aus. Dazu müssen wir es wie im Screenshot auch jeweils unter „Anmeldeprofile“ und „Updateprofile“ erneut auswählen.

Im Bereich „Öffentliche Textelemente“ können ähnlich wie bei den Kernfunktionen Texte, Bilder etc. gestaltet werden um die verschiedenen Schritte der Anmeldemaske anzupassen. Gebt hier nach Belieben etwas ein.

Nach dem Abschluss der Konfigurationen in Drupal (siehe unten) ist die Veranstaltungsanmeldung unter der URL https://deinecivicrmurl.org/civiremote/event/[CiviCRM-Event-ID]/register verfügbar.

CiviMRF & CiviRemote & CiviRemote Events (Drupal-Module)

Diese Drupal Module sind vereinfacht gesagt dafür da, dass unsere schönen Anmeldeformulare auch erscheinen und die eingegebenen Daten an CiviCRM geschickt werden - dies erfordert einige Einstellungen.

User und API Key anlegen

Damit das geht braucht es einen User mit einem API-Key, konkret geht das so:

  • Im CiviCRM-CMS eine Rolle anlegen, die möglichst nur genau die Berechtigungen hat, die benötigt werden, bei uns sind das:
    • RemoteContacts: match and link
    • RemoteContacts: retrieve
    • RemoteContacts: retrieve self
    • RemoteContacts: update
    • RemoteEvent: Öffentliche Events Anzeigen
    • RemoteEvent: Alle Events Anzeigen
    • RemoteEventRegistration: Anmeldung
    • RemoteEventRegistration: Anmeldung bearbeiten
    • RemoteEventRegistration: Anmeldung stornieren
  • Ein Benutzerkonto anlegen, diesem die Rolle zuweisen
  • Den mit dem Benutzerkonto verknüpften Kontakt in CiviCRM finden, diesem einen sicheren API zuweisen. Dies geht momentan entweder über den API-Explorer, auf Datenbankebene oder die API Key Erweiterung

CMRF konfigurieren

Exkurs: Ein Drupal-Theme nutzen / anpassen

Die Darstellung der Formulare in Drupal hängt maßgeblich vom eingesetzten Theme ab worauf wir hier natürlich nicht eingehen können. Durch das Theme kann das Erscheinungsbild etc. komplett angepasst werden, wir nutzen häufig ein Bootstrap-basiertes Theme.

Xtended Contact Matcher (XCM)

Diese Erweiterung nutzen wir um zu konfigurieren, wie bei Anmeldungen Kontakte gematcht werden und bei Datenkonflikten verfahren werden soll.
Nach der Installation kann man unter https://deinecivicrmurl.org/civicrm/admin/setting/xcm?reset=1 beliebig viele Profile anlegen und diese später zum Matchen benutzen. Eine umfassende Dokumentation der Extension befindet sich hier - im Screnshot eine Beispielkonfiguration der wichtigsten Einstellungen. Konfiguriert Euch mindestens das Default-Profil und/oder legt weitere an.

Event Communication

Mit dieser Erweiterung kann man pro Veranstaltung verschiedene Nachrichtenvorlagen definieren, die auf der Grundlage von Bedingungen (einschließlich des Teilnehmerstatus, der Rolle und der bevorzugten Sprache) dann versendet werden. Es ist auch möglich, die regulär von CiviCRM versendeten E-Mails zu unterdrücken und personalisierte Dateien anzuhängen. Man kann zudem auch aus einer Suche nach Teilnehmenden heraus E-Mails versenden und dabei einige Spezialtoken nutzen, die von dieser Erweiterung bereitgestellt werden. Die Dokumentation befindet sich hier

Konfiguration

Nach der Installation sollte kann man sich unter https://deinecivicrmurl.org/civicrm/eventmessages/tokenlist als erstes einmal ansehen, welche Token jetzt in Event-E-Mails genutzt werden können.

Dann legen wir uns mindestens eine Nachrichtenvorlage an (https://deinecivicrmurl.org/civicrm/admin/messageTemplates?reset=1), z.B. für eine Anmeldebestätigung mit Links zum nachträglichen Ändern oder stornieren der Teilnahme. Diese könnten dann bspw. so aussehen:

{contact.email_greeting},
vielen Dank für Ihre Anmeldung zur Veranstaltung „{$event.title}“ mit Beginn {$event.start_date|crmDate}. Im Anhang finden Sie Ihre Eintrittskarte, die Sie uns beim Checkin gerne digital oder ausgedruckt vorlegen können.
Im Folgenden finden Sie Ihre gewählten Workshops, das Gesamtprogramm finden Sie hier (Link).
{$participant_sessions_list_html}
Bis zu {$event.selfcancelxfer_time} Stunden vor Beginn der Veranstaltung können Sie die Details Ihrer Anmeldung hier (ÄNDERUNGSLINK) ändern. Falls Sie Ihre Anmeldung stornieren müssen, können Sie dies ebenfalls bis zu {$event.selfcancelxfer_time} Stunden vor Beginn der Veranstaltung hier tun (STORNOLINK).
Der Veranstaltungsort ist xxx, der Checkin ist ab 9:00 Uhr.
Herzliche Grüße
Das Team von SYSTOPIA

Die Token für den Änderungslink ({$update_link}) sowie den Stornolink ({$cancellation_link}) können an beliebiger Stelle im Text hinterlegt werden, bspw. wie im Screenshot.
Änderungslink_einfügen

Anschließend navigiert man zum gewünschten Event in den Reiter „Kommunikation“ und definiert mindestens eine Regel, bspw. wie die im folgenden Screenshot (zu den Anhängen kommen wir später noch).

I.d.R. sollte man „Standard E-Mails unterdrücken“ anwählen und „Alle zutreffenden Regeln Ausführen?“ NICHT anwählen, da sonst ggf. mehrere E-Mails pro Aktion versendet werden.

Nach der Konfiguration einer oder mehrerer Regeln verschickt CiviCRM dann E-Mails bei Erfüllung der entsprechenden Bedingungen, im Beispiel also immer wenn eine Anmeldung mit der Rolle „Teilnehmer:in“ in den Status „bestätigt“ gesetzt wird.

Man kann sich je nach Bedarf natürlich noch eine Menge weiterer sinnvoller Regeln definieren, z.B.:

  • Anmeldung wird in Status „Warteliste“ versetzt: Wartelistenhinweis
  • Anmeldung wird vom „Warteliste“ in „Bestätigt“ versetzt: „Herzlichen Glückwunsch, Sie sind nachgerückt“
  • Anmeldung für Rolle Dozentin wird in Status „Bestätigt“ versetzt: Spezielle Nachricht für Dozentinnen
  • Anmeldung wird in Status „Teilgenommen“ versetzt: „Herzliche Willkommen zur Veranstaltung XY“
  • Filterung auf Sprache des Kontakts: E-Mails in korrekter Sprache geht raus…

Mail Attachments

Diese Hilfserweiterung ermöglicht das Anhängen personalisierter Dokumente für verschiedene E-Mail-Features, inkl. der Erweiterung „Event Communication“. Konkret ist es nach der Installation möglich, an E-Mails Dokumente anzuhängen, die widerum Token enthalten.

In unserem Beispiel der Anmeldebestätigung haben wir eine Nachrichtenvorlage „Eintrittskarte“ ausgewählt. Diese Eintrittskartenvorlage enthält Token für den Kontakt und den QR-Code der von der Erweiterung „Event-Checkin“ generiert wird.Dieser kann bspw. so in den Quelltext eingebunden werden:
<img alt="Check-In" src="{$event_checkin_code_data}" style="width: 100px; height: 100px;" />

Da es in CiviCRM etwas schwierig sein kann HTML so zu formatieren, dass es als PDF gut aussieht hier noch der Hinweis, dass man mit Hilfe von CiviOffice auch Word- oder Libreofficevorlagen nutzen und diese an die E-Mails anhängen kann.

Ein weiteres Anwendungsbesipiel ist das Erzeugen von Teilnahmezertifikaten, die dann mit einer Event Communication Regel (bspw. beim Versetzen in einen Status „Zertifiziert“) auch automatisch versendet werden können).

Habt Ihr alles richtig gemacht ist nun mit diesen beiden Erweiterungen auch schon ein automatisierter Kommunikationsworkflow am Start ^^

Event-Checkin

So toll wie unser Event ist erwarten wir mehrere hundert oder tausend Teilnehmende - diese wollen wir natürlich nicht alle per Hand einchecken und deren Status auf „teilgenommen“ setzen. Vielmehr wollen wir QR-Codes auf den automatisch versendeten Eintrittskarten scannen und uns und den Teilnehmenden so das Leben leichter machen - und zwar mit der Erweiterung „Event Checkin“.

Nach der Installation besuchen wir erst einmal die Einstellungsseite (https://deinecivicrmurl.org/civicrm/admin/eventcheckin/settings?reset=1) und nehmen ein paar grundlegende Einstellungen vor (Beispiel im Screenshot).

In unserer Konfiguration nutzen wir den Drupal Endpoint und tragen daher als URL https://deinedrupalumgebung.org/civiremote/event/checkin/{code} ein. Wenn das CiviCRM-native Formular genutzt werden soll lässt man das Feld einfach leer.

Danach legt man ein Benutzerinnenkonto an, das nur mit der Berechtigung zum Einchecken von Teilnehmenden ausgestattet ist (Check-in CiviCRM Event Participants). Alle Personen die bspw. per Handy dann die QR-Codes beim Event einscannen, müssen mit diesem Konto eingeloggt sein (oder einer anderen Rolle mit entsprechender Berechtigung).

Ziel davon ist, dass auch ohne Zugriff auf CiviCRM möglichst viele Teilnehmende eingecheckt werden können. Es sollte dennoch jemand vor Ort sein, der bei Bedarf umfassenderen Zugriff auf CiviCRM hat, bspw. um Details an der Anmeldung oder dem Kontakt ändern zu können.

Event Invitation

Nach der ganzen Arbeit wollt Ihr dann natürlich auch endlich Kontakte zu Eurem tollen Event einladen und dafür nutzt Ihr die Erweiterung „Event Invitation“.
Sie ermöglicht es Kontakte in CiviCRM zu einem Event einzuladen und bietet ein Feedback-Formular, in dem die Kontakte wählen können, ob sie teilnehmen oder nicht.
Auch bei dieser Erweiterung gibt es eine Einstellungsseite unter https://deinecivicrmurl.org/civicrm/eventinvitation/settings?reset=1. Hier muss man nur wie bei unserem Beispiel die URL des Drupal-Endpunktes hinterlegen (z.B. https://deinedurpalurl.org/civiremote/event/register/{token}. Ansonsten wird ein CiviCRM-Natives Formular genutzt, das allerdings noch recht rudimentär und grafisch wenig ansprechend ist.

Um nun Kontakte per E-Mail einzuladen legen wir mindestens eine Nachrichtenvorlage an die eine der folgenden Smarty-Variablen enthält:

  • {$qr_event_invite_code} - erzeugt einen eindeutigen Link zur Einladung via E-Mail
  • {$qr_event_invite_code_data} - generiert einen eindeutigen Link für den Teilnehmer, der als QR-Code dargestellt und als Bild HTML-formatiert werden kann (bei Einladung via Brief)

Wir nutzen einfach {$qr_event_invite_code} den wir an beliebiger Stelle im Text hinterlegen können (hierbei bei Protokoll „andere“ auswählen).

Jetzt sind wir bereit, Kontakte einzuladen und suchen selektieren diese zunächst über eine beliebige Kontaktsuche. Anschließend wählt man im Aktionsmenü die Option „Zu Veranstaltung einladen“. Es erscheint ein Dialog, in dem man folgendes auswählt:

  • die Veranstaltung, zu der Du die Kontakte einladen möchtest,
  • die zu verwendende Nachrichtenvorlage,
  • die Absenderadresse,
  • die Rolle, die den Teilnehmenden zugewiesen werden soll,
  • ob E-Mails versendet oder PDF-Dateien generiert werden sollen.

Nachdem man auf „Aktion bestätigen“ geklickt hat, wird für alle ausgewählten Kontakte eine Anmeldung mit dem Status „Eingeladen“ erstellt. Die Erweiterung erlaubt es nur, Kontakte einzuladen, die nicht bereits eine Anmeldung mit einer positiven Klasse für die betreffende Veranstaltung haben.

Klicken die eingeladenen Personen nun auf diesen Link gelangen sie zu einem personaliserten (vorausgefüllten) Formular. Nach dem Absenden wird die entsprechende Anmeldung auf den Status „Eingeladen“ oder „Abgesagt“ aktualisiert, je nachdem, was ausgewählt wird.

Natürlich werden auch hierbei automatische E-Mails verschickt, falls diese konfiguriert sind.

Bonus: Workshops / Sessions in einem Event konfigurieren

Wer bis hier gelesen hat ist offensichtlich schwer abzuschrecken - daher noch ein kleines Bonusfeature: RemoteEvents ermöglicht es auch bei einer Veranstaltung Workshops o.ä. („Sessions“) anzulegen. Das geht im Reiter „Workshops“ - pro Session/Workshop kann man die maximale Teilnehmendenzahl, Kategorie, Slot, Start- und Endzeit, eine Beschreibung und mehr anlegen.


Die Sessions werden dann im Anmeldeformular strukturiert/gruppiert angezeigt und können bei der Anmeldung ausgewählt werden (so lange Sie noch nicht voll belegt sind). Die gewählten Sessions können auch als Liste in Bestätigungs E-Mails ausgegeben werden und zwar mit Hilfe von „{$participant_sessions_list_html}“.

Dieses Feature funktioniert zwar schon, muss aber je nach Szenario und Anspruch ggf. noch etwas unter der Haube angepasst werden. Zum Beispiel gibt es derzeit via Benutzer*innenoberfläche keine Möglichkeit zu beeinflussen, welche Workshopinformationen ausgespielt wetrden.

Fazit

Zugegeben, alles hier beschriebene umzusetzen ist schon recht anspruchsvoll und ohne Support eher was für CiviCRM-Freaks. Aber es zeigt auch was mit CiviCRM und Events alles geht und das ist noch lange nicht Ende der Fahnenstange!

Meldet Euch bei Fragen, Anmerkungen, Ergänzungen jederzeit gerne!

Anmerkung 14.7.2022: Heiko hat mich noch darauf hingewiesen, dass man die CiviCRM Core Erweiterung „AuthX“ aktiviert haben muss, wenn man die URL wie im Screenshot der CMRF-Konfiguration gezeigt nutzen möchte. Vielen Dank, ich habe das ergänzt.

Ergänzung 8.11.2022: Der Identity Tracker ist eine Erweiterung um beliebig viele verschiedene ID’s von Kontakten in CiviCRM nachhalten zu können. Da er eine Abhängigkeit von RemoteTools ist, wird er ebenfalls benötigt - ich habe den Link hinzugefügt. Eine Konfiguration ist bei unserem Beispiel nicht erforderlich.

7 „Gefällt mir“

Und noch ein Bonus: Inzwischen gibt es mit der Erweiterung remoteeventformeditor das passende Tool, um viele Eigenschaften von Remote-Anmeldeformularen per Konfiguration anzupassen. Vielen Dank an die Evangelische Kirche im Rheinland für eine Teilfinanzierung des Projekts. Von neuen Anwender*innen werden weitere Finanzierungsbeiträge erbeten, da eben ein großer Teil des Entwicklungsaufwands nicht gedeckt ist. Vielen Dank!

1 „Gefällt mir“