Zum Inhalt springen
Developer

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_IDENTIFIER und EVENT_NAME (oder Kurs-ID und Kursname), in dieser Reihenfolge.
  • Dateiname: Er muss .csv enthalten. Gut passen Namen wie Angebote_Herbst.csv.
  • Datum: 06.01.2026 oder 2026-01-06. Uhrzeit: 19:00 oder 19.00. Preis: 12,00 oder 12.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

  1. Öffnet Einstellungen → Import.
  2. Klickt auf Hinzufügen und wählt die Datei aus.
  3. Prüft das Protokoll. Achtet besonders auf Warning: bei Trainern und auf Error: bei Zeilen.
  4. 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 Sichtbarkeit der Wert Sparte oder Schule und 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>-PREIS an und aktualisiert es bei jedem Import. Der Preis 0 erzeugt 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_PREFIX setzt ihr vor jede Kurs-ID einen festen Vorsatz, zum Beispiel AG-. Der Wert dieser Spalte steht dann vor der Kurs-ID, und die Kennung im System lautet AG- 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 Beispiel FB|~|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