Angebote und Kurse
Kurse, Workshops und Programme mit Zeiten, Ort, Trainer, Teilnehmerzahl und Preis anlegen oder aktualisieren.
- Format
- CSV (Semikolon oder Komma)
- Rechte
- Schreibrecht Veranstaltungen
- Beispieldateien
- Angebote_beispiel_technisch.csv (technische Spaltennamen)
Angebote_beispiel_anwender.csv (deutsche Spaltennamen)
Kurz gesagt: Ihr tragt jedes Angebot mit einer eigenen Nummer in eine Tabelle ein. vynst legt die Angebote an oder aktualisiert sie, anhand dieser Nummer. Auf Wunsch erzeugt vynst gleich die Termine und den Preis.
Wofür ihr das braucht
Angebote sind alles, was Mitglieder buchen können, zum Beispiel Kurse, Workshops oder Programme. Mit diesem Import übernehmt ihr viele Angebote auf einmal aus einer Tabelle.
Bevor ihr startet
- Ihr braucht das Recht Importe (Menüpunkt Import) und das Schreibrecht für Veranstaltungen.
- Ein Administratorrecht ist für diesen Import nicht nötig.
- Importiert vorher, falls vorhanden: Orte, Räume und Objekte und die Sparten. Die Nummern aus diesen Tabellen verwendet ihr in den Spalten Ort, Raum und Sparte.
- Die Trainer müssen als Personen in vynst vorhanden sein. Ihr könnt sie über die Personennummer, die Mitgliedsnummer, die E-Mail-Adresse oder eine Telefonnummer im Format
+49 …angeben. - Ein Preis legt ein Produkt mit dem Namen des Angebots an. Dafür muss der Produkttyp für feste Preise in vynst eingerichtet sein. Fehlt er, steht eine Meldung im Protokoll.
Datei vorbereiten
- Format: CSV mit Semikolon
;oder Komma,als Trennzeichen. Excel-Dateien gehen auch. - Kopfzeile: Die erste Zeile enthält die Spaltennamen. Die ersten beiden Spalten sind
EVENT_IDENTIFIERundEVENT_NAME(oderKurs-IDundKursname), in dieser Reihenfolge. - Dateiname: Er muss
.csventhalten. Gut passen Namen wieAngebote_Herbst.csv. - Datum:
06.01.2026oder2026-01-06. Uhrzeit:19:00oder19.00. Preis:12,00oder12.00.
Spalten
| Spalte | Pflicht | Inhalt | Beispiel |
|---|---|---|---|
Kurs-ID (auch EVENT_IDENTIFIER, Veranstaltungs-ID, AG-Nummer, Event ID) |
ja | eure Nummer des Angebots | K-YOGA |
Kursname (auch EVENT_NAME, Veranstaltungsname, AG-Name) |
ja | Name des Angebots | Yoga am Abend |
Veranstaltungsart (auch EVENT_TYPE, Veranstaltungstyp) |
Art des Angebots, zum Beispiel Programm, Kurs, Workshop, Info oder Camp |
Kurs |
|
Wochentag (auch BOOKING_DAY_OF_WEEK) |
Wochentag des Angebots, zum Beispiel Montag |
Montag |
|
Uhrzeit Start (auch BOOKING_HOUR_START, Startzeit) |
Uhrzeit des Beginns | 19:00 |
|
Uhrzeit Ende (auch BOOKING_HOUR_END, Endzeit) |
Uhrzeit des Endes | 20:30 |
|
Beginn (auch START_DATE, Startdatum) |
erster Tag des Angebots | 06.01.2026 |
|
Ende (auch END_DATE, Enddatum) |
letzter Tag des Angebots | 30.06.2026 |
|
Termine generieren (auch GENERATE_BOOKING) |
ja, damit vynst die Termine erzeugt. Dafür braucht es Uhrzeiten oder vorhandene Termine. |
ja |
|
Max. Teilnehmer (auch MAX_PEOPLE_LIMIT, Teilnehmeranzahl) |
größte Teilnehmerzahl | 15 |
|
Mindestteilnehmerzahl (auch MIN_PEOPLE_LIMIT) |
kleinste Teilnehmerzahl | 5 |
|
Warteliste (auch HAS_WAITLIST) |
ja oder nein |
ja |
|
Altersklasse (auch AGE_RANGE, Altersbereich) |
Freitext wie 6-18 Monate oder 3-4 Jahre. Setzt die Altersgrenzen. |
6-12 Jahre |
|
Altersgruppe (auch AGE_GROUP) |
zum Beispiel Alle oder Kinder & Jugendliche |
Alle |
|
Trainer (auch MAIN_CONTACT_IDENTIFIER, Betreuungskraft, Hauptansprechpartner) |
Personennummer, Mitgliedsnummer, E-Mail oder Telefonnummer +49 …. Mehrere Trainer mit Komma trennen: erster Trainer, zweiter Co-Trainer, danach weitere Verantwortliche. |
max.mustermann@example.org |
|
Co-Trainer (auch SECONDARY_CONTACT_IDENTIFIER, Zweitansprechpartner) |
zweiter Trainer, wenn ihr ihn in einer eigenen Spalte angebt. Eine leere Zelle entfernt den Co-Trainer. | sabine.berger@example.org |
|
Sparte (auch UNIFIED_CATEGORY_IDENTIFIER, Sparten-ID, Kategorie-ID) |
Sparten des Angebots, mehrere mit |~| getrennt |
FB |
|
Standort-ID (auch LOCATION_IDENTIFIER, Orts-Nummer) |
Standort aus dem Import Orte | HALLE1 |
|
Raumnummer (auch BOOKABLE_IDENTIFIER, OBJECT_IDENTIFIER) |
Raum aus dem Import Räume und Objekte | R1 |
|
Zusatzraum-Nummer (auch SECONDARY_BASE_BOOKABLE_IDENTIFIER) |
zweiter Raum aus dem Import Räume und Objekte | R2 |
|
Beschreibung (auch EXTERNAL_DESCRIPTION) |
Beschreibung für Mitglieder | Ruhiger Einstieg in die Woche |
|
Interne Beschreibung (auch INTERNAL_DESCRIPTION) |
Notiz nur für euch | Matten im Geräteraum |
|
Bild URL (auch IMAGE_URL, Bild) |
Adresse des Bildes oder Nummer der Mediendatei | https://www.example.org/bilder/yoga.jpg |
|
COLOR |
Farbe der Kachel als Hex-Wert mit # oder als Name einer Farbe aus vynst. Ohne Angabe gilt die Standardfarbe. |
#2E7D32 |
|
Sichtbarkeit |
Wer das Angebot sieht: öffentlich, Mit Token, Mit Login, Ausgewählte Nutzer / Tags, Sparte oder Schule |
öffentlich |
|
Anmeldung möglich für (auch Anmeldung für, Selbstanmeldung) |
Wer sich anmelden darf, zum Beispiel öffentlich oder Sparte |
öffentlich |
|
Kontaktdaten erforderlich (auch REQUIRE_CONTACT) |
ja, wenn Mitglieder ihre Kontaktdaten angeben müssen |
nein |
|
Adressdaten erforderlich (auch REQUIRE_ADDRESS) |
ja, wenn Mitglieder ihre Adresse angeben müssen |
nein |
|
Rechnungsdaten erforderlich (auch REQUIRE_BILLING) |
ja, wenn Mitglieder Rechnungsdaten angeben müssen |
nein |
|
Alter erforderlich (auch REQUIRE_AGE) |
ja, wenn das Alter angegeben werden muss |
nein |
|
Anmeldung für alle Termine (auch CAN_SIGN_UP_MAIN_EVENT) |
ja, damit sich Mitglieder für alle Termine zugleich anmelden können |
nein |
|
Ausschließlich Anmeldung für alle Termine (auch ONLY_SIGN_UP_MAIN_EVENT) |
ja, damit nur die Anmeldung für alle Termine möglich ist |
nein |
|
Personen in Termin kopieren (auch COPY_MAIN_SIGNUPS_TO_BOOKING) |
ja, damit angemeldete Personen in die Termine übernommen werden |
nein |
|
Anmeldestart (Tage vorher) (auch SIGN_UP_LIMIT_DAYS_BEFORE) |
Anzahl der Tage vor dem Termin, ab denen die Anmeldung offen ist | 60 |
|
Anmeldeschluss (Tage vorher) (auch SIGN_UP_LIMIT_STOP_DAYS_BEFORE) |
Anzahl der Tage vor dem Termin, bis zu denen man sich anmelden kann | 1 |
|
Ticket erstellen (auch CREATE_TICKET) |
ja, damit bei der Anmeldung ein Ticket angelegt wird |
nein |
|
Preis je Anmeldung (€) (auch Preis je Anmeldung) |
Preis pro Anmeldung. 0 bedeutet kostenlos, eine leere Zelle lässt den Preis unverändert. Die Spalte braucht den Produkttyp für feste Preise in vynst. |
12,00 |
|
VISIBILITY_ACCESS_TAGS |
Zugriffs-Tags, mehrere mit |~| getrennt. Ist die Spalte vorhanden, ersetzt sie die bisherigen Rechte. |
Weitere Spalten sind möglich, zum Beispiel Mindestalter, Höchstalter, Mindest-Klassenstufe und Maximal-Klassenstufe. Mindest- und Höchstalter haben Vorrang vor der Altersklasse.
Beispiel
EVENT_IDENTIFIER;EVENT_NAME;EVENT_TYPE;BOOKING_DAY_OF_WEEK;BOOKING_HOUR_START;BOOKING_HOUR_END;START_DATE;END_DATE;GENERATE_BOOKING;MAX_PEOPLE_LIMIT;MIN_PEOPLE_LIMIT;HAS_WAITLIST;AGE_RANGE;AGE_GROUP;MAIN_CONTACT_IDENTIFIER;SECONDARY_CONTACT_IDENTIFIER;UNIFIED_CATEGORY_IDENTIFIER;LOCATION_IDENTIFIER;BOOKABLE_IDENTIFIER;SECONDARY_BASE_BOOKABLE_IDENTIFIER;EXTERNAL_DESCRIPTION;INTERNAL_DESCRIPTION;IMAGE_URL;COLOR;VISIBILITY_TYPE;SELF_SERVICE_VISIBILITY_TYPE;REQUIRE_CONTACT;REQUIRE_ADDRESS;REQUIRE_BILLING;REQUIRE_AGE;CAN_SIGN_UP_MAIN_EVENT;ONLY_SIGN_UP_MAIN_EVENT;COPY_MAIN_SIGNUPS_TO_BOOKING;SIGN_UP_LIMIT_DAYS_BEFORE;SIGN_UP_LIMIT_STOP_DAYS_BEFORE;CREATE_TICKET
K-YOGA;Yoga am Abend;COURSE;Montag;19:00;20:30;06.01.2026;30.06.2026;ja;15;5;ja;6-12 Jahre;Alle;max.mustermann@example.org;sabine.berger@example.org;FB;HALLE1;R1;R2;Ruhiger Einstieg in die Woche;Matten im Geräteraum;https://www.example.org/bilder/yoga.jpg;#2E7D32;public;public;nein;nein;nein;nein;nein;nein;nein;60;1;nein
K-TURNEN;Turnen für Kinder;COURSE;Dienstag;16:00;17:00;06.01.2026;30.06.2026;ja;12;4;nein;6-10 Jahre;Kinder & Jugendliche;max.mustermann@example.org;;TUR;HALLE1;R2;;Spielerisches Turnen für Kinder;Kinderturnmatten im Geräteraum;https://www.example.org/bilder/turnen.jpg;#F9A825;public;public;nein;nein;nein;nein;nein;nein;nein;60;1;nein
Beispieldateien: Angebote_beispiel_technisch.csv mit den technischen Spaltennamen, Angebote_beispiel_anwender.csv mit den deutschen Spaltennamen.
Das Angebot K-YOGA findet montags um 19:00 Uhr im Raum R1 statt. Der Trainer und der Co-Trainer sind über ihre E-Mail-Adressen zugeordnet. Das Angebot K-TURNEN nutzt den Raum R2 und die Sparte TUR. Weil Termine generieren auf ja steht, erzeugt vynst für beide Angebote Termine. Die Spalte Preis je Anmeldung (€) fehlt in der Beispieldatei, deshalb wird kein Produkt angelegt. Die Anwender-Datei enthält dieselben Angebote mit den deutschen Spaltennamen. Weil die Kurs-IDs gleich bleiben, aktualisiert der zweite Import die Angebote.
So geht’s
- Öffnet Einstellungen → Import.
- Klickt auf Hinzufügen und wählt die Datei aus.
- Prüft das Protokoll. Achtet besonders auf
Warning:bei Trainern und aufError:bei Zeilen. - Die Termine entstehen nach dem Import nach und nach im Hintergrund. Ihr müsst nichts anstoßen.
Gut zu wissen
- Gibt es die Kurs-ID schon, wird das Angebot aktualisiert. Eine neue Kurs-ID legt ein neues Angebot an. Angebote werden durch diesen Import nie gelöscht.
- Eine Zelle ohne Inhalt lässt viele Werte unverändert, bei Textfeldern aber löscht sie den alten Text. Ist eine Spalte in der Datei vorhanden, gilt das auch für den Trainer: Eine leere Trainer-Zelle entfernt den Trainer.
- Sichtbarkeit über Sparten: Steht bei
Sichtbarkeitder WertSparteoderSchuleund gibt es keine Spalte für Zugriffs-Tags, übernimmt das Angebot die Zugriffs-Tags seiner Sparten. Die bisherigen Rechte des Angebots werden dann ersetzt. - Termine: Die Termine werden nicht sofort erzeugt. Jede Zeile startet den Lauf eine Minute später als die vorige.
- Preis: vynst legt ein Produkt mit der Kennung
<Kurs-ID>-PREISan und aktualisiert es bei jedem Import. Der Preis0erzeugt ein kostenloses Produkt, damit die Anmeldung trotzdem möglich bleibt. - Kennung: Eine reine Zahl als Kurs-ID sucht vynst zuerst als interne Nummer. Trefft ihr dabei ein anderes Angebot, ändert ihr es. Mit einer Spalte
IMPORT_IDENTIFIER_PREFIXsetzt ihr vor jede Kurs-ID einen festen Vorsatz, zum BeispielAG-. Der Wert dieser Spalte steht dann vor der Kurs-ID, und die Kennung im System lautetAG-plus eurer Nummer. - Zeilen: Komplett leere Zeilen (oft Reste aus Excel) werden ohne Meldung ignoriert. Eine Zeile mit Beschreibung, aber ohne Kurs-ID oder Namen, ist ein Fehler.
- Mehrere Sparten trennt ihr mit
|~|(senkrechter Strich, Tilde, senkrechter Strich), zum BeispielFB|~|TUR.
Wenn etwas nicht klappt
| Meldung im Protokoll | Bedeutung | Was tun |
|---|---|---|
Error: skipped missing event identifier |
Kurs-ID oder Name fehlt. Darunter steht die Zeile als LINE-DATA. |
Die Zeile ergänzen und nur diese Zeile erneut importieren. |
Error: skipped empty line |
Eine leere Zeile wurde übersprungen. | Nichts. |
Info: K-YOGA - Trainer über Personennummer/ID zugeordnet: 2001 |
Der Trainer wurde gefunden. | Nichts. |
Warning: K-YOGA - Trainer nicht zugeordnet: keine Person mit Personennummer, ID, E-Mail oder Telefonnummer (Format +49 ...) "…" |
Der Trainer wurde nicht gefunden, das Angebot wird ohne ihn angelegt. | Den Wert in der Datei prüfen oder die Person in vynst anlegen. |
Warning: K-YOGA - Trainer nicht zugeordnet: mehrere Personen mit E-Mail "…" |
Die E-Mail gehört zu mehreren Personen. | Die Personennummer statt der E-Mail angeben. |
Error: K-YOGA - Preis nicht importiert, Produkttyp "event-fixed" fehlt |
Der Produkttyp für feste Preise fehlt in vynst. Das Angebot ist trotzdem angelegt. | Den Administrator bitten, den Produkttyp einzurichten, und den Import danach wiederholen. |
Read: 12 rows |
So viele Zeilen wurden gelesen. | Nichts. |
Error: less then one line |
Die Datei enthält keine Datenzeile. | Prüft, ob die Datei vollständig ist. |
FAILED: No matching processor found. |
Dateiname oder Kopfzeile passen zu keinem Import. | Die ersten beiden Spalten und den Dateinamen prüfen. |
Siehe auch
- Orte
- Räume und Objekte
- Termine und Zeitpläne
- Einladungen
- Import-Überblick
- Technische Dokumentation