Dokumentation · Handbücher
red.Shop — Handbuch
Einrichten, Artikel pflegen, Bestellungen bearbeiten — die Bedienung des Shops.
Für Betreiber · Stand 05.10.2026
red.Shop ist noch nicht lieferbar. Dieses Handbuch beschreibt den Stand der Entwicklung — es steht hier, damit sich vorher beurteilen lässt, was das System kann.
Dieses Handbuch richtet sich an den Betreiber eines Shops: an den, der ihn einrichtet, Artikel pflegt und Bestellungen bearbeitet. Es beantwortet „wie mache ich das".
Wer wissen will, warum etwas so gebaut ist — für Entwicklung, Plugins und eigene Themes —, findet das an anderer Stelle:
| Frage | Wo |
|---|---|
| Warum ist das so gebaut? | docs/architektur.md |
| Wie schreibe ich ein Plugin? | docs/plugins.md |
| Wie baue ich ein eigenes Theme? | docs/themes.md |
| Wie spreche ich den Shop von außen an? | docs/api.md |
| Was bedeutet eine Versionsnummer? | docs/versionierung.md |
Beides zu vermischen ergäbe ein Dokument, das keine der beiden Fragen beantwortet.
Was Sie mitbringen müssen #
Kein Fachwissen über Server. Wenn Sie eine Datei per FTP hochladen und im Kundenmenü Ihres Hosters eine Datenbank anlegen können, reicht das — für alles Weitere gibt es einen Weg im Browser.
Wo es einen zweiten Weg über die Konsole gibt, steht er dabei. Er ist nie Voraussetzung, sondern immer nur schneller.
Ein Hinweis zu Rechtstexten #
An mehreren Stellen nennt dieses Handbuch Paragraphen. Das ist kein Rechtsrat und ersetzt keinen: Es sagt Ihnen, welche Angabe der Shop von Ihnen braucht und warum — nicht, wie Ihre AGB zu formulieren sind.
1. Den Shop einrichten #
1.1 Was der Server können muss
Fragen Sie im Zweifel Ihren Hoster nach dieser Liste — der Installer prüft sie ohnehin selbst und sagt Ihnen, was fehlt:
- PHP 8.3.0 oder neuer
- PHP-Erweiterung pdo (Datenbankzugriff)
- PHP-Erweiterung pdo_mysql (MariaDB oder MySQL)
- PHP-Erweiterung mbstring (Umlaute und Zeichenketten)
- PHP-Erweiterung openssl (Verschlüsselung)
- PHP-Erweiterung json (Datenaustausch)
- PHP-Erweiterung gd (Bildbearbeitung)
- PHP-Erweiterung bcmath (Beträge ohne Rundungsfehler)
- PHP-Erweiterung fileinfo (Dateitypen beim Hochladen)
- PHP-Erweiterung intl (Formate)
- Schreibrecht auf storage
- Schreibrecht auf bootstrap/cache
- Datenbankverbindung
Dazu ein Schreibrecht auf die Datei .env im Hauptverzeichnis: Dort landen
die Zugangsdaten der Datenbank.
1.2 Der Weg im Browser
-
Dateien hochladen und eine Datenbank im Kundenmenü Ihres Hosters anlegen. Notieren Sie sich Name, Benutzer und Kennwort.
-
Adresse des Shops aufrufen. Sie landen von selbst bei der Einrichtung — egal, welche Seite Sie aufrufen.
-
Nachweis. Der Shop legt eine Datei
storage/redshop-installer.txtan und fragt nach ihrem Inhalt. Öffnen Sie sie per FTP und tippen Sie die acht Zeichen ab.Das ist keine Schikane: Zwischen „hochgeladen" und „eingerichtet" steht unter Ihrer Adresse ein Installer, der eine Datenbank verbindet und einen Administrator anlegt. Wer ihn in dieser Zeit findet, bekommt Ihren Shop — und Scanner finden neue Adressen in Minuten.
-
Voraussetzungen. Was rot ist, muss Ihr Hoster einrichten. Danach die Seite neu laden.
-
Datenbank. Die Angaben aus Schritt 1. Sie werden geprüft, bevor sie gespeichert werden. Der Schritt legt danach die Tabellen an und kann eine Minute dauern — bitte nicht abbrechen.
-
Shop. Name, Adresse, Sprache, Währung. Darunter die Betreiberdaten für das Impressum; die können Sie auch später im Backend nachtragen.
-
Zugang. Ihr Zugang zum Backend. Er bekommt alle Rechte.
-
Fertig. Sie sehen, was für einen rechtmäßigen Betrieb noch fehlt (siehe Kapitel 2). Die Nachweisdatei verschwindet, und der Installer ist zu.
Wenn Sie mittendrin abbrechen: Rufen Sie die Adresse einfach wieder auf —
es geht dort weiter, wo Sie stehen geblieben sind. Wollen Sie den Installer
loswerden, löschen Sie storage/redshop-installer.txt; danach ist er zu.
1.3 Derselbe Weg ohne Browser
php artisan redshop:install
Der Befehl fragt dasselbe. Für wiederholte Installationen gibt es eine
Antwortdatei — eine Vorlage liegt als install.example.yml bei:
php artisan redshop:install --from=install.yml --no-interaction
Damit steht Ihr Kennwort nicht in der Prozessliste des Servers, wo jeder Benutzer es lesen kann.
Ein zweiter Lauf auf einer fertigen Installation ändert nichts: Er legt keinen zweiten Zugang an und setzt keine Einstellung zurück.
1.4 Wo was steht
Die Navigation ist nach Häufigkeit geordnet, nicht nach Fachgebiet:
| Oben | Was dort liegt |
|---|---|
| Verkauf | Bestellungen, Kunden, Bewertungen, Umsatz, Aktionen |
| Katalog | Artikel, Kategorien, Medien, Import und Export |
| Inhalte | Seiten, Rechtstexte, Mailvorlagen, Meldungen |
| Stammdaten | Hersteller, Warengruppen, Eigenschaften, Lager, Kundengruppen, Steuersätze, Lieferzeiten, Maßeinheiten |
Alles, was einmal eingerichtet und dann vergessen wird, steht ganz unten unter System → Einrichtung: Einstellungen, Zahlarten, Versandarten, Zugänge und Rollen, Themes, Schnittstellen, Plugins und Updates. Die Seite beginnt mit einer Übersicht nach Themen — wer weiß, wohin er will, klickt oben auf den Reiter; wer es nicht weiß, liest die Kacheln.
Wenn Sie noch ein Lesezeichen auf eine alte Adresse haben: Es funktioniert. Der Shop leitet weiter.
1.5 Stammdaten: was Sie selbst anlegen können
Vier Listen unter Stammdaten brauchen Sie früher, als Sie denken:
| Wo | Wofür |
|---|---|
| Kundengruppen | Eine Gruppe für Geschäftskunden, die Nettopreise sieht |
| Steuersätze | Ein ermäßigter Satz — oder eine Änderung des Regelsatzes |
| Maßeinheiten | „Liter", „Kilogramm" — nötig für den Grundpreis am Artikel |
| Lieferzeiten | „10–14 Werktage", wie es am Artikel stehen soll |
Bei den Kundengruppen ist genau eine die Vorgabe: Ihre Preise sieht, wer nicht angemeldet ist. Setzen Sie das Häkchen bei einer anderen, wandert es dorthin — zwei Vorgaben kann es nicht geben.
1.6 Die Grundlagen: Währung, Sprache, Land, Nummernkreis
Unter System → Einrichtung → Grundlagen stehen die Angaben, die Sie einmal setzen und danach selten anfassen. Drei Hinweise, die Ärger ersparen:
- Der Umrechnungsfaktor einer Währung verschiebt Preise. Er ist keine Anzeigeoption: Ein Artikel für 100 € steht bei Faktor 0,95 mit 95 CHF im Regal. Bereits geschriebene Rechnungen bleiben unberührt.
- Am Land hängt die Steuer. In der EU, steuerfrei und USt-IdNr. verlangt entscheiden, ob und wie Umsatzsteuer berechnet wird — nicht, was angezeigt wird. Den Satz für ein einzelnes Land tragen Sie beim Steuersatz unter Länderregeln ein (das ist der One-Stop-Shop).
- Eine zweite Sprache fällt auf die erste zurück. Tragen Sie bei „Fällt zurück auf" die Hauptsprache ein — dann pflegen Sie nur, was wirklich abweicht, statt jeden Artikel zweimal zu beschreiben.
Nummernkreise bestimmen, wie Ihre Bestell-, Kunden-, Rechnungs- und
Retourennummern aussehen. Im Muster steht {n} für die laufende Nummer,
{date} und {date_ymd} für das Datum — RE-{date_ymd}-{n} ergibt
RE-260817-1042.
Den Startwert können Sie nur nach oben setzen. Das ist Absicht: Darunter bekäme eine Nummer ein zweites Mal vergeben, und Belegnummern müssen nach GoBD eindeutig sein. Die Maske sagt Ihnen, welche zuletzt vergeben wurde. Nach oben ist der übliche Fall — Jahreswechsel oder Übernahme eines Standes aus Ihrem bisherigen System.
Neue Nummernkreise legen Sie nicht selbst an: Ein Kreis wird von der Stelle gezogen, die eine Nummer braucht, und die steht im Programm.
1.7 Wenn eine Warenwirtschaft angeschlossen ist
Dann liefert sie diese Listen — und Hersteller, Kategorien und Warengruppen dazu. Sie erkennen das an der Spalte Herkunft in der Liste und am Schloss an den betroffenen Feldern.
Gesperrte Felder ändern Sie dort, wo sie gepflegt werden. Eine Änderung im Shop wäre ohnehin verloren: Der nächste Abgleich stellt den alten Wert zurück. Aus demselben Grund lässt sich ein gelieferter Eintrag nicht löschen — er käme wieder, dann aber als neuer Eintrag, und alles, was daran hing, hinge daneben.
Was Ihnen bleibt: Sie dürfen weiterhin eigene Einträge anlegen — eine Kategorie für eine Aktionsseite, eine eigene Kundengruppe. Die tragen keine Herkunft und gehören Ihnen. Und an einem gelieferten Eintrag bleibt offen, was die Warenwirtschaft nicht führt: das Herstellerlogo und seine Website, die Sichtbarkeit und die SEO-Texte einer Kategorie, welche Kundengruppe Ihre Gäste sehen, die Reihenfolge in den Auswahllisten.
Auch die Bilder können von dort kommen. Dann ist die Bilderliste am Artikel gesperrt, und darüber steht, warum. Das ist kein Gängeln: Ein Bildabgleich ersetzt, was da ist — ein Bild, das Sie hier anhängen, wäre am nächsten Morgen wieder weg, ohne dass Ihnen jemand etwas gesagt hätte.
Endet der Anschluss, gehören die Daten wieder Ihnen. Es verschwindet nichts.
Löschen geht nur, solange nichts daran hängt. Steht an einem Steuersatz ein Artikel oder in einer Kundengruppe ein Kunde, ist der Knopf gesperrt und sagt Ihnen, wie viele es sind. Das ist kein Fehler: Ein gelöschter Steuersatz würde alte Rechnungen nachträglich verändern. Was Sie nicht mehr brauchen, schalten Sie ab — es verschwindet aus den Auswahllisten und bleibt auf alten Belegen lesbar.
2. Bevor Sie online gehen #
Ein Shop lässt sich technisch in fünf Minuten aufsetzen und ist dann abmahnfähig. Nichts von dem hier fällt beim Klicken auf — es fällt auf, wenn Post kommt.
Der Shop führt die Liste selbst: Einrichtung → Aufgaben. Jeder offene
Punkt zeigt auf die Maske, in der er sich erledigen lässt. Dasselbe von der
Konsole aus mit php artisan redshop:install --check.
| Punkt | Warum |
|---|---|
| Betreiberdaten | Name, Anschrift und Kontakt sind nach § 5 DDG Pflicht — leicht erkennbar, unmittelbar erreichbar, ständig verfügbar. Fehlen sie, ist das abmahnfähig. |
| Rechtstexte | Impressum, Datenschutzerklärung, Widerrufsbelehrung und AGB. Ohne Widerrufsbelehrung verlängert sich die Widerrufsfrist auf ein Jahr und vierzehn Tage (§ 356 Abs. 3 BGB). |
| Mindestens eine Zahlart | Ohne aktive Zahlart kommt keine Bestellung zustande. |
| Mindestens eine Versandart | Ohne Versandart lässt sich die Kasse nicht abschließen — und die Versandkosten sind nach PAngV anzugeben. |
| Adresse des Shops | Ohne Domain am Verkaufskanal weiß der Shop nicht, unter welcher Adresse er läuft — Links in Mails und die Sitemap zeigen dann ins Leere. |
| Bankverbindung | Steht auf der Rechnung und in der E-Rechnung. Ohne sie weiß ein Vorkassekunde nicht, wohin er überweisen soll. |
| Mailversand | Ohne funktionierenden Versand kommt keine Bestellbestätigung an — die ist nach § 312i BGB geschuldet. |
2.1 Was der Shop Ihnen nicht abnimmt
Er schreibt keine Rechtstexte. Der Shop weiß nicht, wie Ihr Betrieb heißt, was Sie versenden und zu welchen Bedingungen. Eine Muster-AGB wäre eine Rechtsberatung, die niemand geben darf, und ein vorausgefülltes „Versandkostenfrei ab 50 €" eine Werbeaussage, für die Sie haften.
Die Liste sagt Ihnen, was fehlt — nicht, was hineingehört.
2.2 Zwei Angaben, die oft vergessen werden
Die Bankverbindung. Sie steht auf der Rechnung und in der E-Rechnung. Ohne sie weiß ein Vorkassekunde nicht, wohin er überweisen soll — und wartet auf eine Mail, die nie kommt.
Der Mailversand. Ohne ihn geht keine Bestellbestätigung hinaus, und die ist nach § 312i BGB unverzüglich geschuldet. Unter Einrichtung → Einstellungen → Mails lässt sich der Versand einrichten und eine Testmail schicken. Tun Sie das, bevor die erste echte Bestellung kommt.
2.3 Zahlarten mit einem Dienstleister
Einrichtung → Bezahlen und Versenden. Rechnung und Vorkasse bringt der Shop mit; PayPal und andere kommen als Plugin dazu und stehen danach ohne Zutun in der Auswahl.
Für eine Anbindung brauchen Sie drei Dinge, und das dritte wird gern vergessen:
- Zugangsdaten vom Dienstleister (bei PayPal: Client-ID und Secret aus dem Entwicklerkonto). Sie werden verschlüsselt gespeichert.
- Testbetrieb einschalten, solange Sie ausprobieren. Die Zugangsdaten der Testumgebung sind andere als die des Betriebs — wer sie verwechselt, bekommt nur „Zugangsdaten abgewiesen".
- Die Adresse für Meldungen beim Dienstleister eintragen. Sie steht nach dem Speichern unter der Zahlart.
Zu Punkt 3, denn er entscheidet mehr, als er aussieht: Über diese Adresse meldet der Dienstleister von sich aus — Zahlungseingänge, die erst später freigegeben werden, Erstattungen, die Sie in seinem Portal ausgelöst haben, und zurückgeholtes Geld. Ohne sie erfährt der Shop nur das, was passiert, solange der Kunde im Browser wartet. Alles andere bleibt offen stehen, und Sie wundern sich über bezahlte Bestellungen, die als unbezahlt geführt werden.
Bei PayPal gehört zusätzlich die Webhook-ID in die Zahlart — ohne sie kann der Shop nicht prüfen, ob eine Meldung echt ist, und weist sie ab.
Dieselbe Anbindung darf zweimal eingerichtet sein. Zwei Konten, zwei Marken, Test neben Betrieb: Jede Zahlart trägt ihre eigenen Zugangsdaten und ihre eigene Meldeadresse.
Wenn ein Kunde bei der Zahlung abbricht, ist die Bestellung trotzdem aufgenommen — nur unbezahlt. Er bekommt auf der Abschlussseite einen Knopf, es erneut zu versuchen. Sie sehen solche Bestellungen in der Liste mit offener Zahlung.
Erstatten geht bei Verfahren, die es können, direkt an der Bestellung (Erstatten, ganz oder zum Teil). Der Beleg dazu ist die Gutschrift und entsteht getrennt — die beiden werden gern verwechselt: Das eine ist Geld, das andere ein Papier für die Buchhaltung.
2.4 Nachnahme und der Zuschlag einer Zahlart
Jede Zahlart kann einen Zuschlag tragen — einen festen Betrag oder einen Anteil vom Warenwert. Er erscheint im Warenkorb als eigene Zeile, zählt nicht in den Warenwert (verschiebt also keine Versandkostenfreigrenze und keinen Prozentrabatt) und steht auf der Rechnung als das, was er ist.
Der häufigste Fall ist die Nachnahme: Der Zusteller kassiert bei der Übergabe, und dafür berechnet er Ihnen eine Gebühr. Diese geben Sie hier weiter.
Aufgepasst, das ist der Teil, der Geld kosten kann. Für die Nutzung von SEPA-Lastschrift, SEPA-Überweisung und gängigen Karten dürfen Sie kein Entgelt verlangen (§ 270a BGB) — eine solche Vereinbarung ist unwirksam, und der Kunde bekommt das Geld zurück. Bei allen anderen Verfahren darf das Entgelt Ihre eigenen Kosten nicht übersteigen (§ 312a Abs. 4 BGB).
Die Nachnahmegebühr fällt nicht darunter: Sie ist das Entgelt des Zustellers für eine Dienstleistung und kein Entgelt für die Nutzung eines Zahlungsmittels.
Beim prozentualen Zuschlag sollten Sie einen Höchstbetrag setzen. Ohne ihn wächst die Gebühr mit dem Warenwert, Ihre Kosten tun das nicht — und genau dort greift § 312a Abs. 4 BGB.
Die zweite Nachnahmegebühr steht in keiner Ihrer Rechnungen: Der Zusteller kassiert beim Kunden zusätzlich ein Übergabeentgelt. Nennen Sie es im Beschreibungstext der Zahlart. Es muss vor der Bestellung bekannt sein (§ 312a Abs. 1 BGB), und der Kunde erfährt es sonst an der Haustür.
2.5 SEPA-Lastschrift
Der Shop zieht nicht selbst ein. Er sammelt, was fällig ist, und schreibt
eine Datei nach pain.008, die Sie in Ihrem Online-Banking einreichen:
php artisan redshop:sepa:export --probe # erst ansehen
php artisan redshop:sepa:export # dann schreiben
Ein automatischer Einzug bräuchte Ihre Bankschlüssel auf dem Server — also einen Rechner, von dem aus sich Ihr Konto leerräumen lässt. Das soll niemand nebenbei einrichten.
Was Sie einmalig brauchen (Zahlart anlegen, Verfahren „SEPA-Lastschrift"):
| Feld | Woher |
|---|---|
| Gläubiger-Identifikationsnummer | Deutsche Bundesbank, kostenlos beantragt |
| Name des Zahlungsempfängers | Wie er auf dem Kontoauszug des Kunden stehen soll |
| IBAN und BIC des Empfängerkontos | Ihr Geschäftskonto |
| Vorlauf der Ankündigung | Siehe unten |
Der Name auf dem Kontoauszug ist keine Formsache. Erkennt der Kunde ihn nicht wieder, gibt er die Lastschrift zurück — und die Rückgabe kostet Sie Gebühr und Ware.
Die Vorabankündigung geht automatisch heraus, sobald die Bestellung steht: mit Betrag, Fälligkeitstag, Ihrer Gläubiger-ID und der Mandatsreferenz. Sie ist Pflicht. Ohne sie ist die Lastschrift nicht autorisiert, und der Zahler bekommt sein Geld 13 Monate lang zurück, statt der sonst geltenden acht Wochen.
Das Regelwerk nennt 14 Tage Vorlauf. Kürzer geht — in der Praxis bis auf einen Tag —, wenn es in Ihren AGB oder im Mandatstext so vereinbart ist. Der Shop kann das nicht wissen; tragen Sie ein, was Sie vereinbart haben.
Das Mandat entsteht an der Kasse, wenn der Kunde IBAN, Kontoinhaber und seine Zustimmung angibt. Es gilt weiter, solange es benutzt wird — der Kunde muss seine Kontodaten nicht bei jeder Bestellung neu eintippen. Nach 36 Monaten ohne Nutzung verfällt es, und der Shop fragt von selbst wieder.
Ein Mandat wird nie gelöscht, auch wenn der Kunde es widerruft: Bei einer Rückgabe verlangt die Bank es als Nachweis, und ohne Nachweis zahlen Sie.
Die Bestellung gilt nicht als bezahlt, wenn die Lastschrift eingereicht ist. Das Geld kann acht Wochen lang ohne Angabe von Gründen zurückgeholt werden. Setzen Sie den Zahlungsstatus, wenn der Kontoauszug es sagt.
3. Der tägliche Betrieb #
3.1 Artikel anlegen
Katalog → Artikel → Neu. Pflicht sind Artikelnummer, Bezeichnung, Preis und Steuersatz. Alles andere darf leer bleiben.
Die Maske ist in Reiter geteilt, und die Reihenfolge ist die des Anlegens:
| Reiter | Was hineingehört |
|---|---|
| Allgemein | Nummer, Bezeichnung, Beschreibung, URL-Pfad |
| Preis | Brutto oder netto — welcher führt, entscheidet die Kundengruppe des Kanals. Dazu Grundpreis und Streichpreis |
| Bestand | Menge, Lieferzeit, ob nach dem Ausverkauf weiterverkauft wird |
| Sicherheit | Pflichtangaben nach GPSR und CLP — Hersteller, Warnhinweise, Gefahrensymbole |
| Sichtbarkeit | Titel und Beschreibung für Suchmaschinen |
| Zuordnung | Titelbild, Warengruppe, Kategorien |
Bilder hängen nicht am Formular, sondern an der Liste darunter (Bilder). Dort wird zugeordnet, nicht hochgeladen — dieselbe Datei kann an mehreren Artikeln hängen, und das Hochladen ist nur der bequeme Weg, etwas zuzuordnen, das es noch nicht gibt. Das erste Bild wird von selbst Titelbild.
Ein Bild fehlt im Laden? Ableitungen (die kleineren Fassungen) entstehen im Hintergrund. Sie sind meist nach dem nächsten Seitenaufruf da. Siehe Kapitel 6.
3.2 Ausführungen (Varianten)
Ein T-Shirt in vier Farben und zehn Größen ist ein Artikel mit vierzig Ausführungen. Legen Sie zuerst die Eigenschaften an (Stammdaten → Eigenschaften: „Farbe" mit „Rot", „Blau" …), dann am Artikel unter Ausführungen die Schaltfläche Ausführungen erzeugen.
Was Sie an der Ausführung nicht pflegen, erbt sie vom Stammartikel: Preis, Bezeichnung, Beschreibung, Bilder. Das ist der Sinn der Sache — vierzig eigene Preise stehen bei der nächsten Preisänderung still.
Fotos je Farbe: Hängen Sie alle Bilder an den Stammartikel und setzen Sie in der Bilderliste unter Gilt für die Ausprägung („Farbe: Rot"). Die roten Ausführungen zeigen dann nur die roten Fotos. Ein Bild ohne Angabe gilt für alle — richtig für die Größentabelle und das Detailfoto.
3.2a Kategorien und die Navigation
Katalog → Kategorien → Neu. Die Kategorien sind die Navigation Ihres Shops — was im Menü steht, steht dort, weil es eine Kategorie ist.
Das Feld „Übergeordnete Kategorie" entscheidet, ob die Kategorie überhaupt erscheint. Ihr Shop hat eine Wurzel (bei einer frischen Einrichtung heißt sie Startseite), und das Menü zeigt, was darunter hängt. Das Feld ist deshalb mit dieser Wurzel vorbelegt — so gehört.
Lassen Sie es leer, legen Sie keine oberste Ebene an, sondern eine zweite Wurzel: Die Kategorie steht dann neben der Navigation und nicht darin. Sie ist aktiv, sie ist sichtbar, sie hat eine Seite — und im Menü taucht sie nicht auf. (Das ist kein Fehler: Ein zweiter Verkaufskanal braucht seinen eigenen Baum, und der hängt an keinem anderen.)
In der Kategorieliste sehen Sie es in der Spalte Im Menü. Steht dort nein, tragen Sie eine übergeordnete Kategorie nach.
Nur die erste Ebene steht in der Menüzeile. Was tiefer hängt, erreichen Besucher über die Kategorieseite darüber — eine Navigation mit vier Ebenen ist keine Navigation mehr.
Der Pfad entsteht aus der Bezeichnung, sobald Sie speichern:
Handwerkzeug wird zu /kategorie/handwerkzeug. Sie können ihn im Feld
daneben überschreiben. Benennen Sie später um, bleibt der Pfad stehen —
sonst zeigten Anzeigen, Lesezeichen und der Eintrag der Suchmaschine ins Leere.
3.3 Bestellungen
Verkauf → Bestellungen. Jede Bestellung hat drei Zustände, die getrennt voneinander laufen: Auftrag, Zahlung, Lieferung. Eine bezahlte, aber noch nicht versandte Bestellung ist der Normalfall, kein Zwischenzustand.
Ändern geht — unter „Bestellung ändern" oben auf der Bestellseite. Sie können die Menge einer Position ändern, eine Position entfernen (Menge 0), eine hinzufügen und die Anschrift berichtigen. Der Anruf „nehmen Sie eine Packung raus" muss nicht mehr über Stornieren und Neubestellen laufen.
Was dabei nicht passiert: der Beleg wird nicht umgeschrieben. Was vorher galt, bleibt in der Bestellhistorie stehen, und jede Änderung steht dort mit einem Satz dazu — eine Bestellung ist ein Vertrag, und was darin stand, muss in zehn Jahren noch nachweisbar sein. Der Preis einer bestehenden Position bleibt deshalb, was er beim Kauf war; eine neue Position bekommt den heutigen Preis und ist im Beleg entsprechend gekennzeichnet.
Vier Fälle, in denen nichts geht — der Grund steht dann statt des Knopfes auf der Seite:
| Fall | Was zu tun ist |
|---|---|
| Es gibt schon eine Rechnung | Erst stornieren. Zwei Wahrheiten zu einem Geschäft sind ein Steuerproblem (§ 14c UStG) |
| Die Bestellung ist an eine Warenwirtschaft übergeben | Dort ändern |
| Sie ist storniert oder abgeschlossen | Nichts — sie wird nicht mehr bewegt |
| Die Ware ist schon raus | Unter die versandte Menge geht es nicht |
Wenn Rechnungen automatisch mit der Bestellung entstehen — so ist es voreingestellt —, ist damit jede Bestellung von Anfang an gesperrt. Wer regelmäßig ändert, stellt unter Einrichtung → Einstellungen → Rechnungen die Automatik auf Zahlungseingang oder Versand um.
Das Land einer Anschrift lässt sich nicht berichtigen: Es entscheidet über die Steuer. Für einen Preisnachlass gibt es die Gutschrift, für zurückgeschickte Ware die Retoure.
3.3a Schneller arbeiten: Rechtsklick
Ein Rechtsklick auf eine Zeile öffnet ihre Aktionen — in jeder Liste, nicht nur bei Bestellungen. Dort steht dasselbe wie im Menü am rechten Zeilenende, nur ohne den Weg quer über den Bildschirm. Oben im Menü steht, um welche Zeile es geht.
Mit der Tastatur geht es ebenso: Kontextmenü-Taste zum Öffnen, Pfeile zum Wandern, Eingabe zum Auslösen, Escape zum Schließen.
Brauchen Sie das Menü Ihres Browsers — etwa um einen Link in einem neuen Tab zu öffnen —, halten Sie beim Rechtsklick die Umschalttaste gedrückt.
3.4 Preise und Aktionen
| Was | Wo |
|---|---|
| Staffelpreis („ab 10 Stück") | Artikel → Erweiterte Preise |
| Preis für eine Kundengruppe | Regel anlegen (Verkauf → Aktionen → Regeln), dann am Artikel unter Erweiterte Preise |
| Rabattcode | Verkauf → Aktionen |
| Streichpreis | Artikel → Preis |
Beim Streichpreis rechnet der Shop mit. Wer einen Preis senkt, muss den niedrigsten Preis der letzten 30 Tage nennen (Omnibus-Richtlinie). Das macht der Shop von selbst — Sie müssen nichts dafür tun und können es auch nicht umgehen.
3.5 Kunden
Verkauf → Kunden. Wenn ein Kunde eine USt-IdNr. hinterlegt, prüft der Shop sie im Hintergrund bei der EU-Kommission. Der Stand steht an der Adresse: bestätigt, nicht bestätigt oder „nicht erreichbar".
Nur eine bestätigte Nummer führt bei einer Lieferung in ein anderes EU-Land zur steuerfreien Lieferung. Solange sie nicht bestätigt ist, wird Steuer berechnet — zu viel berechnete Steuer ist eine Rückfrage Ihres Kunden, zu wenig eine Nachzahlung von Ihnen.
Retouren #
Unter Verkauf → Retouren stehen alle Widerrufe und Rücknahmen an einer Stelle. Am Menüpunkt steht die Zahl der offenen Vorgänge — es ist der einzige Punkt im Backend mit einer Zahl, und zwar deshalb, weil hier als einzigem eine Frist läuft: Beim Widerruf haben Sie nach § 357 Abs. 1 BGB 14 Tage für die Rückzahlung, gerechnet ab der Erklärung des Kunden und nicht ab dem Eintreffen des Pakets.
Die Liste beantwortet welche. Angenommen, abgelehnt und gutgeschrieben wird an der Bestellung selbst — dort stehen die Positionen, und dort wird auch der Bestand wieder zugebucht. Der Knopf Zur Bestellung führt hin.
Wo ein Artikel im Shop erscheint #
Ein Artikel ist nur dort auffindbar, wo er für den jeweiligen Verkaufskanal sichtbar geschaltet ist. Bei einem Artikel, den Sie hier anlegen, erledigt das der Shop: Er kommt in alle aktiven Kanäle.
Ändern können Sie es am Artikel unter Sichtbarkeit in den Verkaufskanälen. Drei Stufen stehen zur Wahl:
| Stufe | Bedeutung |
|---|---|
| Überall gelistet | Der Regelfall — Kategorie, Suche, Empfehlungen |
| Nur über die Suche auffindbar | Steht in keiner Kategorie; wer sucht, findet ihn |
| Nur über den Direktlink erreichbar | Für Artikel, die nur ein bestimmter Kunde sehen soll |
Steht dort nichts, findet den Artikel niemand — auch dann nicht, wenn er aktiv ist. Der Knopf In alle Kanäle stellen erledigt den Regelfall.
4. Einstellungen #
Einrichtung → Einstellungen. Die Maske ist nach Bereichen geteilt; jede Angabe trägt ihren Erklärtext bei sich. Das hier ist dieselbe Liste zum Nachschlagen.
Zwei Dinge vorab:
- „Je Kanal" heißt: Sie darf abweichen, wenn Sie mehrere Verkaufskanäle betreiben. Was am Betrieb hängt — Anschrift, Steuer, Rechnungen, Widerrufsfristen — gilt für den ganzen Betrieb. Zwei Impressen unter einem Handelsregistereintrag wären nicht nur unsinnig, sondern falsch.
- Nicht alles ist hier einstellbar, und das mit Absicht. Rundungsregeln etwa sind eine Einmalentscheidung bei der Einrichtung; in einer Maske, in der sie jemand versehentlich umstellt, richten sie Schaden an, den niemand bemerkt, bis die Buchhaltung sich meldet. Solche Angaben stehen in Dateien.
Eine Einstellung mit Bestätigungswort ist kein Schalter, sondern eine Entscheidung: Die Kleinunternehmerregelung etwa ändert jede Preisangabe im Shop und jede künftige Rechnung.
Betreiber
| Einstellung | Bedeutung | Je Kanal |
|---|---|---|
| Name des Unternehmens | Wie er im Handelsregister steht — samt Rechtsform. | — |
| Straße und Hausnummer | — | |
| Postleitzahl | — | |
| Ort | — | |
| Land | — | |
| E-Mail-Adresse | Muss im Impressum stehen und erreichbar sein — eine Adresse, die niemand liest, erfüllt § 5 DDG nicht. | — |
| Telefon | — | |
| Vertreten durch | Bei einer GmbH die Geschäftsführung, bei einer AG der Vorstand. | — |
| Registergericht | — | |
| Registernummer | — | |
| Umsatzsteuer-Identifikationsnummer | § 27a UStG. Ohne sie kein innergemeinschaftlicher Handel. | — |
| IBAN | Steht auf der Rechnung und in der E-Rechnung. Ohne sie weiß der Kunde nicht, wohin er überweisen soll. | — |
| BIC | Innerhalb der EU meist entbehrlich, außerhalb nicht. | — |
| Kontoinhaber | Leer lassen heißt: der Name des Unternehmens. | — |
Rechnungen
| Einstellung | Bedeutung | Je Kanal |
|---|---|---|
| Rechnungen im Shop erstellen | Abschalten, wenn eine Warenwirtschaft die Rechnungen schreibt. Zwei Belege zu einem Geschäft sind ein Steuerproblem. | — |
| Rechnung mit der Bestellung ausstellen | Sonst wird sie im Backend von Hand ausgestellt — etwa erst bei Versand. | — |
| E-Rechnung mitliefern | Zusätzlich zum PDF eine XML-Datei nach EN 16931 (XRechnung). Wer an öffentliche Auftraggeber liefert, braucht sie; im Endkundengeschäft nicht. | — |
| Zahlungsziel in Tagen | Steht als Fälligkeitsdatum in der E-Rechnung. 0 lässt es weg — manche Rechnungsportale weisen den Beleg dann zurück. | — |
Steuer
| Einstellung | Bedeutung | Je Kanal |
|---|---|---|
| Kleinunternehmerregelung nach § 19 UStG | Der Shop weist dann keine Umsatzsteuer aus und setzt statt der Steuerangabe den Hinweis auf § 19 UStG. | — |
| Eigenes Land (ISO, etwa DE) | Von hier aus wird geliefert. Es entscheidet, was eine innergemeinschaftliche Lieferung ist: Eine Lieferung im Inland bleibt steuerpflichtig, auch an einen Geschäftskunden mit USt-IdNr. | — |
| Steuerfrei an Geschäftskunden in der EU | Innergemeinschaftliche Lieferung (§ 4 Nr. 1b, § 6a UStG) an Kunden mit geprüfter USt-IdNr. in einem anderen Mitgliedstaat. Abschalten, wenn Sie das nicht leisten wollen: Es verlangt die Zusammenfassende Meldung ans Bundeszentralamt und einen Belegnachweis. | — |
| USt-IdNr. bei VIES prüfen | Fragt die Nummer bei der EU-Kommission ab. Wer steuerfrei liefert, ohne geprüft zu haben, schuldet die Steuer selbst, wenn sie falsch war. Abgeschaltet bleibt die Prüfung des Aufbaus — die fängt den Tippfehler ab, aber nicht die erfundene Nummer. | — |
| Bei VIES-Ausfall trotzdem steuerfrei liefern | VIES fällt regelmäßig aus. Aus heißt: In dieser Zeit wird Steuer berechnet — zu viel berechnete Steuer ist eine Rückfrage des Kunden, zu wenig eine Nachzahlung des Betriebs. | — |
| Hinweis: innergemeinschaftliche Lieferung | Leer lassen heißt: die eingebaute Formulierung. § 14 Abs. 4 Nr. 8 UStG verlangt bei jeder Steuerbefreiung einen Hinweis auf den Grund. | — |
| Hinweis: Ausfuhrlieferung | Leer lassen heißt: die eingebaute Formulierung. | — |
| Hinweis: Differenzbesteuerung | Leer lassen heißt: die eingebaute Formulierung. Gilt für Artikel, die als differenzbesteuert gekennzeichnet sind (§ 25a UStG). | — |
| Hinweis statt der Steuerangabe | Steht überall dort, wo sonst „inkl. MwSt." stünde — und auf der Rechnung. Leer lassen für die übliche Formulierung. | — |
| Umsatzgrenze der Kleinunternehmerregelung (€) | Der Shop kennt sie nicht von selbst — sie steht im Gesetz, ändert sich und hängt am Vorjahresumsatz. Eingetragen warnt das Backend, sobald der Jahresumsatz sich ihr nähert. 0 schaltet die Warnung ab. | — |
Bestand
| Einstellung | Bedeutung | Je Kanal |
|---|---|---|
| Der Shop führt den Bestand | Abgebucht wird beim Bestelleingang, zurückgegeben beim Stornieren. Abgeschaltet rührt der Shop den Bestand nicht an — dann führt ihn die Warenwirtschaft. | — |
Mails
| Einstellung | Bedeutung | Je Kanal |
|---|---|---|
| Bei Zahlungseingang benachrichtigen | — | |
| Bei Versand benachrichtigen | — | |
| Bei Stornierung benachrichtigen | — | |
| Bei Abschluss benachrichtigen | „Abgeschlossen" ist meist ein interner Vermerk. | — |
| Rechnung als PDF verschicken | Eigene Nachricht mit der Rechnung im Anhang, sobald sie ausgestellt ist. | — |
| Zur Bewertung einladen | Zulässig ohne vorherige Einwilligung, solange es um die eigene, gekaufte Ware geht und der Kunde widersprechen kann (§ 7 Abs. 3 UWG). Die Bedingungen muss der Betreiber kennen — deshalb ist es aus. | — |
| Einladung nach | Gerechnet ab dem Versand — vorher hat der Kunde die Ware nicht. | — |
Widerruf
| Einstellung | Bedeutung | Je Kanal |
|---|---|---|
| Rücksendekosten trägt | Der Verbraucher trägt sie nur, wenn er darüber unterrichtet wurde (§ 357 Abs. 6 BGB) — und das gehört in die Widerrufsbelehrung. Was hier steht, muss mit ihr übereinstimmen; der Shop zeigt es dem Kunden beim Widerruf noch einmal. | — |
| Widerrufsfrist | Vierzehn Tage sind das Gesetz (§ 355 Abs. 2 BGB). Länger darf ein Betrieb zusagen, kürzer nicht — und was hier steht, muss mit der Widerrufsbelehrung übereinstimmen. | — |
| Angenommene Zustelldauer | Die Frist beginnt mit dem Erhalt der Ware, der Shop kennt aber nur den Versand. Diese Tage werden auf die Frist gerechnet. Im Zweifel großzügig: Eine zu früh verschwundene Schaltfläche nimmt dem Kunden ein Recht. | — |
Sichtbarkeit
| Einstellung | Bedeutung | Je Kanal |
|---|---|---|
| Von Suchmaschinen indexieren lassen | Abgeschaltet bekommt jede Seite „noindex". Der Schalter für den Aufbau: Ein Shop, an dem noch gearbeitet wird, gehört nicht in den Index — und wieder heraus zu kommen dauert Wochen. | ja |
| Titelmuster | Kennt {seite} und {shop}. Ohne Muster steht in der Trefferliste zwanzigmal derselbe Seitenname ohne Absender. | ja |
| Beschreibung als Rückfall | Gilt für jede Seite ohne eigene Beschreibung. Etwa 150 Zeichen — was länger ist, schneidet die Suchmaschine ab. | ja |
| Bild fürs Teilen | Wird gezeigt, wenn jemand einen Link zum Shop verschickt und die Seite kein eigenes Bild hat — Startseite, Warenkorb, Rechtstexte. Pfad unter public/ oder vollständige Adresse; mindestens 1200 × 630 Pixel. Leer lassen heißt: Das Netz sucht sich selbst etwas aus, meist erfolglos. | ja |
| Eigene robots.txt | Leer lassen: Der Shop erzeugt eine, die zu seinen Einstellungen passt — mit Verweis auf die Sitemap. Was hier steht, ersetzt sie vollständig. | ja |
Shop
| Einstellung | Bedeutung | Je Kanal |
|---|---|---|
| Symbol im Browser-Tab | Pfad unter public/ oder vollständige Adresse — am besten quadratisch und mindestens 180 × 180 Pixel. Leer lassen heißt: das Symbol von red.Shop, dasselbe wie beim Hinweis im Fuß. Beides lässt sich einzeln abschalten. | ja |
| „Erstellt mit red.Shop" in der Fußzeile | Ein kleiner Hinweis mit Logo. Abschalten geht ohne Nachfrage und ohne Aufpreis — wer ihn stehen lässt, tut es freiwillig. | ja |
Hintergrundarbeiten
| Einstellung | Bedeutung | Je Kanal |
|---|---|---|
| Hintergrundarbeiten mit den Seitenaufrufen erledigen | Bildableitungen, Mails und Importe laufen in einer Warteschlange. Ohne einen eigenen Arbeiterprozess bliebe sie stehen — ein hochgeladenes Bild stünde im Shop als „Kein Bild". Angeschaltet arbeitet der Shop sie nach jedem Seitenaufruf ein Stück ab, nachdem die Seite ausgeliefert ist. Nur abschalten, wenn ein eigener Arbeiter läuft (queue:work als Dienst). | — |
| Sekunden je Seitenaufruf | Wie lange eine Anfrage höchstens nacharbeitet. Mehr heißt: die Warteschlange ist schneller leer, dafür ist ein PHP-Prozess länger belegt. | — |
Neue Fassungen
| Einstellung | Bedeutung | Je Kanal |
|---|---|---|
| Nach neuen Fassungen sehen | Angeschaltet lädt der Shop einmal am Tag die Liste der veröffentlichten Fassungen und vergleicht sie hier. Es wird nichts über diesen Shop übermittelt — keine Adresse, kein Name, nicht einmal die eigene Fassung. Die Gegenseite sieht eine IP-Adresse und einen Zeitpunkt. Heruntergeladen oder eingespielt wird nichts; die Meldung steht auf der Update-Seite. | — |
Verfügbarkeit
| Einstellung | Bedeutung | Je Kanal |
|---|---|---|
| Artikel ohne Bestand | Gilt für alle Artikel, an denen nichts anderes eingestellt ist. | ja |
| Ab wann ein Bestand als knapp gilt | "Nur noch 3 Stück" ist zulässig, solange es stimmt — die Zahl kommt aus dem Bestand. | ja |
| Ausverkauftes ans Ende der Liste | Aus der Liste nehmen wäre schlechter: Das erzeugt tote Verweise. | ja |
Bewertungen
| Einstellung | Bedeutung | Je Kanal |
|---|---|---|
| Nur wer gekauft hat, darf bewerten | Wird das abgeschaltet, muss der Hinweis darunter angepasst werden — § 5b Abs. 3 UWG verlangt eine zutreffende Angabe. | ja |
| Hinweis zur Echtheitsprüfung | Pflichtangabe nach § 5b Abs. 3 UWG. Steht auf jeder Artikelseite bei den Bewertungen. Muss beschreiben, was tatsächlich geprüft wird. | ja |
Preise
| Einstellung | Bedeutung | Je Kanal |
|---|---|---|
| Zeitraum für den niedrigsten Preis | § 11 PAngV verlangt 30 Tage. Ein kürzerer Zeitraum ist unzulässig. | — |
Die Lizenz #
Einrichtung → Lizenz. Tragen Sie dort den Schlüssel ein, den Sie mit Ihrem Vertrag bekommen haben. Der Shop fragt danach einmal am Tag im Hintergrund nach; die Seite zeigt nur, was dabei herauskam.
Übertragen werden dabei genau fünf Angaben: Lizenzschlüssel, eine zufällige Kennung dieser Installation, das Produkt, die Programmfassung und ob es sich um ein Produktivsystem handelt. Keine Umsätze, keine Bestellzahlen, kein Domainname.
Die Nutzungsmeldung
Ihr Preis hängt an der Zahl Ihrer Bestellungen. Diese Zahl meldet der Shop einmal am Tag — über eine eigene Anfrage, nicht zusammen mit der Lizenzprüfung.
Übertragen werden dabei: Lizenzschlüssel, dieselbe Kennung, das Produkt, ob es ein Produktivsystem ist — und je Monat eine Zahl. Keine Beträge, keine Umsätze, keine Artikel, keine Daten Ihrer Kunden, keine einzelnen Bestellungen. Der Hersteller weist eine Meldung zurück, die mehr enthält.
Bestellungen, die an eine Warenwirtschaft übergeben wurden, sind nicht dabei — die zählt und meldet die Warenwirtschaft, sonst zahlten Sie dieselbe Bestellung zweimal. Unter Verkauf → Bestellungen und Stufe sehen Sie beide Zahlen nebeneinander.
Sie können die Meldung abstellen: REDSHOP_REPORT_USAGE=false in der
.env. Dann geht nichts hinaus, und Sie erklären Ihre Stufe einmal im Jahr
selbst. Am Betrieb ändert das nichts — bleibt die Meldung aus, wird nichts
gesperrt, nichts eingeschränkt und nichts nachgefragt.
Was bei einer abgelaufenen Lizenz passiert: nichts, was Ihren Betrieb anhält. Es kommen keine neuen Programmfassungen und keine Erweiterungen mehr — Sicherheitsupdates laufen weiter. Bestellannahme, Versand, Kasse und das Backend bleiben unverändert offen. Es gibt im ganzen Programm keine Stelle, die wegen einer Lizenz etwas sperrt.
Wenn der Hersteller nicht erreichbar ist, gilt das zuletzt bestätigte Ergebnis unbefristet weiter. Ein Ausfall dort ist nicht Ihr Problem. Auf der Seite steht trotzdem, seit wann keine Antwort mehr durchkam — damit Sie es wissen und nicht das Schweigen für Zustimmung halten.
Den Hinweis zur Lizenz sehen nur Zugänge, die die Einstellungen pflegen dürfen. Wer Bestellungen abarbeitet, hat mit der Rechnung nichts zu tun.
Die Suche beschleunigen (optional) #
Der Shop sucht ohne weiteres Zutun — über die Datenbank. Das reicht für die meisten Kataloge. Was er dabei nicht kann: Tippfehler verzeihen. Wer „Bohrmaschiene" eingibt, findet nichts.
Wenn Sie das ändern wollen, hängen Sie Meilisearch oder Typesense davor. Beide sind eigenständige Dienste; welchen Sie nehmen, hängt meist davon ab, was Ihr Hoster anbietet.
In der .env:
REDSHOP_SEARCH_DRIVER=meilisearch # oder: typesense
REDSHOP_SEARCH_HOST=http://127.0.0.1:7700
REDSHOP_SEARCH_KEY=ihr-schlüssel
REDSHOP_SEARCH_INDEX=redshop_products
Danach einmal den Index aufbauen — ohne diesen Schritt sucht der Shop gegen einen leeren Index und findet nichts:
php artisan redshop:search:sync
Unter System → Einrichtung → Aufgaben steht eine Zeile dazu, sobald ein Dienst eingerichtet ist. Sie ist grün, wenn der Index gefüllt ist.
Was sich ändert und was nicht. Der Dienst übernimmt nur das Finden. Preise, Verfügbarkeit, Filter und die Reihenfolge „Ausverkauftes ans Ende" kommen weiter aus Ihrem Shop — im Index stehen weder Preise noch Bestände. Sie bekommen also nicht plötzlich andere Preise in der Liste, sondern bessere Treffer.
Fällt der Dienst aus, sucht der Shop weiter — über die Datenbank, mit
schlechteren Treffern. Ihr Laden bleibt offen. Im Protokoll
(storage/logs/laravel.log) steht, dass zurückgefallen wurde.
Laufen mehrere Shops auf einem Suchdienst, braucht jeder einen eigenen
REDSHOP_SEARCH_INDEX. Sonst sucht der eine im Bestand des anderen.
Nach einem Import, der an der Oberfläche vorbeigeschrieben hat, bauen Sie den Index neu auf. Im laufenden Betrieb hält der Shop ihn selbst aktuell.
5. Zugänge, Rollen und Rechte #
Einrichtung → Zugänge für die Personen, Rollen für das, was sie dürfen. Ein Zugang ohne Rolle darf nichts — auch das ist eine Antwort.
Der erste Zugang aus der Einrichtung hat alle Rechte. Legen Sie für Mitarbeiter eigene an: Ein geteilter Zugang macht jede Änderung anonym, und die Rechteänderungen (Einrichtung → Rechteänderungen) sind dann wertlos.
Zwei-Faktor-Anmeldung richtet jeder für sich selbst ein — über das eigene Profil, oben rechts. Sie lässt sich nicht für andere einschalten: Ein Faktor, den jemand anders eingerichtet hat, ist keiner.
Katalog
| Recht | Schlüssel |
|---|---|
| Ansehen | catalog.view |
| Pflegen | catalog.manage |
Inhalte
| Recht | Schlüssel |
|---|---|
| Ansehen | content.view |
| Pflegen | content.manage |
Bestellungen
| Recht | Schlüssel |
|---|---|
| Ansehen | order.view |
| Bearbeiten | order.manage |
Kunden
| Recht | Schlüssel |
|---|---|
| Ansehen | customer.view |
| Pflegen | customer.manage |
Bewertungen
| Recht | Schlüssel |
|---|---|
| Ansehen | review.view |
| Freigeben | review.manage |
Aktionen
| Recht | Schlüssel |
|---|---|
| Ansehen | promotion.view |
| Pflegen | promotion.manage |
Einstellungen
| Recht | Schlüssel |
|---|---|
| Ansehen | settings.view |
| Ändern | settings.manage |
| Zugangsdaten sehen | settings.secrets |
| Betriebsdaten ändern | settings.company |
| Steuer und Rechnungen ändern | settings.tax |
Schnittstellen
| Recht | Schlüssel |
|---|---|
| Ansehen | integration.view |
| Pflegen | integration.manage |
Zugänge
| Recht | Schlüssel |
|---|---|
| Ansehen | user.view |
| Pflegen | user.manage |
5.1 Was Sie nicht wegnehmen können
Der letzte Zugang mit allen Rechten lässt sich nicht abschalten und nicht löschen. Sonst stünden Sie vor Ihrem eigenen Shop und kämen nicht hinein — und der Weg zurück wäre ein Eingriff in die Datenbank.
6. Wenn etwas nicht geht #
Die Fehlerbilder, die in der Praxis vorkommen — und was wirklich dahintersteckt.
„Kein Bild" bei einem Artikel, der Bilder hat
Die kleineren Fassungen eines Bildes entstehen nach dem Hochladen, im Hintergrund. Der Shop arbeitet diese Aufgaben nach jedem Seitenaufruf ein Stück ab; rufen Sie die Seite noch einmal auf.
Bleibt es dabei: Unter Einstellungen → Hintergrundarbeiten muss „Hintergrundarbeiten mit den Seitenaufrufen erledigen" an sein — es sei denn, auf Ihrem Server läuft ein eigener Arbeiterprozess.
Die Seite sieht zusammengefallen aus
Ein Theme bringt gebautes CSS mit, und das muss einmal veröffentlicht werden: Einrichtung → Themes → Dateien veröffentlichen. Die Liste zeigt Ihnen je Theme, ob seine Dateien draußen liegen.
Bei mehreren Frontends muss das auf jedem Server laufen — oder die Dateien
liegen auf einer gemeinsamen Ablage (REDSHOP_ASSETS_DISK).
Es kommt keine Mail an
Der Reihe nach:
- Einrichtung → Einstellungen → Mails: Ist ein Versandweg eingerichtet? Die Testmail dort sagt Ihnen mehr als jede Vermutung.
- Kommt die Testmail an, aber keine Bestellbestätigung: Die Mail läuft über die Warteschlange — siehe „Kein Bild" oben.
- Kommt sie beim Kunden nicht an, landet aber im Protokoll: Das ist meist der Spamfilter des Empfängers. Ein eigener Absender mit SPF- und DKIM-Eintrag ist die Antwort, keine Einstellung im Shop.
Ein Kunde bekommt Steuer berechnet, obwohl er eine USt-IdNr. hat
Drei Gründe, in dieser Reihenfolge:
- Die Lieferung geht ins Inland. Eine Inlandslieferung bleibt steuerpflichtig, auch an einen Geschäftskunden. Das ist kein Fehler.
- Die Nummer ist nicht bestätigt. Sehen Sie am Kunden nach, was die Prüfung ergeben hat.
- Der Dienst der EU-Kommission war nicht erreichbar. Dann wird im Zweifel mit Steuer geliefert. Wer das anders will, sagt es ausdrücklich in den Einstellungen.
Eine Adresse führt ins Leere
Wenn Sie den URL-Pfad eines Artikels oder einer Kategorie ändern, legt der Shop die Weiterleitung von selbst an. Für alte Adressen aus einem früheren Shop gibt es Inhalte → Weiterleitungen — auch als Import.
Der Shop zeigt „Wartung"
Das setzt ein Update. Bleibt es stehen, ist der Lauf abgebrochen:
php artisan up schaltet ihn wieder frei. Sehen Sie danach unter System →
Update nach, ob die Installation auf dem Stand des Codes ist.
Wo Fehler stehen
storage/logs/laravel.log. Wenn Sie Ihren Hoster oder uns fragen: Die letzten
zwanzig Zeilen davon sagen mehr als jede Beschreibung.
Das Systemprotokoll #
Einrichtung → Systemprotokoll. Hier steht, was im Hintergrund schiefgegangen ist: eine Mail, die nicht hinausging, ein Webhook, der nicht ankam, ein Import, der eine Zeile übersprang.
Voreingestellt zeigt die Liste nur Warnungen und Fehler — das ist der häufigste Griff. Wer alles sehen will, nimmt den Filter heraus.
Drei Spalten helfen beim Suchen:
| Spalte | Wofür |
|---|---|
| Stufe | Wie ernst es ist |
| Herkunft | Wer schreibt — core oder ein Plugin |
| Ereignis | Ein kurzer Schlüssel wie webhook.failed, zum Wiederfinden |
Wenn ein Plugin auffällt, filtern Sie auf seine Herkunft. Steht dort dauernd dasselbe, gehört es zum Hersteller des Plugins gemeldet — mit dem Zeitpunkt und dem, was unter Ansehen im Zusammenhang steht.
Das Protokoll räumt sich selbst auf: Fehler bleiben ein Jahr, alles andere drei Monate. Zugangsdaten stehen nicht darin — sie werden beim Schreiben ersetzt.
„Ich habe keine Bestätigung bekommen" #
Die häufigste Rückfrage überhaupt — und Sie können sie selbst beantworten: Einrichtung → Nachrichten → Versandprotokoll. Dort steht jede Mail, die der Shop verschickt hat, mit Empfänger, Betreff und Inhalt.
Der Filter Nur Fehlschläge zeigt, was nicht hinausging, und nennt den Grund. Das ist der wichtigste Teil: Eine Mail, die vom Postfach des Empfängers abgewiesen wurde, sieht von außen genauso aus wie eine, die nie geschrieben wurde — im Protokoll sehen Sie den Unterschied.
Steht dort gar nichts, ging auch nichts hinaus. Dann liegt es an der Mailverbindung (Einrichtung → Nachrichten → Mailverbindungen) und nicht am Empfänger.
Wer sich abgemeldet hat, steht unter Abmeldungen — an diese Adressen verschickt der Shop nichts mehr, und das ist kein Fehler, sondern ein Widerspruch nach Art. 21 DSGVO.
7. Updates und Sicherung #
7.1 Zwei Schritte, nicht einer
Ein Update besteht aus Code austauschen und Installation nachziehen. Der Shop macht nur das Zweite:
- Code austauschen — auf einem Mietpaket das neue Paket entpacken, auf
einem eigenen Server
composer update. Das ist Sache Ihrer Umgebung. - Installation nachziehen — Einrichtung → Update oder
php artisan redshop:update. Datenbank, Plugins, Dateien, Zwischenspeicher.
Warum der Shop sich den Code nicht selbst holt: Er bräuchte dafür Schreibrechte auf seinen eigenen Quelltext — und damit wäre jede Lücke in ihm eine Übernahme Ihres Servers.
7.2 Vorher sichern. Wirklich.
Es gibt keinen automatischen Weg zurück. Migrationen zurückzurollen löscht Spalten und mit ihnen die Daten, die seit dem Update hineingeschrieben wurden. Der Weg zurück ist Ihre Sicherung von vorhin — von Datenbank und Dateien.
Der Shop sichert nicht selbst: mysqldump gibt es auf einem Mietpaket oft
nicht, und eine Sicherung, die auf demselben Server liegt, ist keine.
7.3 Plugins können ein Update aufhalten
Ein Plugin, das die neue Fassung nicht verträgt, verhindert den Lauf, bevor er beginnt. Sonst laufen die Migrationen, das Plugin bricht danach, und Sie stehen mit einer halb aktualisierten Installation da. Die Update-Seite nennt die Plugins, um die es geht: erst aktualisieren oder abschalten.
7.4 Von neuen Fassungen erfahren
Ausgeliefert ist das aus. Ein Shop, der von selbst nach Hause telefoniert, ist Ihre Entscheidung. Angeschaltet (Einstellungen → Neue Fassungen) lädt er einmal am Tag eine Liste der veröffentlichten Fassungen und vergleicht sie bei Ihnen.
Über Ihren Shop wird dabei nichts übermittelt: keine Adresse, kein Name, nicht einmal Ihre Fassung. Die Gegenseite sieht eine IP-Adresse und einen Zeitpunkt — das ist bei jeder Verbindung so.
Heruntergeladen oder eingespielt wird nichts. Es steht dann eine Meldung auf der Update-Seite, und der Rest bleibt Schritt 1 und 2 von oben.
8. Befehle #
Alles Wichtige geht im Browser. Wer eine Konsole hat, geht schneller — und für Automatisierung (nächtliche Läufe, Ausrollen) führt kein Weg daran vorbei.
| Befehl | Wofür |
|---|---|
php artisan redshop:admin:create |
Legt einen Zugang zum Backend an |
php artisan redshop:api:prune-idempotency |
Löscht abgelaufene Idempotenzschlüssel der API |
php artisan redshop:bestellungen |
Zählt die Bestellungen je Monat — die Bemessung der Miete |
php artisan redshop:cache:flush |
Verwirft die zwischengespeicherten Shopdaten über die Generationszähler |
php artisan redshop:check:cluster |
Prüft, ob die Installation für mehrere Frontends taugt |
php artisan redshop:check:updates |
Sieht nach, ob eine neuere Fassung veröffentlicht wurde |
php artisan redshop:demo |
Legt den Musterdatensatz an (nur Entwicklung und Test) |
php artisan redshop:install |
Richtet red.Shop ein — geführt oder vollständig über Optionen |
php artisan redshop:license |
Prüft die Lizenz beim Hersteller und meldet die Bestellzahl (steht im Zeitplan) |
php artisan redshop:log:prune |
Löscht alte Einträge aus dem Systemprotokoll |
php artisan redshop:logins:prune |
Löscht alte Einträge aus dem Anmeldeprotokoll |
php artisan redshop:orders:remind |
Erinnert an offene Vorkasse-Zahlungen |
php artisan redshop:plugin:activate |
Aktiviert ein installiertes red.Shop-Plugin |
php artisan redshop:plugin:deactivate |
Deaktiviert ein red.Shop-Plugin, Daten bleiben erhalten |
php artisan redshop:plugin:install |
Installiert ein red.Shop-Plugin (Migrationen und install-Hook) |
php artisan redshop:plugin:list |
Zeigt alle erkannten red.Shop-Plugins mit ihrem Zustand |
php artisan redshop:plugin:publish |
Kopiert die gebauten Dateien der Plugins an ihren Auslieferungsort |
php artisan redshop:plugin:refresh |
Gleicht erkannte Plugins mit der Datenbank ab und schreibt den Plugin-Cache neu |
php artisan redshop:plugin:uninstall |
Deinstalliert ein red.Shop-Plugin |
php artisan redshop:products:import-watched |
Liest die Artikeldateien aus dem Eingangsordner ein |
php artisan redshop:redirects:prune |
Löscht automatisch entstandene Weiterleitungen, die niemand benutzt |
php artisan redshop:reviews:invite |
Laedt einige Tage nach dem Versand zur Bewertung ein |
php artisan redshop:rule:revalidate |
Prueft alle Regeln auf unbekannte Bedingungstypen und markiert sie entsprechend |
php artisan redshop:search:reindex |
Baut die Listenpreise für Preisfilter und Preissortierung neu auf |
php artisan redshop:search:sync |
Baut den externen Suchindex (Meilisearch/Typesense) neu auf |
php artisan redshop:sepa:export |
Schreibt die fälligen SEPA-Lastschriften als pain.008-Datei |
php artisan redshop:theme:publish |
Kopiert die gebauten Dateien der Themes an ihren Auslieferungsort |
php artisan redshop:update |
Bringt eine Installation auf den Stand des vorhandenen Codes |
php artisan redshop:webhooks:prune |
Löscht alte Einträge aus dem Zustellprotokoll der Webhooks |
8.1 Was nachts von selbst laufen sollte
Ein Teil des Shops hängt an einem Zeitplan: Erinnerungen an unbezahlte Bestellungen, das Einlesen des Importordners, das Aufräumen alter Zustellprotokolle. Dafür genügt ein Eintrag in der Aufgabenplanung Ihres Servers:
* * * * * cd /pfad/zum/shop && php artisan schedule:run >> /dev/null 2>&1
Ohne ihn läuft der Shop weiter — nur eben ohne diese Läufe.
8.2 Bei mehreren Frontends
Läuft der Shop auf mehreren Servern an einer Datenbank, prüft
php artisan redshop:check:cluster, ob die Einrichtung das verträgt:
Sitzungen, Zwischenspeicher, Sperren, Warteschlange, Medien, Rechnungen,
Theme-Dateien.
Für einen einzelnen Server ändert sich dadurch nichts — und der ist der Normalfall.
Etwas stimmt nicht oder fehlt? Melden Sie es — auch Lücken in der Dokumentation sind Fehler. Alle Anleitungen stehen unter Dokumentation.