6.2 RC Mails an Kunden bei Bestellstatuswechsel

Sehe ich das richtig, dass schon wieder zig Mails an den Kunden gehen? Ich versende meist noch am gleichen Tag, 99 % der Leute bezahlen per paypal.

Der Kunde bekommt also 1 Bestellbestätigung, 1 Paypalnachricht, 1 Nachricht aus dem Shop, dass er bezahlt hat, 1 Nachricht, dass die Bestellung in Bearbeitung ist, 1 Nachricht, dass die Bestellung verschickt wurde und 1 Nachricht, dass die Bestellung abgeschlossen wurde. 6 Mails an einem Tag wegen einer Bestellung. Das ist doch Wahnsinn!

und wieso muss der Kunde in seinem Konto nachsehen, um die Sendung verfolgen zu können. Bei so vielen Mails, mit denen er zugespamt wird, könnte man ihm den Link zur Sendungsverfolgung auch in der letzten Mail mitschicken. 

Zumal Kunden, die über andere Marktplätze bestellt habe, eh nur Gastkunden sind und darauf keinen Zugriff hätten

Ich sehe aktuell nur die Möglichkeit nicht alle Email-Vorlagen der Storefront zuzuordnen. Dann wirst du beim Statuswechsel nach einem Template gefragt, kannst aber auch ohne Mail-Versand den Status wechseln. 

Keine Ahnung ob das so vorgesehen ist, dass man jedes mal nach dem Mail-Template “geprompted” wird. 

Bei der Sendungsverfolgung bin ich bei dir - das habe ich auch noch nicht gefunden - kann ich aber hier durch den Dienstleister abbilden.

Gruß

1 Like

danke, dann versuche ich das mal! durch welchen dienstleister oder plugin löst du das mit der sendungsverfolgung?

ich denke, man bräuchte nur die mailvorlage zu ändern, wenn man wüsste, ob und mit dem welchem platzhalter der link zum sendungsverfolgung in die mail gezogen wird. bestimmt nichts wildes, wenn man sich auskennt

Ich mache das über Sendcloud. Die bieten die Option an, dass man ein Mail sendet mit den nötigen Infos drin. 

Stimmt - sollte als Variable irgendwo aufrufbar sein. Ich suche das mal raus und teste es - kann normal nicht so schwer sein :slight_smile:

Lieber löse ich das natürlich direkt im Shop - zwecks Konsoldierung. 

Gruß

Was meinst du mit „schon wieder“ - das verstehe ich in dem Kontext noch nicht.

Was hast du denn vorher geändert, sodass es nicht passiert?

@annaconta schrieb:

danke, dann versuche ich das mal! durch welchen dienstleister oder plugin löst du das mit der sendungsverfolgung?

ich denke, man bräuchte nur die mailvorlage zu ändern, wenn man wüsste, ob und mit dem welchem platzhalter der link zum sendungsverfolgung in die mail gezogen wird. bestimmt nichts wildes, wenn man sich auskennt

Du kannst ja jetzt Sendungsnummern bei den Orders hinterlegen. Bei den Versandkosten hinterlegst du ein URL Templatze und in den Mails dann sowas:

 

    Track your shipments using this/these link(s):
    
    {% for delivery in order.deliveries %}
        {% for trackingCode in delivery.getTrackingCodes() %}
            {% set urlTemplate = delivery.getShippingMethod().getTrackingUrl() %}
            {% set urlEncodedCode = trackingCode|escape('url')|raw %}

            
                {{ urlTemplate|format(trackingCode) }}
            
        {% endfor %}
    {% endfor %}

 

1 Like

Keine Ahnung warum, aber das encode funktioniert zumindest in 6.2RC1 für mich nicht. 

{{ urlTemplate|format(trackingCode) }} spuckt einfach die URL wieder aus, ohne den eigentlichen Trackingcode zu enthalten. Der Kunde soll ja den fertigen Link erhalten oder?

