From 5930b70cb74b5d397c49154a384695117b083996 Mon Sep 17 00:00:00 2001 From: Jens Kuerschner Date: Mon, 6 May 2024 22:16:01 +0200 Subject: [PATCH] checkout recipe --- public/screenshots/checkout-flow.svg | 3 + public/screenshots/checkout-flow.webp | Bin 0 -> 41272 bytes .../styles-and-templates.md | 1 - src/de/recipes/dynamic-checkout.md | 62 ++++++++++++++++- src/recipes/dynamic-checkout.md | 63 +++++++++++++++++- 5 files changed, 122 insertions(+), 7 deletions(-) create mode 100644 public/screenshots/checkout-flow.svg create mode 100644 public/screenshots/checkout-flow.webp diff --git a/public/screenshots/checkout-flow.svg b/public/screenshots/checkout-flow.svg new file mode 100644 index 0000000..8397ccf --- /dev/null +++ b/public/screenshots/checkout-flow.svg @@ -0,0 +1,3 @@ + + +
Checkout
completed
Checkout...
User on Frontend
User...
Thank you page with Add to Calendar Button
Thank you page with...
Confirmation email
Confirmation email
Backend
Backend
Processing and storing data
Processing and stor...
Add to Calendar PRO
Add to Calendar PRO
Creating a new event with the given data
Creating a new even...
Event gets created with given data and id of prepared style, returning its ProKey as "id"
Event gets created with giv...
Providing id for Add to Calendar Button to Frontend
Providing id for Ad...
Defining a global style
Defining a global style
Sending email with ics file and/or Add to Calendar links
Sending email with...
Generated ics file available via https://event.caldn.net/:id/event.ics
Generated ics file available via https://event...
\ No newline at end of file diff --git a/public/screenshots/checkout-flow.webp b/public/screenshots/checkout-flow.webp new file mode 100644 index 0000000000000000000000000000000000000000..6fdfd1c2398305e702267e97717b98adaa54c521 GIT binary patch literal 41272 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 literal 0 HcmV?d00001 diff --git a/src/application-manual/styles-and-templates.md b/src/application-manual/styles-and-templates.md index 9e5e3f6..9665760 100644 --- a/src/application-manual/styles-and-templates.md +++ b/src/application-manual/styles-and-templates.md @@ -111,7 +111,6 @@ Two things to mind: You can always test your settings via the button at the very right of the screen. - ### Email When working with RSVP, there are multiple emails, your user's might receive. This can be a Double-Opt-In confirmation email or an email, containing a magic link to log into the management page, where users can adjust their responses. diff --git a/src/de/recipes/dynamic-checkout.md b/src/de/recipes/dynamic-checkout.md index 819f6c6..603d240 100644 --- a/src/de/recipes/dynamic-checkout.md +++ b/src/de/recipes/dynamic-checkout.md @@ -4,7 +4,63 @@ outline: [2,3] # Add to Calendar Buttons in einem dynamischen Checkout-Prozess -::: warning Diese Seite befindet sich aktuell noch im Aufbau! -Schau in wenigen Wochen nochmal vorbei. :) -::: +Der Verkauf von Termin-gebundenen Artikeln (bspw. Konzert-Tickets) oder einfach die Vereinbarung von Terminen über einen Buchungsprozess sind übliche Szenarien für viele Unternehmen. +In diesem Ablauf möchtest du normalerweise den jeweiligen Termin irgendwie in die Kalender der Kunden einfügen. Vielleicht per E-Mail, vielleicht indem du einen Add to Calendar Button oder eine ics-Datei auf einer Bestätigungsseite oder einem Benutzerkonto anbietest. + +**Kein Problem mit Add to Calendar PRO**! + +## 📋 Was du brauchst + +Du solltest einen Style sowie eine allgemeine Event-Gruppe vorbereiten. Letztere dient als eine Art Sammelbehälter. + +Abgesehen davon wird alles andere über die API abgewickelt - du musst dafür natürlich einen API-Key erstellen. + +## 🧱 Einrichtung + +Die Einrichtung dieses Ablaufs erfordert etwas mehr Arbeit, da du dies in deine bestehenden Backend-Abläufe integrieren musst! + +**Der generelle Ablauf visualisiert:** + +![Editor](/screenshots/checkout-flow.svg) + +
+ +**Hier kommt eine Liste der nötigen Schritte:** + +1. Erstelle einen Style und bereite alles für einen potenziellen Add to Calendar Button vor, damit dieser gut aussieht (überspringe diesen Schritt, wenn du nur mit ics-Dateien arbeiten möchtest). +2. Erstelle ein Landingpage-Template und verknüpfe es mit dem Style. Das ist wichtig, wenn du E-Mail-Links verwendest; oder wenn du einfach eine schöne Veranstaltungs-Landingpage teilen möchtest (kann auch für das Support-Team nützlich sein, wenn ein Benutzer Hilfe beim Speichern des Events benötigt). +3. Erstelle einen API-Key (auf der Seite der Organisationseinstellungen). +4. Erstelle eine Event-Gruppe (mit Kalender-Abonnement auf "Nein"), die alle zukünftigen Veranstaltungen beinhalten wird. +5. Lies die [API-Dokumentation über die Eventerstellung](/de/api/events.html#add-an-event). +6. Erstelle in deinem Backend eine Funktion, die ein Event über die Add to Calendar PRO API basierend auf den Daten, die du für den Benutzer hast, erstellt. Wir empfehlen, in diesem Fall auch den Organizer und den Attendee festzulegen (bei manchen Systemen wird das Event dadurch automatisch zum Kalender des Benutzers hinzugefügt, sobald eine E-Mail mit der ics-Datei geöffnet wird)! Die Response beinhaltet eine ID (der ProKey des Events). +7. Verwende diese ID, um die generierte ics-Datei beim Senden einer Bestätigungs-E-Mail abzurufen und an die E-Mail anzufügen. +8. Verwende diese ID, um Add to Calendar Links in dieser Bestätigungs-E-Mail zu integrieren. +9. Verwende diese ID, um einen schönen Add to Calendar Button auf der "Danke"-Seite nach dem Checkout zu rendern. + +### Schema für ics-Dateien + +``` +https://event.caldn.net/:id/event.ics +``` + +Du kannst den Namen der Datei über die Option `iCalFileName` anpassen. Passe den Namen im Schema in diesem Fall ebenfalls entsprechend an! + +### Schema für E-Mail-Links + +``` +https://go.caldn.net/:id/o/:type +``` + +Mit `type` als "apple", "google", "ical", "ms365", "outlookcom", "msteams" oder "yahoo". + + +## ❇️ Weiter gedacht + +Du fragst dich vielleicht, wie du mit Entwicklungs- oder Staging-Umgebungen umgehen kannst! + +**Einfach!** + +Erstelle eine Event-Gruppe pro Umgebung! Wenn du das Event über die API erstellst, kannst du dann leicht zwischen den Umgebungen unterscheiden. + +Du kannst die Aufteilung auch explizit in der App sehen, da alle Events ihrer Gruppe untergeordnet sind. diff --git a/src/recipes/dynamic-checkout.md b/src/recipes/dynamic-checkout.md index 2c6d431..c30c647 100644 --- a/src/recipes/dynamic-checkout.md +++ b/src/recipes/dynamic-checkout.md @@ -4,6 +4,63 @@ outline: [2,3] # Add to Calendar Buttons in a dynamic Checkout -::: warning This site is currently still under heavy construction! -Have a second look in a few weeks. :) -::: +Selling time-bound stuff or simply setting up appointments via a booking process is a very typical use case for many companies. + +Within this flow, you usually want to push this date somehow to the user's calendar. Maybe via email, maybe by offering an Add to Calendar Button or ics file at a confirmation page or a user account. + +**No problem with Add to Calendar PRO**! + +## 📋 What you need + +You should prepare a style as well as a general event group (which acts as some kind of bucket). + +Besides that, everything else will happen via the API - you need to create an API key for that case, of course. + +## 🧱 Setting it up + +The setup of this flow requires some more work as you will need to weave this into your existing backend flows! + +**Have a look at the general scheme:** + +![Editor](/screenshots/checkout-flow.svg) + +
+ +**No here comes a list of the steps you need to take:** + +1. Create a style and prepare everything for a potential Add to Calendar Button to look good (skip this if you are only up for ics files). +2. Create a landingpage template and link it to the style. This is important if you want to use email links; or if you simply want to be able to share a nice event landingpage (can be a nice thing for the support team, when a user needs help saving the event). +3. Create an API key (at the organization settings page). +4. Create an event group (with subscription set to "no"), which will hold all future events. +5. Read the [API documentation about event creation](/api/events.html#add-an-event). +6. At your backend, create a function, which creates an event via the Add to Calendar PRO API based on the data you have for the user. We recommend to also set the organizer and attendee in this case (at some systems, this adds the event automatically to the user's calendar, as soon as an email with the ics file is opened)! The response includes an id, which is the ProKey of the event. +7. Use this id to pull and add the generated ics file when sending a confirmation email. +8. Use this id to add Add to Calendar links at this confirmation email. +9. Use this id to render a nice Add to Calendar Button at the "Thank you" page after the checkout. + +### Scheme for ics files + +``` +https://event.caldn.net/:id/event.ics +``` + +You can adjust the name of the file via the `iCalFileName` option. Adjust the name in the scheme accordingly! + +### Scheme for email links + +``` +https://go.caldn.net/:id/o/:type +``` + +With `type` being "apple", "google", "ical", "ms365", "outlookcom", "msteams", or "yahoo". + + +## ❇️ How to optimize + +You might be wondering how you can deal with dev or staging environments! + +**Simple!** + +Just create an event group per environment! When creating the event via API, you can then easily differentiate between the stages. + +You can even see the split explicitely in the app as all events are children of their group, which then acts as evnironment bucket.