{% for delivery in order.deliveries %}
              {% for trackingCode in delivery.getTrackingCodes() %}
                  {% set urlTemplate = delivery.getShippingMethod().getTrackingUrl() %}
                  {% set urlEncodedCode = trackingCode|escape('url')|raw %}
      
                  
                      {{ trackingCode }}
                  
              {% endfor %}
          {% endfor %}

Das href natürlich entpsrechend dem Anbieter anpassen - die Post AT erwartet URL + # + code + #. Zumindest wird bei mir der Link dann richtig aufgebaut. 

@Moritz Naczenski schrieb:

Was meinst du mit “schon wieder” - das verstehe ich in dem Kontext noch nicht.

Was hast du denn vorher geändert, sodass es nicht passiert?

Vielleicht kannst du uns noch darüber aufklären ob es wirklich so umgesetzt werden muss, dass nur beim jeweiligen Status, wo wir explizit ein Mail senden wollen, ein Template hinterlegen und bei den anderen nicht? Das System sagt uns dann, dass dem Status kein Mail Template hinterlegt wurde und gibt uns die Option das permanent zu tun.

Eventuell wäre hier ein Setting gut, damit nicht ein unerfahrener User irgendwelche Templates bei einem Status hinterlegt, wo keine hinterlegt werden sollten - da nur intern benutzt?

ich hatte gehofft, dass sich das mit 6.2 abstellen lässt, zumindest war das angekündigt. “immer noch” wäre die richtigere formulierung gewesen 

@Moritz Naczenski schrieb:

Was meinst du mit “schon wieder” - das verstehe ich in dem Kontext noch nicht.

Was hast du denn vorher geändert, sodass es nicht passiert?

ich hätte auch bitte gerne eine anleitung, die dummies wie ich auch verstehen. 

“Du kannst ja jetzt Sendungsnummern bei den Orders hinterlegen” ->  das mache hoffentlich nicht ich, sondern SW in 6.2, oder? ich versende mit dem pickware dhl adapter

“Bei den Versandkosten hinterlegst du ein URL Templatze” -> wo soll ich was hinterlegen?

 

Zu den Mails:
Am Einfachsten wäre in den Einstellungen eine Übersicht, wo wir nach Lust und Liebe Haken setzen können, bei welcher Statusänderung wir eine Mail verschickt haben wollen und bei welchem Status ein Anhang (und dann welcher) verschickt wird. Einmal eingestellt läuft das dann von selbst durch. Von mir aus dann noch sortiert nach Saleschannel

@DominikW schrieb:

Keine Ahnung warum, aber das encode funktioniert zumindest in 6.2RC1 für mich nicht. 

{{ urlTemplate|format(trackingCode) }} spuckt einfach die URL wieder aus, ohne den eigentlichen Trackingcode zu enthalten. Der Kunde soll ja den fertigen Link erhalten oder?

{% for delivery in order.deliveries %}
{% for trackingCode in delivery.getTrackingCodes() %}
{% set urlTemplate = delivery.getShippingMethod().getTrackingUrl() %}
{% set urlEncodedCode = trackingCode|escape(‘url’)|raw %}

{{ trackingCode }}

{% endfor %}
{% endfor %}

Das href natürlich entpsrechend dem Anbieter anpassen - die Post AT erwartet URL + # + code + #. Zumindest wird bei mir der Link dann richtig aufgebaut. 

Hast du bei den Versandkosten denn den Link auch hinterlegt? Da gibt es ein extra feld dafür.

Eigentlich braucht der Link nicht direkt in die Mail, sondern kommt dann aus den Versandkosten. Das geht ab 6.2.RC 

@Moritz Naczenski schrieb:

@DominikW schrieb:

Keine Ahnung warum, aber das encode funktioniert zumindest in 6.2RC1 für mich nicht. 

{{ urlTemplate|format(trackingCode) }} spuckt einfach die URL wieder aus, ohne den eigentlichen Trackingcode zu enthalten. Der Kunde soll ja den fertigen Link erhalten oder?

{% for delivery in order.deliveries %}
{% for trackingCode in delivery.getTrackingCodes() %}
{% set urlTemplate = delivery.getShippingMethod().getTrackingUrl() %}
{% set urlEncodedCode = trackingCode|escape(‘url’)|raw %}

{{ trackingCode }}

{% endfor %}
{% endfor %}

Das href natürlich entpsrechend dem Anbieter anpassen - die Post AT erwartet URL + # + code + #. Zumindest wird bei mir der Link dann richtig aufgebaut. 

Hast du bei den Versandkosten denn den Link auch hinterlegt? Da gibt es ein extra feld dafür.

Eigentlich braucht der Link nicht direkt in die Mail, sondern kommt dann aus den Versandkosten. Das geht ab 6.2.RC 

Den Link habe ich in den Versandoptionen im Feld für das Tracking hinterlegt - das funktioniert auch (bekomme ja über die Variable die URL raus). Aber mit deinem Sample oben wird eben nur der Link zur Sendungsverfolgung im Mail geschrieben, ohne Sendungsnummer. Daher meine Anpassung, damit funktioniert es. 

in der dev umgebung bekomme ich das, wenn ich den code von moritz eingebe:

Track your shipments using this/these link(s):

  •  

 

 

bei der Version von Dominik bekomme ich eine Sendungsnummer als Link angezeigt, kann den link aber nicht öffnen.

Und: Wenn man den Versand schon mal angestoßen, das Etikett aber storniert hat, bekommt man es trotzdem in der Mail angezeigt. Eigentlich sollte ja dann nur das gültige Etikett mit der Sendungsnummer sichtbar sein

@annaconta schrieb:

Und: Wenn man den Versand schon mal angestoßen, das Etikett aber storniert hat, bekommt man es trotzdem in der Mail angezeigt. Eigentlich sollte ja dann nur das gültige Etikett mit der Sendungsnummer sichtbar sein

Das macht ja DHL, nicht der Teil des Cores.

 

Ich schau morgen mal nach der Vorlage, die hab ich nur aus unserem Ticket kopiert, vielleicht ist da noch ein Fehler drin. 

2 Likes

@annaconta schrieb:

bei der Version von Dominik bekomme ich eine Sendungsnummer als Link angezeigt, kann den link aber nicht öffnen.

Und: Wenn man den Versand schon mal angestoßen, das Etikett aber storniert hat, bekommt man es trotzdem in der Mail angezeigt. Eigentlich sollte ja dann nur das gültige Etikett mit der Sendungsnummer sichtbar sein

Was erwartet sich DHL denn als Link? Hast du ein Beispiel dazu?

Das Code Snippet oben prüft keinen Sendungsstatus. Dazu könnte man noch eine Abfrage einbauen und stornierte ausschließen, sofern es einen Status dazu gibt.

EDIT: Die Trackingnummer selbst hat keinen eigenen Status, kann somit nicht auf “abgebrochene” gefiltert werden - zumindest nicht, wenn man das Trackingnummernfeld benutzt. Eventuell klappt das wie Moritz schreibt über das DHL Plugin selbst. 

hier ist ein beispiellink: DHL Sendungsverfolgung | DHL

Wir unterbinden das senden von E-Mails bei Bestellstatuswechsel durch folgenden Core-Hack:

/vendor/shopware/core/Checkout/Order/Api/OrderActionController.php

$this->sendMail(
$context,
$mailTemplate,
$order,
$mediaIds,
$documentIds,
$toPlace,
$fromPlace
);

auskommentieren in orderStateTransition, orderTransactionStateTransition, orderDeliveryStateTransition

 

Unter Einstellungen -> Shop -> Versand kannst du in der verwendeten Versandart den Trackinglink hinterlegen. 

Trage hier bitte https://www.dhl.de/de/privatkunden/pakete-empfangen/verfolgen.html ein und speichere. 

Im Email Template dann das Schnipsel tauschen gegen:

{% for delivery in order.deliveries %}
              {% for trackingCode in delivery.getTrackingCodes() %}
                  {% set urlTemplate = delivery.getShippingMethod().getTrackingUrl() %}
                  {% set urlEncodedCode = trackingCode|escape('url')|raw %}
      
                  
                      {{ trackingCode }}
                  
              {% endfor %}
          {% endfor %}